Lake Formation のタグベースのアクセスコントロールと名前付きリソースを使用したデータレイクの共有 - AWS Lake Formation

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

Lake Formation のタグベースのアクセスコントロールと名前付きリソースを使用したデータレイクの共有

このチュートリアルでは、データベース全体をコピーしなくても、データレイク内に保存されたデータを複数の企業、組織、またはビジネスユニットと安全に共有 AWS Lake Formation するように を設定する方法を示します。Lake Formation クロスアカウントアクセスコントロールを使用してデータベースとテーブルを別の と共有するには AWS アカウント 、次の 2 つのオプションがあります。

  • Lake Formation のタグベースのアクセスコントロール (推奨)

    Lake Formation のタグベースのアクセスコントロールは、属性に基づいて許可を定義する認可戦略です。これらの属性は、Lake Formation で LF タグと呼ばれています。詳細については、「Lake Formation のタグベースのアクセスコントロールを使用したデータレイクの管理」を参照してください。

  • Lake Formation の名前付きリソース

    Lake Formation の名前付きリソース方式は、リソースの許可を定義する認可戦略です。リソースには、データベース、テーブル、列が含まれます。データレイク管理者は、Lake Formation のリソースに対する許可を割り当てたり、取り消したりできます。詳細については、「Lake Formation でのクロスアカウントデータ共有」を参照してください。

    データレイク管理者がリソースごとに許可を明示的に付与することを希望する場合は、名前付きリソースを使用することをお勧めします。名前付きリソースメソッドを使用して Data Catalog リソースに対する Lake Formation のアクセス許可を外部アカウントに付与すると、Lake Formation は AWS Resource Access Manager (AWS RAM) を使用してリソースを共有します。

対象者

このチュートリアルは、データスチュワード、データエンジニア、データアナリストを対象としています。Lake Formation から Data Catalog テーブルを共有 AWS Glue し、アクセス許可を管理する場合、生成アカウント内のデータスチュワードは、サポートする関数に基づいて機能的な所有権を持ち、さまざまなコンシューマー、外部組織、および アカウントへのアクセスを許可できます。次の表は、このチュートリアルで使用するロールのリストです。

ロール 説明
DataLakeAdminProducer データレイク管理者IAMユーザーは、次のアクセス権限を持ちます。
  • Data Catalog 内のすべてのリソースに対する完全な読み取り、書き込み、更新のアクセス権

  • リソースへの許可を付与できる

  • 共有テーブルへのリソースリンクを作成できる

  • LF タグをリソースにアタッチし、データスチュワードが作成したポリシーに基づいてプリンシパルにアクセス権を付与できる

DataLakeAdminConsumer

データレイク管理者IAMユーザーは、次のアクセス権限を持ちます。

  • Data Catalog 内のすべてのリソースに対する完全な読み取り、書き込み、更新のアクセス権

  • リソースへの許可を付与できる

  • 共有テーブルへのリソースリンクを作成できる

  • LF タグをリソースにアタッチし、データスチュワードが作成したポリシーに基づいてプリンシパルにアクセス権を付与できる

DataAnalyst DataAnalyst ユーザーには次のアクセス権限があります。
  • Lake Formation のタグベースのアクセスポリシーまたは名前付きリソース方式を使用して共有しているリソースへのきめ細かなアクセス権

プロデューサーアカウントで Lake Formation の Data Catalog 設定を構成する

このチュートリアルを開始する前に、正しいアクセス許可を持つ管理者ユーザーとしてサインインするために AWS アカウント 使用できる が必要です。詳細については、「初期設定 AWS タスクを完了する」を参照してください。

このチュートリアルでは、 に精通していることを前提としていますIAM。の詳細についてはIAM、IAM「 ユーザーガイド」を参照してください。

プロデューサーアカウントで Lake Formation の Data Catalog 設定を構成する
注記

このチュートリアルでは、ソーステーブルを持つアカウントをプロデューサーアカウントと呼び、ソーステーブルにアクセスする必要があるアカウントをコンシューマーアカウントと呼びます。

