Amazon S3 バケットへのアクセスを設定する - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 バケットへのアクセスを設定する

複数の Amazon Bedrock 機能を使用するには、Amazon S3 バケットに保存されているデータにアクセスする必要があります。このデータにアクセスするには、次のアクセス許可を設定する必要があります。

ユースケース 権限
S3 バケットからデータを取得するためのアクセス許可 s3:GetObject

s3:ListBucket

S3 バケットにデータを書き込むためのアクセス許可 s3:PutObject
S3 バケットを暗号化した KMS キーを復号するためのアクセス許可 kms:Decrypt

kms:DescribeKey

上記のアクセス許可をアタッチする必要がある ID またはリソースは、次の要因によって異なります。

  • Amazon Bedrock の複数の機能で、サービスロールを使用します。機能でサービスロールを使用する場合は、ユーザーの IAM ID ではなくサービスロールが S3 データにアクセスできるようにアクセス許可を設定する必要があります。一部の Amazon Bedrock 機能では、AWS マネジメントコンソール を使用している場合、自動的にサービスロールを作成し、必要な ID ベースのアクセス許可をサービスロールにアタッチします。

  • Amazon Bedrock の一部の機能では、ID が別のアカウントの S3 バケットにアクセスできるようになります。別のアカウントから S3 データにアクセスする必要がある場合、バケット所有者は、S3 バケットにアタッチされた S3 バケットポリシーに上記のリソースベースのアクセス許可を含める必要があります。

以下で、S3 データにアクセスするために必要なアクセス許可をアタッチする必要がある場所を特定する方法について説明します。

  • IAM アイデンティティのアクセス許可

    • コンソールでサービスロールを自動作成できる場合、アクセス許可がサービスロール向けに設定されるため、自分で設定する必要はありません。

    • カスタムサービスロールを使用する場合、またはアクセスを必要とする ID がサービスロールでない場合は、IAM ID にアクセス許可をアタッチして、Amazon S3 バケットへのアクセスを許可する に移動して、適切なアクセス許可を持つ ID ベースのポリシーを作成する方法を確認してください。

  • リソースベースのアイデンティティアクセス許可

    • ID が同じアカウントの S3 データにアクセスする必要がある場合は、データを含むバケットに S3 バケットポリシーをアタッチする必要はありません。

    • ID が別のアカウントの S3 データにアクセスする必要がある場合は、バケットポリシーを Amazon S3 バケットにアタッチして、別のアカウントにバケットポリシーへのアクセスを許可する に移動して、適切なアクセス許可を持つ S3 バケットポリシーを作成する方法を確認してください。

      重要

      でサービスロールを自動的に作成すると、適切な ID ベースのアクセス許可がロールにAWS マネジメントコンソールアタッチされますが、アクセスを必要とする ID が別の にある場合は、S3 バケットポリシーを設定する必要がありますAWS アカウント。

詳細については、以下のリンクを参照してください。

ユースケースに関連するトピックに進みます。

IAM ID にアクセス許可をアタッチして、Amazon S3 バケットへのアクセスを許可する

このトピックでは、IAM ID にアタッチするポリシーのテンプレートについて説明します。このポリシーには、IAM ID に S3 バケットへのアクセスを許可するアクセス許可を定義する以下のステートメントが含まれています。

  1. S3 バケットからデータを取得するためのアクセス許可。このステートメントには、s3:prefix 条件キーを使用してバケット内の特定のフォルダへのアクセスを制限する条件も含まれています。この条件の詳細については、「例 2: 特定のプレフィックスを持つバケット内のオブジェクト一覧の取得」の「ユーザーポリシー」セクションを参照してください。

  2. (S3 の場所にデータを書き込む必要がある場合) S3 バケットにデータを書き込むためのアクセス許可。このステートメントには、 条件キーを使用して、特定の から送信されるリクエストへのアクセスを制限するaws:ResourceAccount条件も含まれていますAWS アカウント。 https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount

  3. (S3 バケットが KMS キーで暗号化されている場合) S3 バケットを暗号化した KMS キーを記述および復号するためのアクセス許可。

    注記

    S3 バケットのバージョニングが有効になっている場合、この機能を使用してアップロードする各オブジェクトバージョンに、独自の暗号化キーを使用できます。どのオブジェクトバージョンにどの暗号化キーを使用したかは、お客様が管理してください。

