Lake Formation のきめ細かなアクセスコントロールを使用したデータレイクの共有 - AWS Lake Formation

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

Lake Formation のきめ細かなアクセスコントロールを使用したデータレイクの共有

このチュートリアルでは、 AWS アカウント で複数の を管理するときに Lake Formation を使用してデータセットをすばやく簡単に共有する方法 step-by-step を説明します AWS Organizations。機密データへのアクセスを制御するには、きめ細かな許可を定義します。

次の手順では、アカウント A のデータレイク管理者がアカウント B に対してきめ細かなアクセスを付与する方法と、アカウント B のユーザーがデータスチュワードとしてアカウント内の他のユーザーに対して共有テーブルへのきめ細かなアクセスを許可する方法も示します。各アカウント内のデータスチュワードは、独自のユーザーに個別にアクセスを委任し、各チームまたは事業部門 (LOB) に自律性を付与できます。

ユースケースでは、 AWS Organizations を使用して を管理していることを前提としています AWS アカウント。1 つの組織単位 (OU1) のアカウント A のユーザーは、 のアカウント B のユーザーにアクセス権を付与しますOU2。Organizations を使用していない場合 (少数のアカウントしか持っていない場合など) でも、同じアプローチを使用できます。次の図は、データレイク内でのデータセットに対するきめ細かなアクセスコントロールを示しています。データレイクは、アカウント A にあります。アカウント A のデータレイク管理者は、アカウント B に対してきめ細かなアクセス権を提供しています。この図は、アカウント B のユーザーがアカウント A のデータレイクテーブルの列レベルのアクセス権をアカウント B の別のユーザーに提供していることも示しています。

AWS Organization structure with two OUs, showing data lake access and user permissions across accounts.

対象者

このチュートリアルは、データスチュワード、データエンジニア、データアナリストを対象としています。次の表は、このチュートリアルで使用するロールのリストです。

ロール 説明
IAM 管理者 AWS 管理ポリシーを持つユーザー: AdministratorAccess
データレイク管理者

AWS マネージドポリシーを持つユーザー: ロールにAWSLakeFormationDataAdminアタッチされています。

データアナリスト AWS マネージドポリシー: がAmazonAthenaFullAccessアタッチされているユーザー。

前提条件

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

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

このチュートリアルでは、以下のリソースが必要です。
  • 2 つの組織単位

    • OU1 – アカウント A を含む

    • OU2 – アカウント B を含む

  • アカウント A の Amazon S3 データレイクのロケーション (バケット)

  • アカウント A のデータレイク管理者ユーザー。データレイク管理者は、Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) または Lake Formation の PutDataLakeSettingsオペレーションを使用して作成できますAPI。

  • アカウント A に設定した Lake Formation と、アカウント A の Lake Formation に登録した Amazon S3 データレイクのロケーション。

  • 以下のIAM管理ポリシーを持つアカウント B の 2 人のユーザー:

    • testuser1 – AWS 管理ポリシーがAWSLakeFormationDataAdminアタッチされています。

    • testuser2 – AWS マネージドポリシーがAmazonAthenaFullAccessアタッチされています。

  • アカウント B の Lake Formation データベース内のデータベース testdb。

ステップ 1: 別のアカウントに対してきめ細かなアクセスを提供する

アカウント A のデータレイク管理者がアカウント B に対してきめ細かなアクセスを提供する方法について学習します。

