S3 Tables は、テーブルバケットとテーブルへのアクセスを管理するためのリソースベースのポリシー (テーブルバケットポリシーとテーブルポリシー) を提供します。テーブルバケットポリシーを使用して、テーブルバケット、名前空間、またはテーブルレベルで API アクセス許可を付与できます。テーブルバケットにアタッチされたアクセス許可は、ポリシー定義に応じて、バケット内のすべてのテーブルまたはバケット内の特定のテーブルに適用できます。テーブルポリシーを使用して、テーブルレベルでアクセス許可を付与できます。
S3 Tables は、リクエストを受け取ると、まずリクエスタに必要なアクセス許可があることを確認します。リクエストを許可するかどうかを決定する際に、関連するすべてのアクセスポリシー、ユーザーポリシー、リソースベースのポリシー (IAM ユーザーポリシー、IAM ロールポリシー、テーブルバケットポリシー、テーブルポリシー) を評価します。例えば、テーブルバケットポリシーが、バケット内のテーブル (DeleteTable
を含む) に対してすべてのアクションを実行するアクセス許可をユーザーに付与しているが、個々のテーブルにすべてのユーザーの DeleteTable
アクションを拒否するテーブルポリシーがある場合、そのユーザーはテーブルを削除できません。
次のトピックでは、テーブルおよびテーブルバケットポリシーの例を示します。これらのポリシーを使用するには、ユーザー入力用プレースホルダー
を独自の情報に置き換えます。
注記
-
テーブルを変更するアクセス許可を付与するすべてのポリシーには、
GetTableMetadataLocation
がテーブルのルートファイルにアクセスするためのアクセス許可を含める必要があります。詳細については、「GetTableMetadataLocation
」を参照してください。 -
テーブルで書き込みまたは削除アクティビティを実行するたびに、アクセスポリシーに
UpdateTableMetadataLocation
へのアクセス許可を含めます。 -
バケットレベルのアクションへのアクセスを管理するにはテーブルバケットポリシーを使用し、テーブルレベルのアクションへのアクセスを管理するにはテーブルポリシーを使用することをお勧めします。複数のテーブルで同じアクセス許可のセットを定義する場合は、テーブルバケットポリシーを使用することをお勧めします。
トピック
例 1: テーブルバケットポリシーで、アカウント内のバケットの PutBucketMaintenanceConfiguration
へのアクセスを許可する
次の例では、テーブルバケットポリシーは、PutBucketMaintenanceConfiguration
へのアクセスを許可することで、IAM data steward
がアカウント内のすべてのバケットの参照されていないオブジェクトを削除することを許可します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account_id
:role/datasteward"
},
"Action": ["s3tables:PutTableBucketMaintenanceConfiguration"],
"Resource":"arn:aws:s3tables:region:account_id
:bucket/*"
}]
}
例 2: hr
名前空間に保存されているテーブルへの読み取り (SELECT) アクセスを許可するテーブルバケットポリシー
次の例では、テーブルバケットポリシーは、AWS アカウント ID 123456789012
のユーザーである Jane がテーブルバケットの hr
名前空間に保存されているテーブルにアクセスすることを許可します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Jane"
},
"Action": [
"s3tables:GetTableData",
"s3tables:GetTableMetadataLocation"
],
"Resource":{ "arn:aws:s3tables:region
:account_id
:bucket/amzn-s3-demo-bucket1
/table/*"}
"Condition": {
"StringLike": { "s3tables:namespace": "hr" }
}
]
}
例 3: ユーザーがテーブルを削除できるようにするテーブルポリシー
次の例は、IAM ロール data steward
がテーブルを削除できるようにするテーブルポリシーです。
{
"Version": "2012-10-17",
"Id": "DeleteTable",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account_id
:role/datasteward
"
},
"Action": [
"s3tables:DeleteTable",
"s3tables:UpdateTableMetadataLocation",
"s3tables:PutTableData",
"s3tables:GetTableMetadataLocation"
],
"Resource":"arn:aws:s3tables:region
:account_id
:bucket/amzn-s3-demo-bucket1
/table/tableUUID
"
}]
}