

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

# 適用於 S3 Tables 的資源型政策
<a name="s3-tables-resource-based-policies"></a>

S3 Tables 可提供資源型政策，用於管理對資料表儲存貯體和資料表的存取：資料表儲存貯體政策和資料表政策。您可以使用資料表儲存貯體政策，授予資料表儲存貯體、命名空間或資料表層級的 API 存取許可。連結至資料表儲存貯體的許可能夠套用到儲存貯體中的所有資料表，或套用到儲存貯體中的特定資料表，具體情況取決於政策定義。您可以使用資料表政策來授予資料表層級的許可。

當 S3 Tables 收到請求時，會先驗證請求者是否具有必要的許可。其會評估所有相關存取政策、使用者政策和資源型政策，以決定是否授權請求 (IAM 使用者政策、IAM 角色政策、資料表儲存貯體政策和資料表政策)。例如，如果資料表儲存貯體政策授予使用者許可，以對儲存貯體 (包括 `DeleteTable`) 中的資料表執行所有動作，但個別資料表具有拒絕所有使用者 `DeleteTable` 動作的資料表政策，則使用者無法刪除資料表。

下列主題包含資料表和資料表儲存貯體政策的範例。若要使用這些政策，請以為您自己的資訊取代*使用者輸入預留位置*。

**注意**  
授予修改資料表許可的每個政策，都應包含供 `GetTableMetadataLocation` 存取資料表根檔案的許可。如需詳細資訊，請參閱[https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html)。
每次在資料表上執行寫入或刪除活動時，請在存取政策中包含 `UpdateTableMetadataLocation` 的許可。
建議您使用資料表儲存貯體政策來管控對儲存貯體層級動作的存取，並使用資料表政策來管控對資料表層級動作的存取。如果您想要跨多個資料表定義相同的許可集，則建議您使用資料表儲存貯體政策。

**Topics**
+ [範例 1：資料表儲存貯體政策允許存取帳戶中儲存貯體的 `PutBucketMaintenanceConfiguration`](#table-bucket-policy-1)
+ [範例 2：資料表儲存貯體政策，可允許對 `hr` 命名空間中儲存的資料表的讀取 (SELECT) 存取](#table-bucket-policy-2)
+ [範例 3：允許使用者刪除資料表的資料表政策](#table-bucket-policy-3)

## 範例 1：資料表儲存貯體政策允許存取帳戶中儲存貯體的 `PutBucketMaintenanceConfiguration`
<a name="table-bucket-policy-1"></a>

下列範例資料表儲存貯體政策允許 IAM `data steward` 透過允許存取 `PutBucketMaintenanceConfiguration` 來刪除帳戶中所有儲存貯體的未參考物件。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/datasteward"
            },
            "Action": [
                "s3tables:PutTableBucketMaintenanceConfiguration"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
        }
    ]
}
```

------

## 範例 2：資料表儲存貯體政策，可允許對 `hr` 命名空間中儲存的資料表的讀取 (SELECT) 存取
<a name="table-bucket-policy-2"></a>

下列範例資料表儲存貯體政策允許來自 AWS 帳戶 ID `123456789012` 的使用者 Jane 存取資料表儲存貯體中 `hr` 命名空間中儲存的資料表。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Jane"
            },
            "Action": [
                "s3tables:GetTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/*",
            "Condition": {
                "StringLike": {
                    "s3tables:namespace": "hr"
                }
            }
        }
    ]
}
```

------

## 範例 3：允許使用者刪除資料表的資料表政策
<a name="table-bucket-policy-3"></a>

下列範例資料表政策允許 IAM 角色 `data steward` 刪除資料表。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "DeleteTable",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/datasteward"
            },
            "Action": [
                "s3tables:DeleteTable",
                "s3tables:UpdateTableMetadataLocation",
                "s3tables:PutTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/table/tableUUID"
        }
    ]
}
```

------