S3 Tables のアクセス管理 - Amazon Simple Storage Service

S3 Tables のアクセス管理

S3 Tables リソースには、テーブルバケットとそれらに含まれるテーブルが含まれます。リソースを作成した AWS アカウントのルートユーザー (リソース所有者) と、必要なアクセス許可を持つそのアカウント内の AWS Identity and Access Management (IAM) ユーザーは、作成したリソースにアクセスできます。リソース所有者は、リソースにアクセスできる他のユーザーと、ユーザーがリソースに対して実行できるアクションを指定します。Amazon S3 には、S3 リソースへのアクセスを他のユーザーに許可するために使用できるさまざまなアクセス管理ツールがあります。以下のトピックでは、S3 Tables のリソース、IAM アクション、条件キーの概要について説明します。また、S3 Tables のリソースベースポリシーとアイデンティティベースのポリシーの両方の例も示します。

リソース

S3 Tables リソースには、テーブルバケットとそれらに含まれるテーブルが含まれます。

  • テーブルバケット – テーブルバケットは、汎用 S3 バケットのセルフマネージドテーブルと比較して、テーブルとプロバイダーの 1 秒あたりのトランザクション (TPS) が高く、クエリスループットが向上するように特別に設計されています。テーブルバケットは、Amazon S3 汎用バケットと同じ耐久性、可用性、スケーラビリティ、パフォーマンス特性を提供します。

  • テーブル – テーブルバケット内のテーブルは Apache Iceberg 形式で保存されます。これらのテーブルは、Iceberg をサポートするクエリエンジンで標準 SQL を使用してクエリできます。

テーブルとテーブルバケットの Amazon リソースネーム (ARN) には、s3tables 名前空間、AWS リージョン、AWS アカウント ID、バケット名が含まれます。テーブルとテーブルバケットにアクセスしてアクションを実行するには、次の ARN 形式を使用する必要があります。

  • テーブル ARN 形式:

    arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-bucket/table/demo-tableID

S3 Tables のアクション

アイデンティティベースのポリシーまたはリソースベースのポリシーで、特定の IAM プリンシパルに対して、どの S3 Tables アクションを許可または拒否するかを定義します。テーブルアクションは、バケットおよびテーブルレベルの API オペレーションに対応しています。すべてのアクションは、一意の IAM 名前空間 s3tables の一部です。

ポリシーでアクションを使用する場合は、通常、同じ名前の API オペレーションまたは CLI コマンドへのアクセスを許可または拒否します。ただし、単独のアクションが複数のオペレーションへのアクセスを制御する場合もあります。例えば、s3tables:GetTableData アクションには、GetObjectListPartsListMultiparts API オペレーションのアクセス許可が含まれます。

テーブルバケットでサポートされているアクションは次のとおりです。IAM ポリシーまたはリソースポリシーの Action エレメントでは、以下のアクションを指定できます。

[アクション] 説明 アクセスレベル クロスアカウントアクセス
s3tables:CreateTableBucket 新しいバケットを作成するアクセス許可を付与 Write いいえ
s3tables:GetTableBucket テーブルバケット ARN、テーブルバケット名、作成日を取得するアクセス許可を付与 Write あり
s3tables:ListTableBuckets このアカウント内のすべてのテーブルバケットを一覧表示するアクセス許可を付与 Read いいえ
s3tables:CreateNamespace テーブルバケットに名前空間を作成するアクセス許可を付与 Read あり
s3tables:GetNamespace 名前空間の詳細を取得するアクセス許可を付与 Read あり
s3tables:ListNamespace テーブルバケット上のすべての名前空間を一覧表示するアクセス許可を付与 Read あり
s3tables:DeleteNamespace テーブルバケット内の名前空間を削除するアクセス許可を付与 Write あり
s3tables:DeleteTableBucket バケットを削除するアクセス許可を付与 Write あり
s3tables:PutTableBucketPolicy バケットポリシーを追加または置き換えるアクセス許可を付与 Permissions Management いいえ
s3tables:GetTableBucketPolicy バケットポリシーを返すアクセス許可を付与 Read いいえ
s3tables:DeleteTableBucketPolicy バケットポリシーを削除するアクセス許可を付与 Permissions Management いいえ
s3tables:GetTableBucketMaintenanceConfiguration テーブルバケットのメンテナンス設定を返すアクセス許可を付与 Read あり
s3tables:PutTableBucketMaintenanceConfiguration テーブルバケットのメンテナンス設定を追加または置き換えるアクセス許可を付与 Write あり

