

# S3 Vectors での ID およびアクセス管理
<a name="s3-vectors-access-management"></a>

S3 Vectors でのアクセス管理は、AWS セキュリティのベストプラクティスに従って、複数のコントロールレイヤーを提供し、承認されたユーザーとアプリケーションのみがベクトルデータにアクセスできるようにします。このサービスは IAM と統合され、アイデンティティベースおよびリソースベースの両方のポリシーをサポートしているため、組織全体のアクセス許可を柔軟に構築し、管理できます。

## リクエストの認証と承認
<a name="s3-vectors-authenticating-authorizing"></a>

S3 Vectors は、AWS 標準の認証と認可のメカニズムを使用して、ベクトルバケットとコンテンツへのアクセスを保護します。S3 Vectors へのすべてのリクエストは有効な AWS 認証情報を使用して認証する必要があり、サービスはアイデンティティベースのポリシー、リソースベースのポリシー、および該当するサービスコントロールポリシーの組み合わせに基づいてアクセス許可を評価します。

認証プロセスは、クライアントが 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:123,456,789,012:bucket/bucket-name | ベクトルバケットを表し、バケットの作成、削除、設定などのバケットレベルの操作に使用されます。 | 
| 索引 | arn:aws:s3vectors:region:123,456,789,012: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 | アカウントとリージョン内のすべてのベクトルバケットを一覧表示するアクセス許可を付与します | リスト |  | 
| 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 | ベクトルバケット内のすべてのインデックスを一覧表示するアクセス許可を付与します | リスト |  | 
| 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 | ベクトルバケットからリソースベースのポリシーを削除するアクセス許可を付与します | 権限の管理 |  | 
| 索引 | [CreateIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_CreateIndex.html) | s3vectors:CreateIndex | 指定されたディメンションとメタデータの設定で新しいベクトルインデックスを作成するアクセス許可を付与します | 書き込み |  | 
| 索引 | [GetIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetIndex.html) | s3vectors:GetIndex | ベクトルインデックスの属性と設定を取得するアクセス許可を付与します | 読み取り |  | 
| 索引 | [DeleteIndex](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_DeleteIndex.html) | s3vectors:DeleteIndex | ベクトルインデックスとすべてのコンテンツを削除するアクセス許可を付与します | 書き込み |  | 
| 索引 | [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` の両方で**、メタデータの条件を使用して結果をフィルタリングし、関連付けられているデータ、メタデータ、およびクエリベクトルから計算された距離に合致するベクトルキーを取得できます。 | 読み取り |  | 
| 索引 | [PutVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_PutVectors.html) | s3vectors:PutVectors | インデックス内のベクトルを追加または更新するアクセス許可を付与します | 書き込み |  | 
| 索引 | [GetVectors](https://docs.aws.amazon.com/AmazonS3/latest/API/API_S3VectorBuckets_GetVectors.html) | s3vectors:GetVectors | ベクトルキーによって特定のベクトルとそのメタデータを取得するアクセス許可を付与します | 読み取り |  | 
| 索引 | [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 に設定することにより、関連付けられているデータとメタデータに合致するベクトルキーを取得できます。 | 読み取り |  | 
| 索引 | [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 | String | 
| 2 | s3vectors:kmsKeyArn | ベクトルバケットの暗号化に使用するキーの AWS AWS KMS キー ARN でアクセスをフィルタリングします | ARN | 

# S3 Vectors アイデンティティベースのポリシーの例
<a name="s3-vectors-iam-policies"></a>

IAM アイデンティティベースのポリシーは、IAM ユーザー、グループ、またはロールにアタッチして、S3 Vectors リソースで実行できるアクションを定義する JSON ドキュメントです。これらのポリシーは、リクエストを行う ID のコンテキストで評価され、AWS 環境全体のアクセス許可を一元的に管理する方法を提供します。アイデンティティベースのポリシーは、アクセス要件が変化するにつれて簡単に変更できるアクセス許可を持つユーザーに関する明確な監査証跡を提供します。

S3 Vectors のアイデンティティベースのポリシーを設計するときは、ベクトルデータを操作するさまざまなタイプのユーザーとアプリケーションを検討してください。一般的なパターンには、ベクトルをクエリする必要があるデータサイエンティスト、ベクトルデータのロードと管理が必要なデータエンジニア、バケット設定を完全に制御する必要がある管理者、特定のベクトルインデックスの読み取りまたは書き込みアクセスを必要とするアプリケーションが含まれます。

## ポリシーの例
<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 ポリシー形式を使用して、バケットとそのコンテンツへのアクセスを制御します。

ユーザー、グループ、またはロールにアタッチされているアイデンティティベースのポリシーとは異なり、リソースベースのポリシーはリソース自体 (ベクトルバケット) にアタッチされ、他の AWS アカウントのプリンシパルにアクセス許可を付与できます。これにより、ベクトルデータを組織の境界を越えて共有したり、アクセスする特定のリソースに基づいてきめ細かなアクセスコントロールを実装したりする必要があるシナリオに最適です。

リソースベースのポリシーはアイデンティティベースのポリシーと組み合わせて評価され、有効なアクセス許可は該当するすべてのポリシーの結合によって決定されます。つまり、プリンシパルがアクションを実行するには、リソースベースのポリシーが明示的にアクセス許可を付与しない限り、(ユーザー/ロールにアタッチされた) アイデンティティベースのポリシーと (バケットにアタッチされた) リソースベースのポリシーの両方からのアクセス許可が必要です。

## 例 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"
            ]
        }
    ]
}
```