

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

# 透過 Athena 控制 Amazon S3 的存取權
<a name="s3-permissions"></a>

您可以使用身分型政策、儲存貯體資源政策、存取點政策或上述政策的任何組合，授予對 Amazon S3 位置的存取權。當演員與 Athena 互動時，其許可會傳遞給 Athena，進而確定 Athena 可以存取的內容。這表示使用者必須擁有存取 Amazon S3 儲存貯體的許可，才能向 Athena 查詢這些儲存貯體。

每當您使用 IAM 政策時，請務必遵循 IAM 最佳實務。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 中的安全性最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

請注意，對 Amazon S3 的請求來自 Athena 的私有 IPv4 位址，而不是 `aws:SourceIp` 中指定的來源 IP。因此，您無法使用 `aws:SourceIp` 條件來拒絕存取指定 IAM 政策中的 Amazon S3 動作。此外，您也無法根據 `aws:SourceVpc` 或 `aws:SourceVpce` 條件索引鍵限制或允許存取 Amazon S3 資源。

**注意**  
使用 IAM Identity Center 身分驗證的 Athena 工作群組，需要將 S3 Access Grants 設定為使用受信任的身分傳播身分。如需詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的 [S3 Access Grants 和目錄身分](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-directory-ids.html)。

**Topics**
+ [身分型政策](#s3-permissions-identity-based-policies)
+ [儲存貯體資源政策](#s3-permissions-bucket-resource-policies)
+ [存取點政策](#s3-permissions-aliases)
+ [CalledVia 內容索引鍵](#s3-permissions-calledvia)
+ [其他資源](#s3-permissions-additional-resources)

## 使用身分型政策來控制 Amazon S3 儲存貯體的存取權
<a name="s3-permissions-identity-based-policies"></a>

以身分為基礎的政策會連接至 IAM 使用者、群組或角色。這些政策可讓您指定該身分可以執行哪些動作 (其許可)。您可以使用身分型政策來控制 Amazon S3 儲存貯體的存取權。

下列身分型政策允許對特定 Amazon S3 儲存貯體中的物件進行 `Read` 和 `Write` 存取。若要使用此政策，請將{{斜體預留位置文字}}取代為您自己的值。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        },
        {
            "Sid": "AllObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

------

## 使用儲存貯體資源政策來控制 Amazon S3 儲存貯體的存取權
<a name="s3-permissions-bucket-resource-policies"></a>

您可以使用 Amazon S3 儲存貯體政策，以確保安全地存取儲存貯體中的物件，以便只有具有適當許可的使用者才能存取它們。如需有關建立 Amazon S3 政策的指南，請參閱《Amazon S3 使用者指南**》中的[使用 Amazon S3 主控台新增儲存貯體政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)。

下列範例許可政策會限制使用者只能讀取具有 `environment: production` 索引標籤金鑰和值的物件。此範例政策會使用 `s3:ExistingObjectTag` 條件金鑰來指定索引標籤金鑰和值。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:role/{{JohnDoe}}"
            },
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/environment": "production"
                }
            }
        }
    ]
}
```

------

如需更多儲存貯體政策範例，請參閱《Amazon S3 使用者指南**》中的 [Amazon S3 儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)。

## 使用 Amazon S3 Access Points，以更精確地控制儲存貯體存取
<a name="s3-permissions-aliases"></a>

如果您在 Amazon S3 儲存貯體中具有共用的資料集，則維護負責管理數百個使用案例存取的單一儲存貯體政策可能十分具有挑戰性。

Amazon S3 儲存貯體存取點、政策和別名有助於解決此問題。儲存貯體可有多個存取點，每個存取點都有一個以不同方式控制儲存貯體存取的政策。

Amazon S3 會對您建立的每個存取點產生代表存取點的別名。由於別名採用 Amazon S3 儲存貯體名稱格式，您可以在 Athena 的 `CREATE TABLE` 陳述式 `LOCATION` 子句中使用該別名。接著，會由別名所代表的存取點政策來控制 Athena 對儲存貯體的存取。

如需詳細資訊，請參閱《Amazon S3 使用者指南》**中的 [在 Amazon S3 中指定資料表位置](tables-location-format.md) 和[使用存取點](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html)。

## 使用 CalledVia 內容索引鍵，僅允許從 Athena 呼叫其他服務
<a name="s3-permissions-calledvia"></a>

為了提升安全性，您可以使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia) 全域條件內容索引鍵。`aws:CalledVia` 條件索引鍵包含允許呼叫其他服務的服務清單。例如， AWS Lambda 只有在`InvokeFunction`呼叫來自 Athena 時，您才能允許呼叫 ，方法是指定`aws:CalledVia`內容金鑰`athena.amazonaws.com`的 Athena 服務主體名稱。如需詳細資訊，請參閱[針對 Athena 使用 CalledVia 內容索引鍵](security-iam-athena-calledvia.md)。

## 其他資源
<a name="s3-permissions-additional-resources"></a>

如需有關如何授予 Amazon S3 存取權的詳細資訊和範例，請參閱以下資源：
+ 《Amazon S3 使用者指南》**中的[範例演練：管理存取](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access.html)。
+ [如何在 知識中心提供 Amazon S3 儲存貯體中物件的跨帳戶存取權？](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/)。 AWS 
+ [設定 Athena 中的 Amazon S3 儲存貯體跨帳戶存取權](cross-account-permissions.md).