Lake Formation には、独自の許可管理モデルがあります。IAM アクセス許可モデルとの下位互換性を維持するために、アクセスSuper許可はデフォルトで既存のすべての AWS Glue Data Catalog リソースIAMAllowedPrincipalsのグループに付与されます。また、新しい Data Catalog リソースでは、IAMアクセスコントロール設定のみが有効になっています。このチュートリアルでは、Lake Formation アクセス許可を使用したきめ細かなアクセスコントロールと、粗粒度のアクセスコントロールのためのIAMポリシーを使用します。詳細については、「細粒度のアクセスコントロールのための方式」を参照してください。したがって、クイックセットアップに AWS CloudFormation テンプレートを使用する前に、プロデューサーアカウントの Lake Formation Data Catalog 設定を変更する必要があります。

重要

この設定は、新しく作成したすべてのデータベースとテーブルに影響するため、このチュートリアルは非運用アカウントまたは新しいアカウントで実行することを強くお勧めします。また、共有アカウント (自社の開発アカウントなど) を使用している場合は、他のリソースに影響を与えないことを確認してください。デフォルトのセキュリティ設定を維持したい場合は、他のアカウントとリソースを共有するときに追加のステップを実行し、データベースやテーブルに対するデフォルトの Super 許可を IAMAllowedPrincipals から取り消す必要があります。詳細については、このチュートリアルの後半で説明します。

プロデューサーアカウントで Lake Formation の Data Catalog 設定を構成するには、以下のステップを実行します。

  1. プロデューサーアカウント AWS Management Console を使用して、管理者ユーザーとして、または Lake Formation PutDataLakeSettingsAPIのアクセス許可を持つユーザーとして にサインインします。

  2. Lake Formation コンソールのナビゲーションペインで、[Data Catalog][Settings] (設定) を選択します。

  3. 選択を解除する新しいデータベースのIAMアクセスコントロールのみを使用し新しいデータベースの新しいテーブルのIAMアクセスコントロールのみを使用する

    [Save] を選択します。

    Data catalog settings interface for AWS Lake Formation with permission options.

    さらに、[Administrative roles and tasks] (管理ロールおよびタスク) の [Database creators] (データベース作成者) で、IAMAllowedPrincipals への CREATE_DATABASE 許可を削除できます。この後にのみ、Lake Formation の許可を使用して誰が新しいデータベースを作成できるかを管理できます。

ステップ 1: AWS CloudFormation テンプレートを使用してリソースをプロビジョニングする

プロデューサーアカウントの CloudFormation テンプレートは、次のリソースを生成します。

  • データレイクとなる Amazon S3 バケット。

  • Lambda 関数 (Lambda でバックアップされた AWS CloudFormation カスタムリソース用)。この関数を使用して、パブリック Amazon S3 バケットからユーザーの Amazon S3 バケットにサンプルデータファイルをコピーします。

  • IAM ユーザーとポリシー: DataLakeAdminProducer。

  • Lake Formation の適切な設定および許可 (以下を含む):

    • プロデューサーアカウントで Lake Formation データレイク管理者を定義する

    • Amazon S3 バケットを Lake Formation データレイクのロケーションとして登録する (プロデューサーアカウント)

  • AWS Glue Data Catalog データベース、テーブル、パーティション。間でリソースを共有するには 2 つのオプションがあるため AWS アカウント、このテンプレートはデータベースとテーブルの 2 つの別々のセットを作成します。

コンシューマーアカウントの AWS CloudFormation テンプレートは、次のリソースを生成します。

  • IAM ユーザーとポリシー:

    • DataLakeAdminConsumer

    • DataAnalyst

  • AWS Glue Data Catalog データベース。このデータベースを使用して、共有リソースへのリソースリンクを作成します。

プロデューサーアカウントでリソースを作成する
  1. 米国東部 (バージニア北部) リージョンの https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールにサインインします。

  2. [Launch Stack] (スタックの起動) を選択します。

  3. [Next] (次へ) を選択します。

  4. [Stack name] (スタック名) にスタック名 (stack-producer など) を入力します。

  5. [User Configuration] (ユーザー設定) セクションで、[ProducerDatalakeAdminUserName] と [ProducerDatalakeAdminUserPassword] にユーザーネームとパスワードを入力します。

  6. DataLakeBucketName、データレイクバケットの名前を入力します。この名前はグローバルに一意である必要があります。

  7. DatabaseName と ではTableName、デフォルト値のままにします。

  8. [Next (次へ)] を選択します。

  9. 次のページで、[Next] (次へ) を選択します。

  10. 最終ページの詳細を確認し、IAMリソース を作成する AWS CloudFormation 可能性のある を承認します

  11. [Create] (作成) を選択します。

    スタックの作成には、最大 1 分かかる場合があります。

