

# S3 Vectors의 Identity and Access Management
<a name="s3-vectors-access-management"></a>

S3 Vectors의 액세스 관리는 AWS 보안 모범 사례를 따르며, 승인된 사용자와 애플리케이션만 벡터 데이터에 액세스할 수 있도록 여러 계층의 제어를 제공합니다. 이 서비스는 IAM과 통합되며 ID 기반 정책과 리소스 기반 정책을 모두 지원하므로 조직 전체에서 권한을 구성하고 관리하는 방법에 유연성을 제공합니다.

## 요청 인증 및 권한 부여
<a name="s3-vectors-authenticating-authorizing"></a>

S3 Vectors는 AWS 표준 인증 및 권한 부여 메커니즘을 사용하여 벡터 버킷 및 해당 콘텐츠에 대한 액세스를 보호합니다. S3 Vectors에 대한 모든 요청은 유효한 AWS 자격 증명을 사용하여 인증되어야 하며 서비스는 ID 기반 정책, 리소스 기반 정책 및 해당 서비스 제어 정책의 조합을 기반으로 권한을 평가합니다.

인증 프로세스는 클라이언트가 AWS 자격 증명(액세스 키, AWS STS의 임시 자격 증명 또는 IAM 역할)을 사용하여 S3 Vectors에 요청할 때 시작됩니다. 서비스는 이러한 자격 증명을 검증한 다음 요청된 작업 및 대상 리소스를 기준으로 인증된 ID와 연결된 권한을 평가합니다. 이 평가 프로세스는 여러 정책 유형을 고려하고 최소 권한 원칙을 적용하여 요청을 허용할지 또는 거부할지를 결정합니다.

S3 Vectors의 권한 부여는 여러 수준의 세부 수준에서 작동합니다. 벡터 버킷 수준, 개별 벡터 인덱스 수준 또는 인덱스 내의 특정 작업에서도 액세스를 제어할 수 있습니다. 이 계층적 권한 모델을 사용하면 조직 구조 및 데이터 거버넌스 요구 사항에 맞는 정교한 액세스 제어 체계를 구현할 수 있습니다.

## 벡터 버킷에 대해 정의된 리소스 유형
<a name="s3-vectors-resource-types"></a>

S3 Vectors는 IAM 정책 및 리소스 기반 정책에서 참조할 수 있는 특정 리소스 유형을 정의합니다. 이러한 리소스 유형을 이해하는 것은 올바른 사용자 및 애플리케이션에 적절한 수준의 액세스를 제공하는 효과적인 액세스 제어 정책을 만드는 데 필수적입니다.

다음 테이블에서는 S3 Vectors에서 사용할 수 있는 리소스 유형을 설명합니다.


**S3 Vectors에서 사용 가능한 리소스 유형**  

| 리소스 유형 | ARN 형식 | 설명 | 
| --- | --- | --- | 
| VectorBucket | arn:aws:s3vectors:region:123456789012:bucket/bucket-name | 벡터 버킷을 나타내며 버킷 만들기, 삭제 또는 구성과 같은 버킷 수준 작업에 사용됩니다. | 
| Index | arn:aws:s3vectors:region:123456789012:bucket/bucket-name/index/index-name | 버킷 내의 벡터 인덱스를 나타내며 벡터 쿼리 또는 인덱스 콘텐츠 관리와 같은 인덱스별 작업에 사용됩니다. | 

## 벡터 버킷에 대한 정책 작업
<a name="s3-vectors-policy-actions"></a>

S3 Vectors는 벡터 버킷 및 인덱스에서 수행할 수 있는 다양한 작업에 해당하는 포괄적인 정책 작업 세트를 제공합니다. 이러한 작업은 특정 작업을 수행할 수 있는 사용자를 세밀하게 제어하도록 설계되어 최소 권한 원칙을 효과적으로 구현할 수 있습니다.

다음 표에는 S3 Vectors 리소스에 사용할 수 있는 모든 정책 작업이 나열되어 있습니다.


**S3 Vectors 리소스에 대한 정책 작업**  

