設定對 Amazon S3 儲存貯體的存取權 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定對 Amazon S3 儲存貯體的存取權

多個 Amazon Bedrock 功能需要存取存放在 Amazon S3 儲存貯體中的資料。若要存取此資料,您必須設定下列許可:

使用案例 許可
從 S3 儲存貯體擷取資料的許可 s3:GetObject

s3:ListBucket

將資料寫入 S3 儲存貯體的許可 s3:PutObject
將加密 S3 儲存貯體的 KMS 金鑰解密的許可 kms:解密

kms:描述金鑰

您必須將上述許可連接至哪些身分或資源,取決於下列因素:

  • Amazon Bedrock 中的多個功能會使用服務角色。如果某個功能使用服務角色,您必須設定許可,讓該服務角色 (而非使用者的 IAM 身分) 可以存取 S3 資料。如果您使用 AWS 管理主控台,某些 Amazon Bedrock 功能會自動為您建立服務角色,並將必要的身分型許可連接到服務角色。

  • Amazon Bedrock 中的某些功能允許身分存取不同帳戶中的 S3 儲存貯體。如果需要從不同的帳戶存取 S3 資料,儲存貯體擁有者必須在連接到 S3 儲存貯體的 S3 儲存貯體政策中,包含上述資源型許可

以下說明如何判斷何處需要連接必要許可才能存取 S3 資料:

  • IAM 身分許可

    • 如果您可以在主控台中自動建立服務角色,則系統會為該服務角色設定許可,因此您不需要自行設定。

    • 如果您偏好使用自訂服務角色,或者需要存取權的身分不是服務角色,請導覽至 將許可連接至 IAM 身分,以允許其存取 Amazon S3 儲存貯體,了解如何建立具有適當許可的以身分為基礎政策。

  • 資源型許可

    • 如果身分需要存取相同帳戶中的 S3 資料,您不需要將 S3 儲存貯體政策連接到包含資料的儲存貯體。

    • 如果身分需要存取不同帳戶中的 S3 資料,請導覽至 將儲存貯體政策連接至 Amazon S3 儲存貯體以供另一個帳戶存取 以了解如何建立具有適當許可的 S3 儲存貯體政策。

      重要

      在 中自動建立服務角色會將適當的身分型許可AWS 管理主控台連接到角色,但如果需要存取該角色的身分位於不同的 中,您仍然必須設定 S3 儲存貯體政策AWS 帳戶。

如需詳細資訊,請參閱下列連結:

繼續進行與使用案例相關的主題:

將許可連接至 IAM 身分,以允許其存取 Amazon S3 儲存貯體

本主題為政策提供一個範本以連接到 IAM 身分。此政策包含下列陳述式,以定義可將對 S3 儲存貯體的存取權授予 IAM 身分的許可:

  1. 從 S3 儲存貯體擷取資料的許可。此陳述式也包含一個條件,此條件使用 s3:prefix 條件索引鍵來限制存取儲存貯體中的特定資料夾。如需此條件的詳細資訊,請參閱範例 2:取得儲存貯體中包含特定前綴的物件清單中的使用者政策一節。

  2. (如果您需要將資料寫入 S3 位置) 將資料寫入 S3 儲存貯體的許可。此陳述式也包含使用 條件金鑰來限制存取從特定 傳送之請求aws:ResourceAccount的條件AWS 帳戶。

  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 身分)。若要了解如何將許可連接到 IAM 身分,請參閱新增和移除 IAM 身分許可

將儲存貯體政策連接至 Amazon S3 儲存貯體以供另一個帳戶存取

本主題提供可連接至 S3 儲存貯體的資源型政策範本,以允許 IAM 身分存取儲存貯體中的資料。此政策包含下列陳述式,定義讓身分可存取儲存貯體的許可:

  1. 從 S3 儲存貯體擷取資料的許可。

  2. (如果您需要將資料寫入 S3 位置) 將資料寫入 S3 儲存貯體的許可。

  3. (如果 S3 儲存貯體是使用 KMS 金鑰加密的) 將加密 S3 儲存貯體的 KMS 金鑰進行描述與解密的許可。

    注意

    若已對 S3 儲存貯體啟用版本控制,使用此功能上傳的每個物件版本都會有自己的加密金鑰。您會負責追蹤針對哪個物件版本使用了哪個加密金鑰。

許可類似於 將許可連接至 IAM 身分,以允許其存取 Amazon S3 儲存貯體 中所述的以身分為基礎許可。不過,每個陳述式也要求您在 Principal 欄位中指定要授予資源許可的身分。在 Principal 欄位中指定身分 (在 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 主控台新增儲存貯體政策

(進階安全性選項) 在陳述式中包含條件,以獲得更精細的存取權

若要更有效地控制可存取資源的身分,您可以在政策陳述式中包含條件。本主題中的政策提供使用下列條件索引鍵的範例:

  • s3:prefix – S3 條件索引鍵,會限制存取 S3 儲存貯體中的特定資料夾。如需此條件索引鍵的詳細資訊,請參閱範例 2:取得儲存貯體中包含特定前綴的物件清單中的使用者政策一節。

  • aws:ResourceAccount – 全域條件金鑰,限制存取來自特定 的請求AWS 帳戶。

下列政策會限制對 amzn-s3-demo-bucket S3 儲存貯體中 my-folder 資料夾的讀取存取權,並將 amzn-s3-demo-destination-bucket S3 儲存貯體的寫入存取權限制為 ID AWS 帳戶為 111122223333 的 請求:

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" } } } ] }

若要進一步了解條件和條件索引鍵,請參閱下列連結: