AWS Glue と Lake Formation の両方を使用したクロスアカウント許可の管理 - AWS Lake Formation

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

AWS Glue と Lake Formation の両方を使用したクロスアカウント許可の管理

AWS Glue または AWS Lake Formationを使用することで、Data Catalog リソースと基盤となるデータに対するクロスアカウントアクセス権を付与することが可能です。

ではAWS Glue、Data Catalog リソースポリシーを作成または更新して、クロスアカウントアクセス許可を付与します。Lake Formation では、Lake Formation の GRANT/REVOKE 許可モデルと、Grant Permissions API 操作を使用することによって、クロスアカウント許可を付与します。

ヒント

データレイクをセキュア化するには、Lake Formation 許可のみに頼ることをお勧めします。

Lake Formation のクロスアカウント付与を表示するには、Lake Formation コンソールまたは AWS Resource Access Manager (AWS RAM) コンソールを使用します。ただし、これらのコンソールページには、AWS Glue Data Catalog リソースポリシーによって付与されたクロスアカウント許可が表示されません。同様に、AWS Glue コンソールの [Settings] (設定) ページを使用して Data Catalog リソースポリシー内のクロスアカウント許可を表示することはできますが、そのページに Lake Formation を使用して付与されたクロスアカウント許可は表示されません。

クロスアカウント許可を表示および管理するときに付与を見落とさないようにするため、Lake Formation と AWS Glue では、以下のアクションを実行して、Lake Formation と AWS Glue の両方によるクロスアカウント付与を認識しており、それらを許可していることを示す必要があります。

AWS Glue Data Catalog リソースポリシーを使用してクロスアカウント許可を付与する場合

アカウント (付与者アカウントまたはプロデューサーアカウント) で、 がリソースの共有 AWS RAM に使用するクロスアカウント付与が行われていない場合は、通常どおり Data Catalog リソースポリシーを に保存できますAWS Glue。ただし、 AWS RAM リソース共有を含む許可がすでに付与されている場合は、リソースポリシーの保存が成功するように、次のいずれかを実行する必要があります。

  • AWS Glue コンソールの [Settings] (設定) ページでリソースポリシーを保存するときは、ポリシー内の許可が Lake Formation コンソールを使用して付与された許可に追加されることを示す警告が、コンソールに表示されます。[Proceed] (続行) を選択してポリシーを保存する必要があります。

  • glue:PutResourcePolicy API オペレーションを使用してリソースポリシーを保存するときは、EnableHybrid フィールドを「TRUE」(型 = 文字列) に設定する必要があります。以下のコードサンプルは、Python でこれを実行する方法を示しています。

    import boto3 import json REGION = 'us-east-2' PRODUCER_ACCOUNT_ID = '123456789012' CONSUMER_ACCOUNT_IDs = ['111122223333'] glue = glue_client = boto3.client('glue') policy = { "Version": "2012-10-17", "Statement": [ { "Sid": "Cataloguers", "Effect": "Allow", "Action": [ "glue:*" ], "Principal": { "AWS": CONSUMER_ACCOUNT_IDs }, "Resource": [ f"arn:aws:glue:{REGION}:{PRODUCER_ACCOUNT_ID}:catalog", f"arn:aws:glue:{REGION}:{PRODUCER_ACCOUNT_ID}:database/*", f"arn:aws:glue:{REGION}:{PRODUCER_ACCOUNT_ID}:table/*/*" ] } ] } policy = json.dumps(policy) glue.put_resource_policy(PolicyInJson=policy, EnableHybrid='TRUE')

    詳細については、「 AWS Glue デベロッパーガイド」のPutResourcePolicy 「アクション (Python: put_resource_policy)」を参照してください。

Lake Formation の名前付きリソース方式を使用してクロスアカウント許可を付与する場合

アカウント (プロデューサーアカウント) に Data Catalog リソースポリシーがない場合、Lake Formation のクロスアカウント付与は通常どおり続行します。ただし、Data Catalog リソースポリシーが存在する場合は、以下のステートメントをポリシーに追加して、クロスアカウント付与が名前付きリソース方式で行われた場合でもそれらが成功することを許可する必要があります。<region> を有効なリージョン名に、<account-id> を自分の AWS アカウント ID (プロデューサーアカウント ID) に置き換えます。

{ "Effect": "Allow", "Action": [ "glue:ShareResource" ], "Principal": {"Service": [ "ram.amazonaws.com" ]}, "Resource": [ "arn:aws:glue:<region>:<account-id>:table/*/*", "arn:aws:glue:<region>:<account-id>:database/*", "arn:aws:glue:<region>:<account-id>:catalog" ] }

この追加のステートメントがないと、Lake Formation 許可は成功しますが、 ではブロックされ AWS RAM、受信者アカウントは付与されたリソースにアクセスできません。

重要

クロスアカウント付与を実行するために Lake Formation のタグベースのアクセスコントロール (LF-TBAC) 方式も使用している場合、少なくとも「前提条件」で指定されている許可がある Data Catalog リソースポリシーが必要です。

以下も参照してください。