| 리소스 유형 | API 작업 | 정책 작업 | 정책 작업 설명 | 액세스 레벨 | 조건 키 | 
| --- | --- | --- | --- | --- | --- | 
| 계정 | [ListVectorBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectorBuckets.html) | s3vectors:ListVectorBuckets | 계정 및 리전의 모든 벡터 버킷을 나열할 수 있는 권한을 부여합니다. | List |  | 
| VectorBucket | [CreateVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateVectorBucket.html) | s3vectors:CreateVectorBucket | 지정된 구성으로 새 벡터 버킷을 만들 수 있는 권한을 부여합니다. | 쓰기 | s3vectors:sseType, s3vectors:kmsKeyArn | 
| VectorBucket | [GetVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectorBucket.html) | s3vectors:GetVectorBucket | 벡터 버킷 속성 및 구성을 검색할 수 있는 권한을 부여합니다. | 읽기 |  | 
| VectorBucket | [DeleteVectorBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectorBucket.html) | s3vectors:DeleteVectorBucket | 빈 벡터 버킷을 삭제할 수 있는 권한을 부여합니다. | 쓰기 |  | 
| VectorBucket | [ListIndexes](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListIndexes.html) | s3vectors:ListIndexes | 벡터 버킷 내의 모든 인덱스를 나열할 수 있는 권한을 부여합니다. | List |  | 
| VectorBucket | [PutVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectorBucketPolicy.html) | s3vectors:PutVectorBucketPolicy | 벡터 버킷에 리소스 기반 정책을 적용하거나 업데이트할 수 있는 권한을 부여합니다. | 권한 관리 |  | 
| VectorBucket | [GetVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectorBucketPolicy.html) | s3vectors:GetVectorBucketPolicy | 벡터 버킷에 연결된 리소스 기반 정책을 검색할 수 있는 권한을 부여합니다. | 읽기 |  | 
| VectorBucket | [DeleteVectorBucketPolicy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectorBucketPolicy.html) | s3vectors:DeleteVectorBucketPolicy | 벡터 버킷에서 리소스 기반 정책을 제거할 수 있는 권한을 부여합니다. | 권한 관리 |  | 
| Index | [CreateIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateIndex.html) | s3vectors:CreateIndex | 지정된 차원 및 메타데이터 구성으로 새 벡터 인덱스를 만들 수 있는 권한을 부여합니다. | 쓰기 |  | 
| Index | [GetIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetIndex.html) | s3vectors:GetIndex | 벡터 인덱스 속성 및 구성을 검색할 수 있는 권한을 부여합니다. | 읽기 |  | 
| Index | [DeleteIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteIndex.html) | s3vectors:DeleteIndex | 벡터 인덱스와 모든 해당 콘텐츠를 삭제할 수 있는 권한을 부여합니다. | 쓰기 |  | 
| Index | [QueryVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_QueryVectors.html) | (필수) s3vectors:QueryVectors | 인덱스의 벡터를 기준으로 유사성 쿼리를 수행할 수 있는 권한을 부여합니다.  **`s3vectors:QueryVectors`만** 사용하면 쿼리 벡터에서 가장 가까운 근사 최근접 벡터 키와 계산된 거리를 검색할 수 있습니다. 이 권한은 메타데이터 필터를 설정하지 않고 메타데이터를 요청하지 않는 경우에만 충분합니다(`returnMetadata` 파라미터를 false로 설정하거나 지정하지 않은 상태로 유지). | 읽기 |  | 
|  |  | (조건부 필수): s3vectors:GetVectors | 메타데이터 필터를 설정하고 요청에서 `returnMetadata`를 true로 설정하는 경우 필수입니다.  **`s3vectors:QueryVectors` 및 `s3vectors:GetVectors`를 모두** 사용하면 메타데이터 기준을 사용하여 결과를 필터링하고 관련 데이터, 메타데이터 및 쿼리 벡터에서 계산된 거리와 함께 벡터 키를 검색할 수 있습니다. | 읽기 |  | 
| Index | [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) | s3vectors:PutVectors | 인덱스에서 벡터를 추가하거나 업데이트할 수 있는 권한을 부여합니다. | 쓰기 |  | 
| Index | [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html) | s3vectors:GetVectors | 벡터 키로 특정 벡터와 해당 메타데이터를 검색할 수 있는 권한을 부여합니다. | 읽기 |  | 
| Index | [ListVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_ListVectors.html) | (필수) s3vectors:ListVectors | 인덱스의 벡터 키를 나열할 수 있는 권한을 부여합니다. **`s3vectors:ListVectors`만** 사용하면 `returnData` 및 `returnMetadata` 파라미터가 모두 false이거나 지정되지 않은 경우 벡터 키를 나열할 수 있습니다. | 읽기 |  | 
|  |  | (조건부 필수): s3vectors:GetVectors | 요청에서 `returnData` 또는 `returnMetadata` 파라미터를 true로 설정하는 경우 필요합니다.  **`s3vectors:ListVectors` 및 `s3vectors:GetVectors`를 모두** 사용하면 `returnData` 및 `returnMetadata`를 true로 설정하여 벡터 키와 관련 데이터 및 메타데이터를 검색할 수 있습니다. | 읽기 |  | 
| Index | [DeleteVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteVectors.html) | s3vectors:DeleteVectors | 인덱스에서 특정 벡터를 삭제할 수 있는 권한을 부여합니다. | 쓰기 |  | 