別のアカウントに対してきめ細かなアクセスを許可する
  1. データレイク管理者として、アカウント A AWS Management Console https://console.aws.amazon.com/connect/の で にサインインします。

  2. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を開き、開始する を選択します。

  3. ナビゲーションペインで、データベース を選択します。

  4. [Create database] (データベースを作成) を選択します。

  5. [Database] (データベース) の詳細セクションで、[Database] (データベース) を選択します。

  6. [Name] (名前) に名前を入力します (このチュートリアルでは sampledb01 を使用します)。

  7. このデータベースの新しいテーブルのIAMアクセスコントロールのみを使用するが選択されていないことを確認してください。これが選択されていないと、Lake Formation からアクセスをコントロールできます。

  8. [データベースの作成] を選択します。

  9. [Database] (データベース) ページで、データベース sampledb01 を選択します。

  10. [Actions] (アクション) メニューで、[Grant] (付与) を選択します。

  11. [Grant permissions] (許可の付与) セクションで、[External account (外部アカウント) を選択します。

  12. AWS アカウント ID または AWS 組織 ID の場合は、 にアカウント B のアカウント ID を入力しますOU2。

  13. [Table] (テーブル) で、アカウント B にアクセスを許可するテーブルを選択します (このチュートリアルでは、テーブル acc_a_area を使用します)。オプションとして、テーブル内の列へのアクセスを許可することもできます (このチュートリアルでは、これを行います)。

  14. [Include columns] (列を含める) で、アカウント B にアクセスを許可する列を選択します (このチュートリアルでは、タイプ、名前、識別子への許可を付与します)。

  15. [Columns] (列) で、[Include columns] (列を含める) を選択します。

  16. [Table permissions] (テーブルの許可) で、[Select] (選択) を選択します。

  17. [Grantable permissions] (付与可能な許可) で、[Select] (選択) を選択します。付与可能な許可を設定することで、アカウント B の管理者ユーザーはアカウント B の他のユーザーに許可を付与できるようになります。

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

  19. ナビゲーションペインで、[Tables (テーブル)] を選択します。

  20. アクセスセクションがある AWS アカウント および AWS 組織には、アクティブな接続が 1 つ表示されます。

リソースリンクを作成する

Amazon Athena などの統合サービスは、複数のアカウントをまたいでデータベースやテーブルに直接アクセスできません。したがって、リソースリンクを作成する必要があります。Athena がアカウント内のリソースリンクを使用して、他のアカウントのデータベースやテーブルにアクセスできるようにします。テーブル (acc_a_area) へのリソースリンクを作成し、アカウント B のユーザーが Athena を使用してデータをクエリできるようにします。

  1. アカウント B の https://console.aws.amazon.com/connect/で AWS コンソールに としてサインインしますtestuser1

  2. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) のナビゲーションペインで、テーブル を選択します。アカウント A がアクセスを提供しているテーブルが表示されます。

  3. テーブル acc_a_area を選択します。

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

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

  6. [Database] (データベース) で、データベース (testdb) を選択します。

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

  8. ナビゲーションペインで、[Tables] (テーブル) を選択します。

  9. テーブル acc_b_area_rl を選択します。

  10. [Actions] (アクション) メニューで、[View data] (データの表示) を選択します。

    Athena コンソールにリダイレクトされ、データベースとテーブルが表示されます。

    これで、テーブルに対してクエリを実行し、アカウント B から testuser1 にアクセスを許可した先の列値を確認できます。

ステップ 2: 同じアカウント内のユーザーにきめ細かなアクセスを提供する

このセクションでは、アカウント B のユーザー(testuser1) がデータスチュワードとして同じアカウント内の別のユーザー (testuser2) に対し、共有テーブル aac_b_area_rl 内の列名へのきめ細かなアクセスを提供する方法を示します。

同じアカウント内のユーザーに対してきめ細かなアクセスを許可する
  1. アカウント B の https://console.aws.amazon.com/connect/で AWS コンソールに としてサインインしますtestuser1

  2. Lake Formation コンソールのナビゲーションペインで、[Tables] (テーブル) を選択します。

    テーブルに対する許可は、リソースリンクを使用して付与できます。これを実行するには、[Tables] (テーブル) ページでリソースリンク acc_b_area_rl を選択し、[Actions] (アクション) メニューで、[Grant on target] (ターゲットに対して付与) を選択します。

  3. [Grant permissions] (許可の付与) セクションで、[My account] (マイアカウント) を選択します。

  4. IAM ユーザーとロールの場合は、ユーザー を選択しますtestuser2

  5. [Column] (列) で、列名を選択します。

  6. [Table permissions] (テーブルの許可) で、[Select] (選択) を選択します。

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

    リソースリンクの作成後は、作成したユーザーのみがそのリンクを表示してアクセスできます。アカウント内の他のユーザーにリソースリンクへのアクセスを許可するには、リソースリンク自体に対する許可を付与する必要があります。DESCRIBE または アクセスDROP許可を付与する必要があります。[Tables] (テーブル) ページでテーブルを再び選択し、[Actions] (アクション) メニューで [Grant] (付与) を選択します。

  8. [Grant permissions] (許可の付与) セクションで、[My account] (マイアカウント) を選択します。

  9. IAM ユーザーとロール では、ユーザー を選択しますtestuser2

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

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

  12. アカウント B の AWS コンソールに としてサインインしますtestuser2

    Athena コンソール (https://console.aws.amazon.com/athena/) には、データベースとテーブル が表示されますacc_b_area_rl。これで、テーブルに対してクエリを実行し、testuser2 からアクセス可能となった列値を確認できます。