以下のポリシーのステートメント、リソース、および条件を追加、変更、削除し、必要に応じて ${values} を置き換えます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ReadS3Bucket", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${S3Bucket}", "arn:aws:s3:::${S3Bucket}/*" ] }, { "Sid": "WriteToS3Bucket", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${S3Bucket}", "arn:aws:s3:::${S3Bucket}/*" ] }, { "Sid": "DecryptKMSKey", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/${KMSKeyId}" } ] }

ポリシーをユースケースに変更した後、それを S3 バケットへのアクセスを必要とするサービスロール (または IAM ID) にアタッチします。IAM ID にアクセス許可をアタッチする方法については、「IAM ID アクセス許可の追加および削除」を参照してください。

バケットポリシーを Amazon S3 バケットにアタッチして、別のアカウントにバケットポリシーへのアクセスを許可する

このトピックでは、リソースベースのポリシーを S3 バケットにアタッチして、IAM ID がバケット内のデータにアクセスできるようにするテンプレートについて説明します。このポリシーには、ID がバケットにアクセスするためのアクセス許可を定義する以下のステートメントが含まれています。

  1. S3 バケットからデータを取得するためのアクセス許可。

  2. (S3 の場所にデータを書き込む必要がある場合) S3 バケットにデータを書き込むためのアクセス許可。

  3. (S3 バケットが KMS キーで暗号化されている場合) S3 バケットを暗号化した KMS キーを記述および復号するためのアクセス許可。

    注記

    S3 バケットのバージョニングが有効になっている場合、この機能を使用してアップロードする各オブジェクトバージョンに、独自の暗号化キーを使用できます。どのオブジェクトバージョンにどの暗号化キーを使用したかは、お客様が管理してください。

アクセス許可は、「IAM ID にアクセス許可をアタッチして、Amazon S3 バケットへのアクセスを許可する」で説明されている ID ベースのアクセス許可と同様です。ただし、各ステートメントでは、Principal フィールドのリソースにアクセス許可を付与する ID も指定する必要があります。Principal フィールドに ID (Amazon Bedrock のほとんどの機能で、これはサービスロールです) を指定します。以下のポリシーのステートメント、リソース、および条件を追加、変更、削除し、必要に応じて ${values} を置き換えます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ReadS3Bucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ServiceRole" }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${S3Bucket}", "arn:aws:s3:::${S3Bucket}/*" ] }, { "Sid": "WriteToS3Bucket", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ServiceRole" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::${S3Bucket}", "arn:aws:s3:::${S3Bucket}/*" ] }, { "Sid": "DecryptKMSKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ServiceRole" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012:key/${KMSKeyId}" } ] }

ポリシーをユースケースに変更した後、それを S3 バケットにアタッチします。S3 バケットにポリシーをアタッチする方法については、「Amazon S3 コンソールを使用したバケットポリシーの追加」を参照してください。

(高度なセキュリティオプション) よりきめ細かなアクセスのためにステートメントに条件を含める

リソースにアクセスできる ID をより詳細に制御するために、ポリシーステートメントに条件を含めることができます。このトピックのポリシーでは、以下の条件キーを使用する例を示します。

次のポリシーは、amzn-s3-demo-bucket S3 S3 バケットの my-folder フォルダへの読み取りアクセスを制限し、amzn-s3-demo-destination-bucket S3 バケットの書き込みアクセスを ID 111122223333 AWS アカウントの からのリクエストに制限します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ReadS3Bucket", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Condition" : { "StringEquals" : { "s3:prefix": "my-folder" } } }, { "Sid": "WriteToS3Bucket", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket", "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "111122223333" } } } ] }

条件と条件キーの詳細については、以下のリンクを参照してください。