이러한 작업은 다양한 방식으로 결합하여 특정 액세스 요구 사항에 맞는 정책을 만들 수 있습니다. 예를 들어 `s3vectors:GetVectorBucket`, `s3vectors:ListIndexes`, `s3vectors:QueryVectors` 및 `s3vectors:GetVectors` 작업을 포함하는 읽기 전용 정책 또는 쿼리 및 벡터 검색 권한을 포함하지만 인덱스 만들기 또는 삭제와 같은 관리 작업은 제외하는 정책을 만들 수 있습니다.

## 벡터 버킷에 사용되는 조건 키
<a name="s3-vectors-condition-keys"></a>


**벡터 버킷에 사용되는 조건 키**  

|  | 조건 키 | 설명 | 형식 | 
| --- | --- | --- | --- | 
| 1 | s3vectors:sseType | 서버 측 암호화 유형을 기준으로 액세스를 필터링합니다. 유효한 값: AES256 \$1 aws:kms | 문자열 | 
| 2 | s3vectors:kmsKeyArn | 벡터 버킷을 암호화하는 데 사용되는 키의 AWS AWS KMS 키 ARN을 기준으로 액세스를 필터링합니다. | ARN | 

# S3 Vectors ID 기반 정책 예제
<a name="s3-vectors-iam-policies"></a>

IAM ID 기반 정책은 IAM 사용자, 그룹 또는 역할에 연결하여 S3 Vectors 리소스에서 수행할 수 있는 작업을 정의하는 JSON 문서입니다. 이러한 정책은 요청하는 ID의 컨텍스트에서 평가되며 AWS 환경 전체에서 권한을 관리하는 중앙 집중식 방법을 제공합니다. ID 기반 정책은 누가 어떤 권한을 갖고 있는지에 대한 명확한 감사 추적을 제공하며, 액세스 요구 사항이 변화함에 따라 쉽게 수정할 수 있습니다.

S3 Vectors에 대한 ID 기반 정책을 설계할 때는 벡터 데이터와 상호 작용할 다양한 유형의 사용자 및 애플리케이션을 고려하세요. 일반적인 패턴에는 벡터를 쿼리해야 하는 데이터 과학자, 벡터 데이터를 로드하고 관리해야 하는 데이터 엔지니어, 버킷 구성을 완전히 제어해야 하는 관리자, 특정 벡터 인덱스에 대한 특정 읽기 또는 쓰기 액세스가 필요한 애플리케이션이 포함됩니다.

## 정책 예제
<a name="s3-vectors-iam-policies-examples"></a>

### 관리 액세스 정책
<a name="s3-vectors-iam-policies-admin"></a>

이 정책은 플랫폼 관리자 또는 DevOps 팀에 적합한 S3 Vectors 리소스에 대한 전체 관리 액세스를 제공합니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAdministrativeAccess",
            "Effect": "Allow",
            "Action": [
                "s3vectors:CreateVectorBucket",
                "s3vectors:PutVectorBucketPolicy",
                "s3vectors:DeleteVectorBucket",
                "s3vectors:DeleteVectorBucketPolicy",
                "s3vectors:GetVectorBucket",
                "s3vectors:GetVectorBucketPolicy",
                "s3vectors:ListVectorBuckets",
                "s3vectors:CreateIndex",
                "s3vectors:DeleteIndex",
                "s3vectors:GetIndex",
                "s3vectors:ListIndexes",
                "s3vectors:DeleteVectors",
                "s3vectors:GetVectors",
                "s3vectors:ListVectors",
                "s3vectors:PutVectors",
                "s3vectors:QueryVectors"
            ],
            "Resource": "*"
        }
    ]
}
```

### 애플리케이션별 액세스 정책
<a name="s3-vectors-iam-policies-app"></a>

이 정책은 지정된 벡터 인덱스에서 특정 작업을 수행해야 하는 애플리케이션을 위해 설계되었습니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowApplicationVectorAccess",
            "Effect": "Allow",
            "Action": [
                "s3vectors:QueryVectors",
                "s3vectors:GetVectors",
                "s3vectors:PutVectors",
                "s3vectors:ListVectors"
            ],
            "Resource": [
                "arn:aws:s3vectors:aws-region:123456789012:bucket/amzn-s3-demo-vector-bucket/index/product-recommendations",
                "arn:aws:s3vectors:aws-region:123456789012:bucket/amzn-s3-demo-vector-bucket/index/content-similarity"
            ]
        },
        {
            "Sid": "AllowGetIndex",
            "Effect": "Allow",
            "Action": "s3vectors:GetIndex",
            "Resource": "arn:aws:s3vectors:aws-region:123456789012:bucket/amzn-s3-demo-vector-bucket/index/*"
        },
        {
            "Sid": "AllowIndexInspection",
            "Effect": "Allow",
            "Action": "s3vectors:ListIndexes",
            "Resource": "arn:aws:s3vectors:aws-region:123456789012:bucket/amzn-s3-demo-vector-bucket"
        }  
    ]
}
```