デーブルでは次のアクションがサポートされています。

[アクション] 説明 アクセスレベル クロスアカウントアクセス
s3tables:GetTableMaintenanceConfiguration テーブルのメンテナンス設定を返すアクセス許可を付与 Read あり
s3tables:PutTableMaintenanceConfiguration テーブルのメンテナンス設定を追加または置き換えるアクセス許可を付与 Write あり
s3tables:PutTablePolicy テーブルポリシーを追加または置き換えるアクセス許可を付与 Permissions Management いいえ
s3tables:GetTablePolicy テーブルポリシーを返すアクセス許可を付与 Read いいえ
s3tables:DeleteTablePolicy テーブルポリシーを削除するアクセス許可を付与 Permissions management いいえ
s3tables:CreateTable テーブルバケットのテーブルを作成するアクセス許可を付与 Write あり
s3tables:GetTable テーブル情報を取得するアクセス許可を付与 Read あり
s3tables:GetTableMetadataLocation テーブルルートポインタ (メタデータファイル) を取得するアクセス許可を付与 Read あり
s3tables:ListTables テーブルバケット内のすべてのテーブルを一覧表示するアクセス許可を付与 Read あり
s3tables:RenameTable テーブルの名前を変更するアクセス許可を付与 Write あり
s3tables:UpdateTableMetadataLocation テーブルルートポインタ (メタデータファイル) を更新するアクセス許可を付与 Write あり
s3tables:GetTableData テーブルバケットに保存されているテーブルメタデータとデータオブジェクトを読み取るアクセス許可を付与 Read あり
s3tables:PutTableData テーブルバケットに保存されているテーブルメタデータとデータオブジェクトを書き込むアクセス許可を付与 Write あり

テーブルレベルの読み取りおよび書き込みアクションを実行するために、S3 Tables は GetObjectPutObject などの Amazon S3 API オペレーションをサポートしています。次の表に、オブジェクトレベルのアクションのリストを示します。テーブルに読み取りおよび書き込みアクセス許可を付与する場合は、次のアクションを使用します。

アクション S3 オブジェクト API
s3tables:GetTableData GetObject, ListParts, HeadObject
s3tables:PutTableData PutObject, CreateMultipartUpload, CompleteMultipartUpload, UploadPart, AbortMultipartUpload

例えば、ユーザーが GetTableData アクセス許可を持っている場合、メタデータファイル、マニフェスト、マニフェストリストファイル、parquet データファイルなど、テーブルに関連付けられているすべてのファイルを読み取ることができます。

S3 Tables の条件キー

S3 Tables は、AWS グローバル条件コンテキストキーをサポートしています。

さらに、S3 Tables では、アクセスポリシーで使用できる以下の条件キーを定義します。

条件キー 説明 [Type] (タイプ)
s3tables:tableName テーブルバケット内のテーブルの名前でアクセスをフィルタリングします。

s3tables:tableName 条件キーを使用して、この名前条件を満たすテーブルのみへのユーザーまたはアプリケーションのアクセスを制限する IAM またはテーブルバケットポリシーを記述できます。

s3tables:tableName 条件キーを使用してアクセスを制御すると、テーブル名の変更がこれらのポリシーに影響を与える可能性があることに注意してください。

値の例: "s3tables:tableName":"department*"
String
s3tables:namespace

テーブルバケットで作成された名前空間でアクセスをフィルタリングします。

s3tables:namespace 条件キーを使用して、特定の名前空間の一部であるテーブルへのユーザーまたはアプリケーションのアクセスを制限する IAM、テーブル、またはテーブルバケットポリシーを記述できます。値の例: "s3tables:namespace":"hr"

s3tables:namespace 条件キーを使用してアクセスを制御すると、名前空間の変更がこれらのポリシーに影響を与える可能性があることに注意してください。

String