翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 が、次の正規表現構文と一致している必要があります (最初の%s
はregion
、2 番目の%s
はaccount-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": { ...... }, ...... } }