AWS Glue のリソースベースのポリシーの例 - AWS Glue

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Glue のリソースベースのポリシーの例

このセクションでは、リソースベースのポリシーの例を紹介します。これには、クロスアカウントアクセスを許可するポリシーが含まれます。

次の例では、AWS Command Line Interface (AWS CLI) を使用して AWS Glue サービス API オペレーションを操作します。AWS Glue コンソール、または AWS SDK のいずれかを使用して、これと同じオペレーションを実行できます。

重要

AWS Glue リソースポリシーを変更することで、アカウント内の既存の AWS Glue ユーザーのアクセス許可を誤って取り消したり、予期しない障害が発生したりする場合があります。これらの例は開発やテストアカウントでのみ試して、変更を行う前に既存のワークフローを壊さないことを確認します。

AWS Glue でリソースベースのポリシーを使用する際の考慮事項

注記

IAM ポリシーと AWS Glue リソースポリシーが、それぞれ反映されるまでには数秒かかります。新しいポリシーをアタッチした後、新しいポリシーがシステム全体に反映されるまで古いポリシーが有効なままの場合があります。

JSON 形式で記述されたポリシードキュメントを使用して、リソースポリシーを作成または変更します。ポリシー構文は、以下の例外を除き、アイデンティティベースの IAM ポリシーと同じです (IAM JSON ポリシーリファレンスを参照のこと)。

  • ポリシーステートメントごとに "Principal" または "NotPrincipal" ブロックが必要です。

  • "Principal" または "NotPrincipal" では、有効な既存のプリンシパルを特定する必要があります。ワイルドカードパターン (arn:aws:iam::account-id:user/* など) は使用できません。

  • ポリシー内の "Resource" ブロックでは、すべてのリソース ARN が、次の正規表現構文と一致している必要があります (最初の %sregion、2 番目の %saccount-id)。

    *arn:aws:glue:%s:%s:(\*|[a-zA-Z\*]+\/?.*)

    たとえば、arn:aws:glue:us-west-2:account-id:*arn:aws:glue:us-west-2:account-id:database/default はいずれも許可されますが、* は許可されません。

  • アイデンティティベースのポリシーとは異なり、AWS Glue リソースポリシーには、このポリシーがアタッチされているカタログに属するリソースの、Amazon リソースネーム (ARN) のみを含めることができます。このような ARN は常に arn:aws:glue: で始まります。

  • ポリシーは、それを作成しているアイデンティティを、それ以降のポリシーの作成または変更から排除することはできません。

  • リソースポリシーの JSON ドキュメントのサイズは 10 KB を超えることはできません。

同じアカウント内のアクセスをコントロールするリソースポリシーの使用

この例では、Account A の管理者ユーザーが、Account A 内の IAM ユーザー Alice にカタログへの完全なアクセス許可を付与するリソースポリシーを作成します。Alice に添付されている IAM ポリシーはありません。

これを行うには、管理者ユーザーは次の AWS CLI コマンドを実行します。

# Run as admin of Account A $ aws glue put-resource-policy --profile administrator-name --region us-west-2 --policy-in-json '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::account-A-id:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id:*" ] } ] }'

AWS CLI コマンドの一部として JSON ポリシードキュメントを入力する代わりに、ポリシードキュメントをファイルに保存して、file:// でプレフィックスが付けられた AWS CLI コマンドのファイルパスをリファレンスできます。その方法の例は次のとおりです。

$ echo '{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::account-A-id:user/Alice" ] }, "Effect": "Allow", "Action": [ "glue:*" ], "Resource": [ "arn:aws:glue:us-west-2:account-A-id:*" ] } ] }' > /temp/policy.json $ aws glue put-resource-policy --profile admin1 \ --region us-west-2 --policy-in-json file:///temp/policy.json

このリソースポリシーが反映されると、Alice は Account A のすべての AWS Glue リソースにアクセスできます。

# Run as user Alice $ aws glue create-database --profile alice --region us-west-2 --database-input '{ "Name": "new_database", "Description": "A new database created by Alice", "LocationUri": "s3://my-bucket" }' $ aws glue get-table --profile alice --region us-west-2 --database-name "default" --table-name "tbl1"}

Alice の get-table 呼び出しに応じて、AWS Glue サービスは次を返します。

{ "Table": { "Name": "tbl1", "PartitionKeys": [], "StorageDescriptor": { ...... }, ...... } }