コンシューマーアカウントでリソースを作成する
  1. 米国東部 (バージニア北部) リージョンの https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールにサインインします。

  2. [Launch Stack] (スタックの起動) を選択します。

  3. [Next] (次へ) を選択します。

  4. [Stack name] (スタック名) にスタック名 (stack-consumer など) を入力します。

  5. [User Configuration] (ユーザー設定) セクションで、[ConsumerDatalakeAdminUserName] と [ConsumerDatalakeAdminUserPassword] にユーザーネームとパスワードを入力します。

  6. DataAnalystUserName と にはDataAnalystUserPassword、データアナリストIAMユーザーに必要なユーザー名とパスワードを入力します。

  7. DataLakeBucketName、データレイクバケットの名前を入力します。この名前はグローバルに一意である必要があります。

  8. の場合DatabaseName、デフォルト値のままにします。

  9. [AthenaQueryResultS3BucketName] に、Amazon Athena のクエリ結果を保存する Amazon S3 バケットの名前を入力します。バケットがない場合は、Amazon S3 バケットを作成します。

  10. [Next] (次へ) を選択します。

  11. 次のページで、[Next] (次へ) を選択します。

  12. 最終ページの詳細を確認し、 IAM リソース を作成する AWS CloudFormation 可能性があることを確認しました。

  13. [Create] (作成) を選択します。

    スタックの作成には、最大 1 分かかる場合があります。

注記

チュートリアルを完了したら、 のスタックを削除 AWS CloudFormation して、料金が発生しないようにします。リソースが正常に削除されたことをスタックのイベントステータスで確認します。

ステップ 2: Lake Formation クロスアカウント共有の前提条件

Lake Formation でリソースを共有する前に、タグベースのアクセスコントロール方式と名前付きリソース方式の両方に関する前提条件があります。

タグベースのアクセスコントロールのクロスアカウントデータ共有に関する前提条件を完了する
  • クロスアカウントデータ共有要件の詳細については、「クロスアカウントデータ共有」という章の「前提条件」セクションを参照してください。

    Data Catalog リソースをクロスアカウントバージョン設定 のバージョン 3 以降と共有するには、グランターがAWSLakeFormationCrossAccountManagerアカウントの AWS 管理ポリシーで定義されたIAMアクセス許可を持っている必要があります。

    [クロスアカウントバージョン設定] のバージョン 1 またはバージョン 2 を使用している場合は、タグベースのアクセスコントロール方式を使用してリソースへのクロスアカウントアクセス権を付与する前に、プロデューザーアカウントで以下の JSON 許可オブジェクトを Data Catalog リソースポリシーに追加する必要があります。これにより、glue:EvaluatedByLakeFormationTags が true であると、Data Catalog へのアクセス許可がコンシューマーアカウントに付与されます。また、この条件は、Lake Formation 許可タグを使用してリソースに対するアクセスをコンシューマーアカウントに許可した場合にも true になります。このポリシーは、アクセス許可を付与 AWS アカウント するすべての に必要です。

    次のポリシーは、Statement 要素内に配置する必要があります。IAM ポリシーの詳細については、次のセクションで説明します。

    { "Effect": "Allow", "Action": [ "glue:*" ], "Principal": { "AWS": [ "consumer-account-id" ] }, "Resource": [ "arn:aws:glue:region:account-id:table/*", "arn:aws:glue:region:account-id:database/*", "arn:aws:glue:region:account-id:catalog" ], "Condition": { "Bool": { "glue:EvaluatedByLakeFormationTags": true } } }