# S3 Vectors 리소스 기반 정책 예시
<a name="s3-vectors-resource-based-policies"></a>

리소스 기반 정책은 리소스에 연결됩니다. 벡터 버킷에 대한 리소스 기반 정책을 만들 수 있습니다. S3 Vectors에 대한 리소스 기반 정책은 벡터 버킷에 직접 연결하는 JSON의 표준 AWS 정책 형식을 사용하여 버킷 및 해당 콘텐츠에 대한 액세스를 제어합니다.

사용자, 그룹 또는 역할에 연결된 ID 기반 정책과 달리 리소스 기반 정책은 리소스 자체(벡터 버킷)에 연결되며 다른 AWS 계정의 위탁자에게 권한을 부여할 수 있습니다. 따라서 조직 경계를 넘어 벡터 데이터를 공유하거나 액세스 중인 특정 리소스를 기반으로 세분화된 액세스 제어를 구현해야 하는 시나리오에 적합합니다.

리소스 기반 정책은 ID 기반 정책과 함께 평가되며 유효 권한은 모든 해당 정책의 조합에 의해 결정됩니다. 즉, 리소스 기반 정책이 명시적으로 권한을 부여하지 않는 한 작업을 수행하려면 위탁자에게 ID 기반 정책(사용자/역할에 연결됨)과 리소스 기반 정책(버킷에 연결됨) 모두의 권한이 필요합니다.

## 예제 1: 교차 계정 액세스 정책
<a name="s3-vectors-resource-based-policies-example1"></a>

이 정책은 다른 AWS 계정의 사용자에게 특정 권한을 부여하는 방법을 보여줍니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CrossAccountBucketAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam:123456789012:role/Admin"
            },
            "Action": [
                "s3vectors:CreateIndex",
                "s3vectors:ListIndexes",
                "s3vectors:QueryVectors",
                "s3vectors:PutVectors",
                "s3vectors:DeleteIndex"
            ],
            "Resource": [
                "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket/*",
                "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket"
            ]
        }
    ]
}
```

## 예제 2: 벡터 인덱스 수준 작업 거부
<a name="s3-vectors-resource-based-policies-example2"></a>

이 정책은 IAM 역할에 대한 특정 벡터 인덱스 수준 작업을 거부하는 방법을 보여줍니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyIndexLevelActions",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam:123456789012:role/External-Role-Name"
            },
            "Action": [
                "s3vectors:QueryVectors",
                "s3vectors:PutVectors",
                "s3vectors:DeleteIndex",
                "s3vectors:GetVectors",
                "s3vectors:GetIndex",
                "s3vectors:DeleteVectors",
                "s3vectors:CreateIndex",
                "s3vectors:ListVectors"
            ],
            "Resource": "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket/*"
        }
    ]
}
```

## 예제 3: 벡터 인덱스 및 버킷 수준 모두에서 수정 작업 거부
<a name="s3-vectors-resource-based-policies-example3"></a>

이 정책은 여러 리소스를 지정하여 벡터 인덱스 및 버킷 수준 작업 모두에 대한 수정 요청을 거부하는 방법을 보여줍니다.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyModificationActionsAtBucketandIndexLevels",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam:123456789012:role/External-Role-Name"
            },
            "Action": [
                "s3vectors:CreateVectorBucket",
                "s3vectors:DeleteVectorBucket",
                "s3vectors:PutVectorBucketPolicy",
                "s3vectors:DeleteVectorBucketPolicy",                
                "s3vectors:CreateIndex",
                "s3vectors:DeleteIndex",
                "s3vectors:PutVectors",
                "s3vectors:DeleteVectors"
            ],
            "Resource": [
                "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket/*",
                "arn:aws:s3vectors:aws-region:111122223333:bucket/amzn-s3-demo-vector-bucket"
            ]
        }
    ]
}
```