

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

# 設定對 Amazon S3 儲存貯體的存取權
<a name="s3-bucket-access"></a>

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


****  

| 使用案例 | 許可 | 
| --- | --- | 
| 從 S3 儲存貯體擷取資料的許可 | s3:GetObjects3:ListBucket | 
| 將資料寫入 S3 儲存貯體的許可 | s3:PutObject | 
| 將加密 S3 儲存貯體的 KMS 金鑰解密的許可 | kms:解密kms:描述金鑰<br />kms:GenerateDataKey （寫入操作至具有預設 SSE-KMS 加密的儲存貯體時需要） | 

您必須將上述許可連接至哪些身分或資源，取決於下列因素：
+ Amazon Bedrock 中的多個功能會使用[服務角色](security-iam-sr.md)。如果某個功能使用服務角色，您必須設定許可，讓該服務角色 (而非使用者的 IAM 身分) 可以存取 S3 資料。如果您使用 AWS 管理主控台，某些 Amazon Bedrock 功能會自動為您建立服務角色，並將必要的[身分型許可](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies.html#policies_id-based)連接到服務角色。
+ Amazon Bedrock 中的某些功能允許身分存取不同帳戶中的 S3 儲存貯體。如果需要從不同的帳戶存取 S3 資料，儲存貯體擁有者必須在連接到 S3 儲存貯體的 [S3 儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)中，包含上述[資源型許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based)。

以下說明如何判斷何處需要連接必要許可才能存取 S3 資料：
+ IAM 身分許可
  + 如果您可以在主控台中自動建立服務角色，則系統會為該服務角色設定許可，因此您不需要自行設定。
  + 如果您偏好使用自訂服務角色，或者需要存取權的身分不是服務角色，請導覽至 [將許可連接至 IAM 身分，以允許其存取 Amazon S3 儲存貯體](#s3-bucket-access-identity)，了解如何建立具有適當許可的以身分為基礎政策。
+ 資源型許可
  + 如果身分需要存取相同帳戶中的 S3 資料，您不需要將 S3 儲存貯體政策連接到包含資料的儲存貯體。
  + 如果身分需要存取不同帳戶中的 S3 資料，請導覽至 [將儲存貯體政策連接至 Amazon S3 儲存貯體以供另一個帳戶存取](#s3-bucket-access-cross-account) 以了解如何建立具有適當許可的 S3 儲存貯體政策。
**重要**  
在 中自動建立服務角色會將適當的身分型許可 AWS 管理主控台 連接到角色，但如果需要存取該角色的身分位於不同的 中，您仍然必須設定 S3 儲存貯體政策 AWS 帳戶。

如需詳細資訊，請參閱下列連結：
+ 若要進一步了解如何控制對 Amazon S3 中資料的存取權，請參閱 [Amazon S3 中的存取控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-management.html)。
+ 若要進一步了解 Amazon S3 許可，請參閱 [Amazon S3 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-actions-as-permissions)。
+ 若要進一步了解 AWS KMS 許可，請參閱 [定義的動作 AWS Key Management Service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awskeymanagementservice.html#awskeymanagementservice-actions-as-permissions)。

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

**Topics**
+ [將許可連接至 IAM 身分，以允許其存取 Amazon S3 儲存貯體](#s3-bucket-access-identity)
+ [將儲存貯體政策連接至 Amazon S3 儲存貯體以供另一個帳戶存取](#s3-bucket-access-cross-account)
+ [(進階安全性選項) 在陳述式中包含條件，以獲得更精細的存取權](#s3-bucket-access-conditions)

## 將許可連接至 IAM 身分，以允許其存取 Amazon S3 儲存貯體
<a name="s3-bucket-access-identity"></a>

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

1. 從 S3 儲存貯體擷取資料的許可。此陳述式也包含一個條件，此條件使用 `s3:prefix` [條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys)來限制存取儲存貯體中的特定資料夾。如需此條件的詳細資訊，請參閱[範例 2：取得儲存貯體中包含特定前綴的物件清單](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html#condition-key-bucket-ops-2)中的**使用者政策**一節。

1. (如果您需要將資料寫入 S3 位置) 將資料寫入 S3 儲存貯體的許可。此陳述式也包含使用 條件[金鑰](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount)來限制存取從特定 傳送之請求`aws:ResourceAccount`的條件 AWS 帳戶。

1. (如果 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 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

## 將儲存貯體政策連接至 Amazon S3 儲存貯體以供另一個帳戶存取
<a name="s3-bucket-access-cross-account"></a>

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

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

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

1. (如果 S3 儲存貯體是使用 KMS 金鑰加密的) 將加密 S3 儲存貯體的 KMS 金鑰進行描述與解密的許可。
**注意**  
若已對 S3 儲存貯體啟用版本控制，使用此功能上傳的每個物件版本都會有自己的加密金鑰。您會負責追蹤針對哪個物件版本使用了哪個加密金鑰。

許可類似於 [將許可連接至 IAM 身分，以允許其存取 Amazon S3 儲存貯體](#s3-bucket-access-identity) 中所述的以身分為基礎許可。不過，每個陳述式也要求您在 `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 主控台新增儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)。

## (進階安全性選項) 在陳述式中包含條件，以獲得更精細的存取權
<a name="s3-bucket-access-conditions"></a>

若要更有效地控制可存取資源的身分，您可以在政策陳述式中包含條件。本主題中的政策提供使用下列條件索引鍵的範例：
+ `s3:prefix` – S3 條件索引鍵，會限制存取 S3 儲存貯體中的特定資料夾。如需此條件索引鍵的詳細資訊，請參閱[範例 2：取得儲存貯體中包含特定前綴的物件清單](https://docs.aws.amazon.com/AmazonS3/latest/userguide/amazon-s3-policy-keys.html#condition-key-bucket-ops-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}}"
                }
            }
        }
    ]
}
```

------

若要進一步了解條件和條件索引鍵，請參閱下列連結：
+ 若要了解條件，請參閱《IAM 使用者指南》中的「[IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)」。
+ 若要了解 S3 特有的條件索引鍵，請參閱「服務授權參考」中的 [Amazon S3 的條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-policy-keys)。
+ 若要了解跨 使用的全域條件索引鍵 AWS 服務，請參閱[AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount)。