名前付きリソース方式のクロスアカウント共有に関する前提条件を完了する
  1. アカウント内に Data Catalog リソースポリシーが存在しない場合、Lake Formation クロスアカウント付与を行うと、付与は通常どおり続行されます。一方、Data Catalog リソースポリシーが存在し、クロスアカウント付与に名前付きリソース方式を使用する場合、この付与を成功させるには、次のステートメントをポリシーに追加する必要があります。名前付きリソース方式またはタグベースのアクセスコントロール方式のいずれかのみを使用する場合は、このステップをスキップできます。このチュートリアルでは、両方の方式を評価するため、次のポリシーを追加する必要があります。

    次のポリシーは、Statement 要素内に配置する必要があります。IAM ポリシーの詳細については、次のセクションで説明します。

    { "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" ] }
  2. 次に、 AWS Command Line Interface () を使用して AWS Glue Data Catalog リソースポリシーを追加しますAWS CLI。

    タグベースのアクセスコントロール方式と名前付きリソース方式の両方を使用してクロスアカウント許可を付与する場合は、上記のポリシーを追加するときに EnableHybrid 引数を「true」に設定する必要があります。このオプションは現在コンソールではサポートされていないため、 glue:PutResourcePolicy API と を使用する必要があります AWS CLI。

    まず、ポリシードキュメント (policy.json など) を作成し、上記の 2 つのポリシーを追加します。置換 consumer-account-idaccount ID 付与 AWS アカウント を受け取る の、region アクセス許可を付与するデータベースとテーブルを含む Data Catalog のリージョン、および account-id プロデューサー AWS アカウント ID を使用します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ram.amazonaws.com" }, "Action": "glue:ShareResource", "Resource": [ "arn:aws:glue:region:account-id:table/*/*", "arn:aws:glue:region:account-id:database/*", "arn:aws:glue:region:account-id:catalog" ] }, { "Effect": "Allow", "Principal": { "AWS": "region:account-id" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:region:account-id:table/*/*", "arn:aws:glue:region:account-id:database/*", "arn:aws:glue:region:account-id:catalog" ], "Condition": { "Bool": { "glue:EvaluatedByLakeFormationTags": "true" } } } ] }

    次の AWS CLI コマンドを入力します。置換 glue-resource-policy 正しい値 (file://policy.json など) を持つ。

    aws glue put-resource-policy --policy-in-json glue-resource-policy --enable-hybrid TRUE

    詳細については、「」を参照してくださいput-resource-policy。

ステップ 3: タグベースのアクセスコントロール方式を使用してクロスアカウント共有を実装する

このセクションでは、以下の大まかなステップについて説明します。

  1. LF タグを定義する

  2. LF タグをターゲットリソースに割り当てる

  3. LF タグの許可をコンシューマーアカウントに付与する

  4. データの許可をコンシューマーアカウントに付与する

  5. (オプション) データベース、テーブル、列に対する許可を IAMAllowedPrincipals から取り消す

  6. 共有テーブルへのリソースリンクを作成する

  7. LF タグを作成してターゲットデータベースに割り当てる

  8. LF タグのデータ許可をコンシューマーアカウントに付与する

LF タグを定義する
注記

プロデューサーアカウントにサインインしている場合は、サインアウトしてから以下のステップを開始してください。

  1. でデータレイク管理者としてプロデューサーアカウントにサインインしますhttps://console.aws.amazon.com/lakeformation/。スタックの作成時に AWS CloudFormation 指定したプロデューサーアカウント番号、IAMユーザー名 (デフォルトは DatalakeAdminProducer)、パスワードを使用します。

  2. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) のナビゲーションペインの アクセス許可 で、LF タグとアクセス許可 を選択します。

  3. [Add LF-Tag] (LF タグを追加) を選択します。

LF タグをターゲットリソースに割り当てる

LF タグをターゲットリソースに割り当て、データの許可を別のアカウントに付与する

データレイク管理者は、タグをリソースにアタッチできます。別のロールを使用する場合は、describe (記述) の許可と attach (アタッチ) の許可を別々のロールに付与する必要があります。

  1. ナビゲーションペインの [Data Catalog] で、[Databases] (データベース) を選択します。

  2. ターゲットデータベース (lakeformation_tutorial_cross_account_database_tbac) を選択し、[アクション] メニューの [LF タグの編集] を選択します。

    このチュートリアルでは、データベースに LF タグを割り当てますが、テーブルおよび列に LF タグを割り当てることもできます。

  3. [Assign new LF-Tag] (新しい LF タグを割り当てる) を選択します。

  4. 値が publicConfidentiality を追加します。

  5. [Save] (保存) を選択します。

LF タグの許可をコンシューマーアカウントに付与する

プロデューサーアカウントで操作を続行し、LF タグへのアクセス許可をコンシューマーアカウントに付与します。

  1. ナビゲーションペインで、[アクセス許可] の [LF タグとアクセス許可] を選択します。

  2. LF タグタブを選択し、コンシューマーアカウントと共有されている LF タグのキー (キーConfidentiality ) を選択しますpublic

  3. [Grant permissions] (アクセス許可の付与) を選択します。

  4. アクセス許可タイプ では、LF タグキーと値のペアアクセス許可を選択します。

  5. [Principals] (プリンシパル) で、[External accounts] (外部アカウント) を選択します。

  6. ターゲットの AWS アカウント ID を入力します。

    AWS アカウント 同じ組織内の が自動的に表示されます。それ以外の場合は、 AWS アカウント ID を手動で入力する必要があります。

  7. アクセス許可 で、「 の説明」を選択します。

    これはコンシューマーアカウントに付与されるアクセス許可です。付与可能な許可は、コンシューマーアカウントが他のプリンシパルに付与できる許可です。

  8. [Grant] (付与) を選択します。

    この時点で、コンシューマーデータレイク管理者は、アクセス許可 LF タグ、アクセス許可 で、コンシューマーアカウント Lake Formation コンソールを介して共有されているポリシータグを見つけることができます。

データの許可をコンシューマーアカウントに付与する

ここで、データへのアクセス権をコンシューマーアカウントに付与します。そのためには、LF タグ式を指定し、この式に一致するテーブルまたはデータベースへのアクセス権をコンシューマーアカウントに付与します。

  1. ナビゲーションペインで、[Permissions] (許可)、[Data lake permissions] (データレイクの許可) の順に移動し、[Grant] (付与) を選択します。

  2. プリンシパル では、外部アカウント を選択し、ターゲット AWS アカウント ID を入力します。

  3. [LF タグまたはカタログリソース] で、コンシューマーアカウントと共有されている [LF タグ][キー] および [値] ([キー] Confidentiality および [値] public) を選択します。

  4. [許可] で、[LF タグに一致するリソース (推奨)][LF タグを追加] を選択します。

  5. コンシューマーアカウントと共有するタグの キーおよび (キー Confidentiality および値 public) を選択します。

  6. [Database permissions] (データベースの許可) で、[Database permissions] (データベースの許可) の [Describe] (記述) を選択して、データベースレベルでアクセス許可を付与します。

  7. コンシューマーデータレイク管理者は、Lake Formation コンソールのコンシューマーアカウントを介して、 アクセス許可https://console.aws.amazon.com/lakeformation/管理ロールとタスクLF タグ で共有されているポリシータグを見つけることができます。

  8. [Grantable permissions] (付与可能な許可) で [Describe] (記述) を選択し、コンシューマーアカウントがそのユーザーに対してデータベースレベルの許可を付与できるようにします。

  9. [Table and column permissions] (テーブルと列の許可) で [Select] (選択) を選択し、[Table permissions] (テーブルの許可) の [Describe] (記述) を選択します。

  10. [Select] (選択) を選択し、[Grantable permissions] (付与可能な許可) で [Describe] (記述) を選択します。

  11. [Grant] (付与) を選択します。

(オプション) データベース、テーブル、列に対する許可を IAMAllowedPrincipals から取り消す

このチュートリアルの最初に、Lake Formation の Data Catalog 設定を変更しました。その部分をスキップした場合は、このステップが必要です。Lake Formation の Data Catalog 設定を変更している場合は、このステップをスキップできます。

このステップでは、データベースまたはテーブルに対するデフォルトの Super 許可を IAMAllowedPrincipals から取り消す必要があります。詳細については、「ステップ 4: データストアを Lake Formation 許可モデルに切り替える」を参照してください。

のアクセス許可を取り消す前にIAMAllowedPrincipals、Lake Formation を通じて既存のIAMプリンシパルに必要なアクセス許可を付与していることを確認してください。これには、以下の 3 つのステップを使用します。

  1. Lake Formation GetDataAccessアクション (IAMポリシーを含む) を使用して、ターゲットIAMユーザーまたはロールにIAMアクセス許可を追加します。

  2. Lake Formation データアクセス許可 (変更、選択など) をターゲットIAMユーザーまたはロールに付与します。

  3. 次に、IAMAllowedPrincipals の許可を取り消します。それ以外の場合、 のアクセス許可を取り消すとIAMAllowedPrincipals、既存のIAMプリンシパルがターゲットデータベースまたは Data Catalog にアクセスできなくなる可能性があります。

    Lake Formation アクセス許可モデルを使用して、単一のアカウント内または複数のアカウント間でユーザーアクセスを管理するために Lake Formation アクセス許可モデル (IAMポリシーモデルではなく) を適用する場合は、 の Super アクセス許可を取り消すIAMAllowedPrincipals必要があります。従来のIAMポリシーモデルを維持する他のテーブルIAMAllowedPrincipalsの のアクセス許可を取り消す必要はありません。

    この時点で、コンシューマーアカウントデータレイク管理者は、https://console.aws.amazon.com/lakeformation/Data Catalog のデータベース の にある Lake Formation コンソールのコンシューマーアカウントを介して共有されているデータベースとテーブルを検索できるはずです。確認できない場合は、以下が適切に設定されているかどうかをチェックします。

    1. 正しいポリシータグおよび値がターゲットデータベースおよびテーブルに割り当てられている。

    2. 正しいタグの許可およびデータの許可がコンシューマーアカウントに割り当てられている。

    3. データベースまたはテーブルに対するデフォルトの Super 許可を IAMAllowedPrincipals から取り消している。

共有テーブルへのリソースリンクを作成する

リソースをアカウント間で共有すると、共有リソースはコンシューマーアカウントの Data Catalog に配置されません。これらをアクセス可能にして、共有テーブルの基になるデータに対して Athena などのサービスでクエリを実行するには、共有テーブルへのリソースリンクを作成する必要があります。リソースリンクは、ローカルまたは共有のデータベースやテーブルへのリンクである Data Catalog オブジェクトです。詳細については、「リソースリンクの作成」を参照してください。リソースリンクを作成することで、以下のことができます。

  • Data Catalog のリソース命名ポリシーに適合した別の名前をデータベースまたはテーブルに割り当てる。

  • Athena や Redshift Spectrum などのサービスを使用して、共有データベースやテーブルに対してクエリを実行する。

リソースリンクを作成するには、以下のステップを実行します。

  1. コンシューマーアカウントにサインインしている場合は、サインアウトします。

  2. コンシューマーアカウントのデータレイク管理者としてサインインします。 AWS CloudFormation スタックの作成時に指定したコンシューマーアカウント ID、IAMユーザー名 (デフォルト DatalakeAdminConsumer)、パスワードを使用します。

  3. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) のナビゲーションペインの Data Catalog、データベース で、共有データベース を選択しますlakeformation_tutorial_cross_account_database_tbac

    データベースが表示されない場合は、上記の手順に戻り、すべてが正しく設定されているかどうかを確認します。

  4. [View details] (詳細の表示) を選択します。

  5. 共有テーブル amazon_reviews_table_tbac を選択します。

  6. [Actions] (アクション) メニューで、[Create resource link] (リソースリンクの作成) を選択します。

  7. [Resource link name] (リソースリンク名) に名前 (このチュートリアルでは amazon_reviews_table_tbac_resource_link) を入力します。

  8. データベース で、リソースリンクが作成されるデータベースを選択します (この投稿では、 AWS CloudFormation n スタックがデータベース を作成しましたlakeformation_tutorial_cross_account_database_consumer)。

  9. [Create] (作成) を選択します。

    リソースリンクが [Data Catalog][Tables] (テーブル) の下に表示されます。

LF タグを作成してターゲットデータベースに割り当てる

Lake Formation のタグは、リソースと同じ Data Catalog 内に存在します。つまり、プロデューサーアカウントで作成したタグは、コンシューマーアカウントでリソースリンクへのアクセスを許可しても利用できません。コンシューマーアカウントでリソースリンクを共有する場合、LF タグベースのアクセスコントロールを使用するには、コンシューマアカウントで別個の LF タグのセットを作成する必要があります。

  1. コンシューマアカウントで LF タグを定義します。このチュートリアルでは、キーとして Division を使用し、値として salesmarketinganalyst を使用します。

  2. LF タグのキー Division および値 analyst を、リソースリンクを作成したデータベース lakeformation_tutorial_cross_account_database_consumer に割り当てます。

LF タグのデータ許可をコンシューマーに付与する

最後のステップとして、LF タグのデータ許可をコンシューマーに付与します。

  1. ナビゲーションペインで、[Permissions] (許可)、[Data lake permissions] (データレイクの許可) の順に移動し、[Grant](付与) を選択します。

  2. プリンシパル では、IAMユーザーとロール を選択し、ユーザー を選択しますDataAnalyst

  3. [LF タグまたはカタログリソース] で、[LF タグに一致するリソース] (推奨) を選択します。

  4. キーとして Divison、として analyst を選択します。

  5. [Database permissions] (データベースの許可) で、[Database permissions] (データベースの許可) の [Describe] (記述) を選択します。

  6. [Table and column permissions] (テーブルと列の許可) で、[Select] (選択) を選択し、[Table permissions] (テーブルの許可) の [Describe] (記述) を選択します。

  7. [Grant] (付与) を選択します。

  8. ユーザー DataAnalyst に対してこれらのステップを繰り返します。ここで、LF タグのキーは Confidentiality、値は public です。

    この時点で、コンシューマーアカウントのデータアナリストユーザーは、データベースとリソースリンクを検索し、 の Athena コンソールを介して共有テーブルをクエリできるはずですhttps://console.aws.amazon.com/athena/。見つからない場合は、以下が適切に設定されているかどうかを確認します。

    • 共有テーブルへのリソースリンクが作成されている

    • プロデューサーアカウントが共有する LF タグへのアクセスをユーザーに許可している

    • リソースリンク、およびリソースリンクを作成したデータベースに関連付けられた LF タグへのアクセスをユーザーに許可している

    • リソースリンク、およびリソースリンクを作成したデータベースに正しい LF タグが割り当てられているかどうかを確認する

ステップ 4: 名前付きリソース方式を実装する

名前付きリソース方式を使用するには、以下の大まかなステップに従います。

  1. (オプション) データベース、テーブル、列に対する許可を IAMAllowedPrincipals から取り消す

  2. データの許可をコンシューマーアカウントに付与する

  3. からリソース共有を受け入れます AWS Resource Access Manager。

  4. 共有テーブルへのリソースリンクを作成する

  5. 共有テーブルへのデータ許可をコンシューマーに付与する

  6. リソースリンクへのデータ許可をコンシューマーに付与する

(オプション) データベース、テーブル、列に対する許可を IAMAllowedPrincipals から取り消す
  • このチュートリアルの最初で、Lake Formation の Data Catalog 設定を変更しました。その部分をスキップした場合は、このステップが必要です。手順については、前のセクションのオプションのステップを参照してください。

データの許可をコンシューマーアカウントに付与する
  1. 注記

    プロデューサーアカウントに別のユーザーとしてサインインしている場合は、まずサインアウトします。

    AWS CloudFormation スタックの作成時に指定された AWS アカウント ID、IAMユーザー名 (デフォルトは DatalakeAdminProducer)、パスワードを使用して、プロデューサーアカウントデータレイク管理者https://console.aws.amazon.com/lakeformation/を使用して Lake Formation コンソールにサインインします。

  2. [Permissions] (許可) ページの [Data lake Permissions] (データレイクの許可) で、[Grant] (付与) を選択します。

  3. プリンシパル で、外部アカウント を選択し、1 つ以上の AWS アカウント IDs AWS 組織 を入力しますIDs。詳細については、「AWS Organizations」を参照してください。

    プロデューサーアカウントが属し、同じ組織 AWS アカウント 内の組織が自動的に表示されます。表示されない場合は、アカウント ID または組織 ID を手動で入力します。

  4. [LF タグまたはカタログリソース] で、Named data catalog resources を選択します。

  5. [Databases] (データベース) で、データベース lakeformation_tutorial_cross_account_database_named_resource を選択します。

  6. [Add LF-Tag] (LF タグを追加) を選択します。

  7. [Tables] (テーブル) で、[All tables] (すべてのテーブル) を選択します。

  8. [Table column permissions] (テーブル列の許可) で、[Select] (選択) を選択し、[Table permissions] (テーブルの許可) の [Describe] (記述) を選択します。

  9. [Select] (選択) を選択し、[Grantable permissions] (付与可能な許可) の [Describe] (記述) を選択します。

  10. (オプション) [Data permissions] (データの許可) で、列レベルの許可の管理が必要な場合は、[Simple column-based access] (シンプルな列ベースのアクセス) を選択します。

  11. [Grant] (付与) を選択します。

IAMAllowedPrincipals の許可を取り消していない場合は、Grant permissions (許可の付与) 失敗エラーが表示されます。この時点で、 のアクセス許可、データアクセス許可 で、 を介してコンシューマーアカウント AWS RAM と共有されているターゲットテーブルが表示されます。

からリソース共有を受け入れる AWS RAM
注記

このステップは、組織ベースの共有ではなく、 AWS アカウントベースの共有にのみ必要です。

  1. AWS CloudFormation スタックの作成時に指定されたIAMユーザー名 (デフォルトは DatalakeAdminConsumer) とパスワードを使用して、コンシューマーアカウントデータレイク管理者https://console.aws.amazon.com/connect/を使用して AWS コンソールにサインインします。

  2. AWS RAM コンソールのナビゲーションペインで、 リソース共有 の下にある 共有 Lake Formation リソースを選択します。[Status] (ステータス) は [Pending] (保留) になっているはずです。

  3. [Actions] (アクション)、[Grant] (付与) の順に選択します。

  4. リソースの詳細を確認し、[Accept resource share] (リソース共有を承認) を選択します。

    この時点で、コンシューマーアカウントデータレイク管理者は、データカタログ データベース の Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) で共有リソースを検索できるはずです。

共有テーブルへのリソースリンクを作成する
共有テーブルへのデータ許可をコンシューマーに付与する

共有テーブルへのデータ許可をコンシューマーに付与するには、以下のステップを実行します。

  1. Lake Formationconsole (https://console.aws.amazon.com/lakeformation/) で、 アクセス許可 データレイクアクセス許可 で、付与 を選択します。

  2. プリンシパル では、IAMユーザーとロール を選択し、ユーザー を選択しますDataAnalyst

  3. [LF タグまたはカタログリソース] で、[名前付きの Data Catalog リソース] を選択します。

  4. [Databases] (データベース) で、データベース lakeformation_tutorial_cross_account_database_named_resource を選択します。データベースがドロップダウンリストに表示されない場合は、[Load more] (さらにロード) を選択します。

  5. [Tables] (テーブル) で、テーブル amazon_reviews_table_named_resource を選択します。

  6. [Table and column permissions] (テーブルと列の許可) で、[Select] (選択) を選択し、[Table permissions] (テーブルの許可) の [Describe] (記述) を選択します。

  7. [Grant] (付与) を選択します。

リソースリンクへのデータ許可をコンシューマーに付与する

データレイクユーザーに対しては、共有テーブルへのアクセス許可だけでなく、リソースリンクへのアクセス許可も付与する必要があります。

  1. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) で、 アクセス許可 データレイクアクセス許可 で、付与 を選択します。

  2. プリンシパル では、IAMユーザーとロール を選択し、ユーザー を選択しますDataAnalyst

  3. [LF タグまたはカタログリソース] で、[名前付きの Data Catalog リソース] を選択します。

  4. [Databases] (データベース) で、データベース lakeformation_tutorial_cross_account_database_consumer を選択します。データベースがドロップダウンリストに表示されない場合は、[Load more] (さらにロード) を選択します。

  5. [Tables] (テーブル) で、テーブル amazon_reviews_table_named_resource_resource_link を選択します。

  6. [Resource link permissions] (リソースリンクの許可) で、[Resource link permissions] (リソースリンクの許可) の [Describe] (記述) を選択します。

  7. [Grant] (付与) を選択します。

    この時点で、コンシューマアカウントのデータアナリストユーザーは、データベースとリソースリンクを見つけて、Athena コンソールを介して共有テーブルにクエリを実行できるはずです。

    見つからない場合は、以下が適切に設定されているかどうかを確認します。

    • 共有テーブルへのリソースリンクが作成されている

    • プロデューサーアカウントが共有するテーブルへのアクセスをユーザーに許可している

    • リソースリンク、およびリソースリンクを作成したデータベースへのアクセスをユーザーに許可している

ステップ 5: AWS リソースをクリーンアップする

への不要な請求を防ぐために AWS アカウント、このチュートリアルに使用した AWS リソースを削除できます。

  1. プロデューサーアカウントhttps://console.aws.amazon.com/lakeformation/を使用して Lake Formation コンソールにサインインし、以下を削除または変更します。

    • AWS Resource Access Manager リソース共有

    • Lake Formation タグ

    • AWS CloudFormation スタック

    • Lake Formation 設定

    • AWS Glue Data Catalog

  2. コンシューマーアカウントhttps://console.aws.amazon.com/lakeformation/を使用して Lake Formation コンソールにサインインし、以下を削除または変更します。

    • Lake Formation タグ

    • AWS CloudFormation スタック