

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

# Lake Formation のきめ細かなアクセスコントロールを使用したデータレイクの共有
<a name="share-dl-fgac-tutorial"></a>

このチュートリアルでは、複数の AWS アカウント を AWS Organizations で管理する際に、Lake Formation を使用してデータセットをすばやく簡単に共有するためのステップバイステップの手順を提供します。機密データへのアクセスを制御するには、きめ細かな許可を定義します。

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

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

![\[AWS Organization structure with two OUs, showing data lake access and user permissions across accounts.\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/tutorial-fine-grained-access1.jpg)


**Topics**
+ [対象者](#tut-share-fine-grained-roles)
+ [前提条件](#tut-share-fine-grained-prereqs)
+ [ステップ 1: 別のアカウントに対してきめ細かなアクセスを提供する](#tut-fgac-another-account)
+ [ステップ 2: 同じアカウント内のユーザーにきめ細かなアクセスを提供する](#tut-fgac-same-account)

## 対象者
<a name="tut-share-fine-grained-roles"></a>



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


| ロール | 説明 | 
| --- | --- | 
| IAM 管理者 | AWS 管理ポリシーを持つユーザー: AdministratorAccess。 | 
| データレイク管理者 |  AWS 管理ポリシーを持つユーザー: ロールにアタッチされている `AWSLakeFormationDataAdmin`。  | 
| データアナリスト | AWS 管理ポリシーを持つユーザー: アタッチされている AmazonAthenaFullAccess。 | 

## 前提条件
<a name="tut-share-fine-grained-prereqs"></a>

このチュートリアルを開始する前に、適切なアクセス許可を持つ管理ユーザーとしてサインインするために使用できる AWS アカウント が必要です。詳細については、「[初期設定 AWS タスクを完了する](getting-started-setup.md#initial-aws-signup)」を参照してください。

このチュートリアルでは、ユーザーが IAM に精通していることを前提としています。IAM については、「[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)」を参照してください。

**このチュートリアルでは、以下のリソースが必要です。**
+ 2 つの組織単位
  + OU1 — アカウント A を含む
  + OU2 — アカウント B を含む
+ アカウント A の Amazon S3 データレイクのロケーション (バケット)
+ アカウント A のデータレイク管理者ユーザー。データレイク管理者は、Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) または Lake Formation API の `PutDataLakeSettings` 操作を使用して作成できます。
+ アカウント A に設定した Lake Formation と、アカウント A の Lake Formation に登録した Amazon S3 データレイクのロケーション。
+ 次の IAM マネージドポリシーを持つ、アカウント B の 2 人のユーザー。
  +  testuser1 — AWS マネージドポリシー `AWSLakeFormationDataAdmin` がアタッチされている。
  +  testuser2 — AWS マネージドポリシー `AmazonAthenaFullAccess` がアタッチされている。
+ アカウント B の Lake Formation データベース内のデータベース testdb。

## ステップ 1: 別のアカウントに対してきめ細かなアクセスを提供する
<a name="tut-fgac-another-account"></a>

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

**別のアカウントに対してきめ細かなアクセスを許可する**

1. アカウント A でデータレイク管理者として AWS マネジメントコンソール ([https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/)) にサインインします。

1. Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) を開き、**[Get started]** (今すぐ始める) を選択します。

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

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

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

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

1. **[Use only IAM access control for new tables in this database]** (このデータベース内の新しいテーブルには IAM アクセスコントロールのみを使用する) が選択されていることを確認します。これが選択されていないと、Lake Formation からアクセスをコントロールできます。

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

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

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

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

1. AWS アカウント ID または AWS 組織 ID として、OU2 のアカウント B のアカウント ID を入力します。

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

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

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

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

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

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

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

1. アクセスセクションの AWS アカウントと AWS 組織に 1 つのアクティブな接続が表示されます。

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

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

1. アカウント B で `testuser1` として、AWS コンソール ([https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/)) にサインインします。

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

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

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

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

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

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

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

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

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

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

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

## ステップ 2: 同じアカウント内のユーザーにきめ細かなアクセスを提供する
<a name="tut-fgac-same-account"></a>

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

**同じアカウント内のユーザーに対してきめ細かなアクセスを許可する**

1. アカウント B で `testuser1` として、AWS コンソール ([https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/)) にサインインします。

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

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

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

1.  **[IAM users and roles]** (IAM ユーザーおよびロール) で、ユーザー `testuser2` を選択します。

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

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

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

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

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

1. **[IAM users and roles]** (IAM ユーザーおよびロール) で、ユーザー `testuser2` を選択します。

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

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

1. アカウント B で `testuser2` として、AWS コンソールにサインインします。

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