

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

# Lake Formation のタグベースのアクセスコントロールを使用したデータレイクの管理
<a name="managing-dl-tutorial"></a>

何千ものお客様がペタバイト規模のデータレイクを構築しています AWS。これらのお客様の多くは AWS Lake Formation 、 を使用して、組織全体でデータレイクを簡単に構築および共有します。テーブルとユーザーの数が増えるに従って、データスチュワードや管理者は、大規模なデータレイクに対する許可を容易に管理する方法を模索しています。Lake Formation のタグベースのアクセスコントロール (LF-TBAC) は、データスチュワードが (データの分類とオントロジーに基づいて) *LF タグ*を作成し、これをリソースにアタッチできるようにすることで、この問題を解決します。

LF-TBAC は、属性に基づいて許可を定義する認可戦略です。これらの属性は、Lake Formation で LF タグと呼ばれています。LF タグは、Data Catalog リソースと Lake Formation プリンシパルにアタッチできます。データレイク管理者は、LF タグを使用して、Lake Formation リソースに対する許可を割り当てたり取り消したりできます。詳細については、「[Lake Formation のタグベースのアクセス制御](tag-based-access-control.md)」を参照してください。。

 このチュートリアルでは、 AWS パブリックデータセットを使用して Lake Formation タグベースのアクセスコントロールポリシーを作成する方法を示します。さらに、Lake Formation のタグベースのアクセスポリシーが関連付けられているテーブル、データベース、列に対してクエリを実行する方法も示します。

LF-TBAC は、以下のユースケースに使用できます。
+ データレイク管理者がアクセス権を付与する必要があるテーブルやプリンシパルが多数ある
+ オントロジーに基づいてデータを分類し、分類に基づいて許可を付与したい
+ データレイク管理者が、疎結合方式で許可を動的に割り当てることを希望している

LF-TBAC を使用して許可を設定するための高レベルのステップを以下に示します。

1. データスチュワードが、`Confidential` および `Sensitive` の 2 つの LF タグを使用してタグオントロジーを定義します。`Confidential=True` のデータは、アクセスコントロールが厳しくなります。`Sensitive=True` のデータは、アナリストによる特定の分析を必要とします。

1. データスチュワードは、複数の異なる許可レベルをデータエンジニアに割り当てることで、LF タグが異なる複数のテーブルを構築します。

1. データエンジニアは、`tag_database` および `col_tag_database` の 2 つのデータベースを構築します。`tag_database` 内のすべてのテーブルには `Confidential=True` が設定されます。`col_tag_database` 内のすべてのテーブルには `Confidential=False` が設定されます。`col_tag_database` 内のテーブルにある一部の列には、特定の分析ニーズに応じて `Sensitive=True` がタグ付けされます。

1. データエンジニアは、特定の式条件 (`Confidential=True`、`Confidential=False`、`Sensitive=True`) を持つテーブルに対する読み取り許可をアナリストに付与します。

1. この設定により、データアナリストは適切なデータを使用した分析の実行に集中できます。

**Topics**
+ [対象者](#tut-manage-dl-roles)
+ [前提条件](#tut-manage-dl-prereqs)
+ [ステップ 1: リソースをプロビジョニングする](#tut-manage-dl-provision-resources)
+ [ステップ 2: データのロケーションを登録し、LF タグオントロジーを作成して、アクセス許可を付与する](#tut-manage-dl-register-datalocation-lftag)
+ [ステップ 3: Lake Formation のデータベースを作成する](#tut-manage-dl-tbac-create-databases)
+ [ステップ 4: テーブルの許可を付与する](#tut-manage-dl-grant-table-permissions)
+ [ステップ 5: Amazon Athena でクエリを実行して許可を検証する](#tut-manage-dl-tbac-run-query)
+ [ステップ 6: AWS リソースをクリーンアップする](#tut-manage-dl-tbac-clean-up-db)

## 対象者
<a name="tut-manage-dl-roles"></a>



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

次の表は、このチュートリアルで使用するロールのリストです。


| ロール  | 説明 | 
| --- | --- | 
| データスチュワード (管理者) | lf-data-steward ユーザーには以下のアクセス権があります。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/managing-dl-tutorial.html)  | 
| データエンジニア | `lf-data-engineer` ユーザーには以下のアクセス権があります。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/managing-dl-tutorial.html) | 
| データアナリスト | lf-data-analyst ユーザーには以下のアクセス権があります。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/managing-dl-tutorial.html)  | 

## 前提条件
<a name="tut-manage-dl-prereqs"></a>

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

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

## ステップ 1: リソースをプロビジョニングする
<a name="tut-manage-dl-provision-resources"></a>

このチュートリアルには、クイックセットアップ用の AWS CloudFormation テンプレートが含まれています。このテンプレートを参照し、ニーズに合わせてカスタマイズできます。テンプレートでは、この演習を実行するための 3 つの異なるロール ([対象者](#tut-manage-dl-roles) を参照) を作成し、nyc-taxi-data データセットをローカル Amazon S3 バケットにコピーします。
+ Amazon S3 バケット
+ 適切な Lake Formation 設定
+ 適切な Amazon EC2 リソース
+ 認証情報を持つ 3 つの IAM ロール

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

1. 米国東部 (バージニア北部) リージョンの [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) で AWS CloudFormation コンソールにサインインします。

1. [[Launch Stack]](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?templateURL=https://aws-bigdata-blog.s3.amazonaws.com/artifacts/lakeformationtbac/cfn/tbac_permission.json) (スタックの起動) を選択します。

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

1.  **[User Configuration]** (ユーザーの設定) セクションで、3 つのロール (`DataStewardUserPassword`、`DataEngineerUserPassword`、`DataAnalystUserPassword`) のパスワードを入力します。

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

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

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

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

## ステップ 2: データのロケーションを登録し、LF タグオントロジーを作成して、アクセス許可を付与する
<a name="tut-manage-dl-register-datalocation-lftag"></a>

このステップでは、データスチュワードユーザーが 2 つの LF タグ (`Confidential` と `Sensitive`) を使用してタグオントロジーを定義し、新しく作成した LF タグをリソースにアタッチすることを特定の IAM プリンシパルに許可します。

**データのロケーションを登録し、LF タグオントロジーを定義する**

1. データスチュワードユーザー (`lf-data-steward`) として最初のステップを実行し、Lake Formation で Amazon S3 と Data Catalog のデータを検証します。

   1.  CloudFormation スタックのデプロイ時に使用したパスワード`lf-data-steward`を使用して、[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で Lake Formation コンソールにサインインします。

   1. ナビゲーションペインの **[Permissions]** (許可) で、**[Administrative roles and tasks]** (管理ロールおよびタスク) を選択します。

   1. **[データレイク管理者]** セクションで、**[追加]** を選択します。

   1. **[管理者を追加]** ページの **[IAM ユーザーとロール]** で、ユーザー `lf-data-steward` を選択します。

   1. **[Save]** (保存) を選択し、`lf-data-steward` を Lake Formation 管理者として追加します。

1. 次に、IAM ベースのアクセスコントロールではなく、Lake Formation の許可を使用してカタログリソースを制御するように、Data Catalog 設定を更新します。

   1. ナビゲーションペインの **[管理]** で、**[データカタログの設定]** を選択します。

   1. **[Use only IAM access control for new databases]** (新しいデータベースには IAM アクセスコントロールのみを使用する) チェックボックスをオフにします。

   1. **[Use only IAM access control for new tables in new databases]** (新しいデータベース内の新しいテーブルには IAM アクセスコントロールのみを使用する) チェックボックスをオフにします。

   1. **[保存]** をクリックします。

1. 次に、データレイクのデータのロケーションを登録します。

   1. ナビゲーションペインの **[管理]** で、**[データレイクのロケーション]** を選択します。

   1. **[Register location]** (ロケーションを登録) を選択します。

   1. **[ロケーションを登録]** ページで、**[Amazon S3 パス]** に `s3://lf-tagbased-demo-{{Account-ID}}` と入力します。

   1. **[IAM role]** (IAM ロール) は、デフォルト値 `AWSServiceRoleForLakeFormationDataAccess` のままにします。

   1. アクセス許可モードとして **[Lake Formation]** を選択します。

   1. **[Register location]** (ロケーションを登録) を選択します。

1. 次に、LF タグを定義してオントロジーを作成します。

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

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

   1. **[Key]** (キー) に「`Confidential`」と入力します。

   1. **[Values]** (値) で、`True` と `False` を追加します。

   1. **[Add LF-tag]** (LF タグを追加) を選択します。

   1. 同じ手順を繰り返して、`Sensitive` という **LF タグ**を作成し、値を `True` に設定します。

   これで、この演習に必要なすべての LF タグが作成されました。

**IAM ユーザーに許可を付与する**

1. 次に、新しく作成した LF タグをリソースにアタッチすることを特定の IAM プリンシパルに許可します。

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

   1. **[LF タグのアクセス許可]** セクションで、**[アクセス許可の付与]** を選択します。

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

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

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

   1. **[LF タグのアクセス許可スコープ]** で、値が `True` および `False` のキー `Confidential` と、値が `True` のキー `key` `Sensitive` を追加します。

   1. **[アクセス許可]** で、**[アクセス許可]** と **[付与可能なアクセス許可]** として **[記述]** と **[関連付け]** を選択します。

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

1. 次に、Data Catalog および によって作成された基盤となる Amazon S3 バケットにデータベースを作成するアクセス許可`lf-data-engineer`を に付与します AWS CloudFormation。

   1. ナビゲーションペインの **[管理]** で、**[管理ロールとタスク]** を選択します。

   1.  **[Database creators]** (データベース作成者) セクションで、**[Grant]** (付与) を選択します。

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

   1. **[Catalog permissions]** (カタログの許可) で、**[Create database]** (データベースを作成) を選択します。

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

1. 次に、Amazon S3 バケット `(s3://lf-tagbased-demo-{{Account-ID}})` に対する許可を `lf-data-engineer` ユーザーに付与します。

   1. ナビゲーションペインの **[Permissions]** (許可) で **[Data locations]** (データのロケーション) を選択します。

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

   1. **[My account]** (マイアカウント) を選択します。

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

   1. **ストレージの場所**には、 CloudFormation テンプレート によって作成された Amazon S3 バケットを入力します`(s3://lf-tagbased-demo-{{Account-ID}})`。

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

1. 次に、`lf-data-engineer` に、**LF タグ**式 `Confidential=True` に関連付けられたリソースに対する付与可能なアクセス許可を付与します。

   1. ナビゲーションペインの **[Permissions]** (許可) で **[Data lake permissions]** (データレイクの許可) を選択します。

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

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

   1.  ロール `lf-data-engineer` を選択します。

   1. **[LF タグまたはカタログリソース]** セクションで、**[LF タグに一致するリソース]** を選択します。

   1. **[LF タグのキーと値のペアを追加]** を選択します。

   1.  値が `True` のキー `Confidential` を追加します。

   1. [**Database permissions**] (データベースの許可) セクションで、[**Database permissions**] (データベースの許可) と [**Grantable permissions**] (付与可能な許可) の [**Describe**] (記述) を選択します。

   1. **[テーブルのアクセス許可]** セクションで、**[テーブルの許可]** と **[付与可能なアクセス許可]** の両方で **[記述]**、**[選択]**、**[変更]** を選択します。

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

1. 次に、`lf-data-engineer` に、LF タグ式 `Confidential=False` に関連付けられたリソースに対する付与可能なアクセス許可を付与します。

   1. ナビゲーションペインの **[Permissions]** (許可) で **[Data lake permissions]** (データレイクの許可) を選択します。

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

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

   1. ロール `lf-data-engineer` を選択します。

   1.  **[Resources matched by LF-tags]** (LF タグに一致するリソース) を選択します。

   1. **[Add LF-tag]** (LF タグを追加) を選択します。

   1.  値が `False` のキー `Confidential` を追加します。

   1. [**Database permissions**] (データベースの許可) セクションで、[**Database permissions**] (データベースの許可) と [**Grantable permissions**] (付与可能な許可) の [**Describe**] (記述) を選択します。

   1. **[Table and column permissions]** (テーブルと列の許可) セクションでは、何も選択しません。

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

1. 次に、`lf-data-engineer` に、**LF タグ**のキーと値のペア `Confidential=False` と `Sensitive=True` に関連付けられたリソースに対する付与可能なアクセス許可を付与します。

   1. ナビゲーションペインの **[Permissions]** (許可) で **[Data permissions]** (データの許可) を選択します。

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

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

   1. ロール `lf-data-engineer` を選択します。

   1. **[LF タグまたはカタログリソース]** セクションで、**[LF タグに一致するリソース]** を選択します。

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

   1.  値が `False` のキー `Confidential` を追加します。

   1. **[LF タグのキーと値のペアを追加]** を選択します。

   1. 値が `True` のキー `Sensitive` を追加します。

   1. [**Database permissions**] (データベースの許可) セクションで、[**Database permissions**] (データベースの許可) と [**Grantable permissions**] (付与可能な許可) の [**Describe**] (記述) を選択します。

   1. **[テーブルのアクセス許可]** セクションで、**[テーブルの許可]** と **[付与可能なアクセス許可]** の両方で **[記述]**、**[選択]**、**[変更]** を選択します。

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

## ステップ 3: Lake Formation のデータベースを作成する
<a name="tut-manage-dl-tbac-create-databases"></a>

このステップでは、2 つのデータベースを作成し、テスト目的でデータベースと特定の列に LF タグをアタッチします。

**データベースレベルのアクセス用にデータベースとテーブルを作成する**

1. 最初に、データベース `tag_database` とテーブル `source_data` を作成し、適切な LF タグをアタッチします。

   1. Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) の **[データカタログ]** で、**[データベース]** を選択します。

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

   1. **[Name]** (名前) に「`tag_database`」と入力します。

   1. **Location** には、 CloudFormation テンプレート によって作成された Amazon S3 の場所を入力します`(s3://lf-tagbased-demo-{{Account-ID}}/tag_database/)`。

   1. **[Use only IAM access control for new tables in this database]** (このデータベース内の新しいテーブルには IAM アクセスコントロールのみを使用する) を選択解除します。

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

1. 次に、`tag_database` 内に新しいテーブルを作成します。

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

   1.  **[View tables]** (テーブルの表示) を選択し、**[Create table]** (テーブルを作成) をクリックします。

   1. **[Name]** (名前) に「`source_data`」と入力します。

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

   1. Table **format** で、**Standard AWS Glue table** を選択します。

   1. **[Data is located in]** (データの場所) で、**[Specified path in my account]** (自分のアカウントで指定したパス) を選択します。

   1. 含めるパス に、 CloudFormation テンプレート によって`tag_database`作成された へのパスを入力します`(s3://lf-tagbased-demo{{Account-ID}}/tag_database/)`。

   1. **[Data format]** (データ形式) で、**[CSV]** を選択します。

   1. **[Upload schema]** (スキーマのアップロード) で、次の JSON 配列の列構造を入力してスキーマを作成します。

      ```
       [
                     {
                          "Name": "vendorid",
                          "Type": "string"
                     },
                     {
                          "Name": "lpep_pickup_datetime",
                          "Type": "string"                    
                     },
                     {
                          "Name": "lpep_dropoff_datetime",
                          "Type": "string"  
                    
                     },
                        {
                          "Name": "store_and_fwd_flag",
                          "Type": "string"                                
                     },
                        {
                          "Name": "ratecodeid",
                          "Type": "string"                   
                          
                     },
                        {
                          "Name": "pulocationid",
                          "Type": "string"                   
                          
                     },
                     {
                          "Name": "dolocationid",
                          "Type": "string"                   
                          
                     },
                        {
                          "Name": "passenger_count",
                          "Type": "string"                   
                          
                     },
                     {
                          "Name": "trip_distance",
                          "Type": "string"                    
                          
                     }, 
                        {
                          "Name": "fare_amount",
                          "Type": "string"                   
                          
                     },
                     {
                          "Name": "extra",
                          "Type": "string"                   
                          
                     },
                        {
                          "Name": "mta_tax",
                          "Type": "string"                    
                          
                     },
                     {
                          "Name": "tip_amount",
                          "Type": "string"                   
                          
                     },
                        {
                          "Name": "tolls_amount",
                          "Type": "string"                   
                          
                     },
                     {
                          "Name": "ehail_fee",
                          "Type": "string"                    
                          
                     }, 
                     {
                          "Name": "improvement_surcharge",
                          "Type": "string"                   
                          
                     },
                     {
                          "Name": "total_amount",
                          "Type": "string"                    
                          
                     },
                     {
                          "Name": "payment_type",
                          "Type": "string"                    
                          
                     }
       ]
      ```

   1. **アップロード** を選択します。スキーマをアップロードすると、テーブルスキーマは次のスクリーンショットのようになります。  
![Vendorid、集荷および集荷日時、ロケーション IDs、料金の詳細など、すべての文字列データ型を含む 18 列のテーブルスキーマ。](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/tutorial-manage-dl-tbac1.jpg)

   1. [**Submit**] を選択してください。

1. 次に、データベースレベルで LF タグをアタッチします。

   1. **[Databases]** (データベース) ページで、`tag_database` を見つけて選択します。

   1. **[アクション]** メニューで、**[LF タグの編集]** を選択します。

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

   1. **[割り当てられたキー]** で、以前に作成した `Confidential` LF タグを選択します。

   1. **[Values]** (値) で、`True` を選択します。

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

   これで、tag\_database データベースへの LF タグの割り当ては完了です。

**列レベルのアクセス用にデータベースとテーブルを作成する**

以下の手順を繰り返して、データベース `col_tag_database` とテーブル `source_data_col_lvl` を作成し、列レベルで LF タグをアタッチします。

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

1. **[Name]** (名前) に「`col_tag_database`」と入力します。

1. **Location** には、 CloudFormation テンプレート によって作成された Amazon S3 の場所を入力します`(s3://lf-tagbased-demo-{{Account-ID}}/col_tag_database/)`。

1. **[Use only IAM access control for new tables in this database]** (このデータベース内の新しいテーブルには IAM アクセスコントロールのみを使用する) を選択解除します。

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

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

1. **[テーブルを表示]** を選択し、**[テーブルを作成]** をクリックします。

1. [**名前**] に`source_data_col_lvl`と入力してください。

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

1. Table **format** で、**Standard AWS Glue table** を選択します。

1. **[Data is located in]** (データの場所) で、**[Specified path in my account]** (自分のアカウントで指定したパス) を選択します。

1. `col_tag_database` `(s3://lf-tagbased-demo-{{Account-ID}}/col_tag_database/)` に Amazon S3 パスを入力します。

1. **[Data format]** (データ形式) で、`CSV` を選択します。

1. `Upload schema` の下に、次のスキーマ JSON を入力します。

   ```
   [
                  {
                       "Name": "vendorid",
                       "Type": "string"
                       
                       
                  },
                  {
                       "Name": "lpep_pickup_datetime",
                       "Type": "string"
                       
                       
                  },
                  {
                       "Name": "lpep_dropoff_datetime",
                       "Type": "string"
                       
                       
                  },
                     {
                       "Name": "store_and_fwd_flag",
                       "Type": "string"
                       
                       
                  },
                     {
                       "Name": "ratecodeid",
                       "Type": "string"
                       
                       
                  },
                     {
                       "Name": "pulocationid",
                       "Type": "string"
                       
                       
                  },
                  {
                       "Name": "dolocationid",
                       "Type": "string"
                       
                       
                  },
                     {
                       "Name": "passenger_count",
                       "Type": "string"
                       
                       
                  },
                  {
                       "Name": "trip_distance",
                       "Type": "string"
                       
                       
                  }, 
                     {
                       "Name": "fare_amount",
                       "Type": "string"
                       
                       
                  },
                  {
                       "Name": "extra",
                       "Type": "string"
                       
                       
                  },
                     {
                       "Name": "mta_tax",
                       "Type": "string"
                       
                       
                  },
                  {
                       "Name": "tip_amount",
                       "Type": "string"
                       
                       
                  },
                     {
                       "Name": "tolls_amount",
                       "Type": "string"
                       
                       
                  },
                  {
                       "Name": "ehail_fee",
                       "Type": "string"
                       
                       
                  }, 
                  {
                       "Name": "improvement_surcharge",
                       "Type": "string"
                       
                       
                  },
                  {
                       "Name": "total_amount",
                       "Type": "string"
                       
                       
                  },
                  {
                       "Name": "payment_type",
                       "Type": "string"
                       
                       
                  }
   ]
   ```

1. `Upload` を選択してください。スキーマをアップロードすると、テーブルスキーマは次のスクリーンショットのようになります。  
![Vendorid、集荷および集荷日時、運賃額を含む 18 列のテーブルスキーマ。](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/tutorial-manage-dl-tbac2.jpg)

1. **[Submit]** (送信) を選択して、テーブルの作成を完了します。

1. 次に、`Sensitive=True` LF タグを列 `vendorid` および `fare_amount` に関連付けます。

   1. **[Tables]** (テーブル) ページで、`(source_data_col_lvl)` で作成したテーブルを選択します。

   1. **[アクション]** メニューで、**[スキーマ]** を選択します。

   1. 列 `vendorid` を選択し、**[LF タグの編集]** を選択します。

   1. **[Assigned keys]** (割り当てられたキー) で、**[Sensitive]** (機密) を選択します。

   1.  **[Values]** (値) で、**True** を選択します。

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

1. 次に、`Confidential=False` LF タグを `col_tag_database` に関連付けます。これは、 がログイン`col_tag_database`時にデータベースを記述できるようにするため`lf-data-analyst`に必要です Amazon Athena。

   1. **[Databases]** (データベース) ページで、`col_tag_database` を見つけて選択します。

   1. **[アクション]** メニューで、**[LF タグの編集]** を選択します。

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

   1. **[割り当てられたキー]** で、以前に作成した `Confidential` LF タグを選択します。

   1. **[Values]** (値) で、`False` を選択します。

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

## ステップ 4: テーブルの許可を付与する
<a name="tut-manage-dl-grant-table-permissions"></a>

LF タグ `Confidential` および `Sensitive` を使用して、データベース `tag_database` とテーブル `col_tag_database` の使用許可をデータアナリストに付与します。

1. LF タグ `Confidential=True` (データベース: tag\_database) に関連付けられたオブジェクトへのアクセス許可を `lf-data-analyst` ユーザーに付与して、データベースの `Describe` (記述) とテーブルの `Select` (選択) を許可するには、以下の手順に従います。

   1. Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) に `lf-data-engineer` としてサインインします。

   1. **[アクセス許可]** で、**[データレイクのアクセス許可]** を選択します。

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

   1. **[Principals]** (プリンシパル) で、**[IAM users and roles]** (IAM ユーザーおよびロール) を選択します。

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

   1. **[LF タグまたはカタログリソース]** で、**[LF タグに一致するリソース]** を選択します。

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

   1. **[Key]** (キー) で、`Confidential` を選択します。

   1. **[Values]** (値) で、`True` を選択します。

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

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

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

1. 次に、同じ手順を繰り返して、LF タグ式 `Confidential=False` に対するアクセス許可をデータアナストに付与します。この **LF タグ**は、Amazon Athena から `lf-data-analyst` としてログインしたときに、`col_tag_database` とテーブル `source_data_col_lvl` を記述するために使用します。

   1. Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) に `lf-data-engineer` としてサインインします。

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

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

   1. **[Principals]** (プリンシパル) で、**[IAM users and roles]** (IAM ユーザーおよびロール) を選択します。

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

   1. **[LF タグに一致するリソース]** を選択します。

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

   1. **[Key]** (キー) で、`Confidential` を選択します。

   1.  **[Values]** (値) で、`False` を選択します。

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

   1. **[Table permissions]** (テーブルの許可) では、何も選択しません。

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

1. 次に、同じ手順を繰り返して、LF タグ式 `Confidential=False` と `Sensitive=True` に対するアクセス許可をデータアナストに付与します。この LF タグは、Amazon Athena から `lf-data-analyst` としてログインしたときに、`col_tag_database` とテーブル `source_data_col_lvl` (列レベル) を記述するために使用します。

   1. Lake Formation コンソール ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) に `lf-data-engineer` としてサインインします。

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

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

   1. **[Principals]** (プリンシパル) で、**[IAM users and roles]** (IAM ユーザーおよびロール) を選択します。

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

   1. **[LF タグに一致するリソース]** を選択します。

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

   1. **[Key]** (キー) で、`Confidential` を選択します。

   1. **[Values]** (値) で、`False` を選択します。

   1. **[Add LF-tag]** (LF タグを追加) を選択します。

   1. **[Key]** (キー) で、`Sensitive` を選択します。

   1. **[Values]** (値) で、`True` を選択します。

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

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

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

## ステップ 5: Amazon Athena でクエリを実行して許可を検証する
<a name="tut-manage-dl-tbac-run-query"></a>

このステップでは、Amazon Athena を使用して 2 つのテーブル `(source_data and source_data_col_lvl)` に対して `SELECT` クエリを実行します。クエリ結果の場所 `(s3://lf-tagbased-demo-{{Account-ID}}/athena-results/)` として Amazon S3 パスを使用します。

1. Athena コンソール ([https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)) に `lf-data-analyst` としてサインインします。

1. Athena クエリエディタの左側のパネルで、`tag_database` を選択します。

1. `source_data` の横にある追加のメニューオプションアイコン (縦の 3 つのドット) を選択し、**[Preview table]** (テーブルのプレビュー) を選択します。

1. **[Run query]** (クエリの実行) を選択します。

   クエリの実行には数分かかることがあります。このクエリでは、すべての列が出力に表示されます。LF タグがデータベースレベルで関連付けられていて、`source_data` テーブルはデータベース `tag_database` から `LF-tag` を自動的に継承しているためです。

1. `col_tag_database` と `source_data_col_lvl` を使用して別のクエリを実行します。

   2 番目のクエリは、`Non-Confidential` および `Sensitive` としてタグ付けされた 2 つの列を返します。

1. また、ポリシーの許可を持たない列に対する Lake Formation のタグベースのアクセスポリシーの動作を確認することもできます。テーブル `source_data_col_lvl` からタグなしの列を選択すると、Athena はエラーを返します。例えば、次のクエリを実行すると、タグなしの列 `geolocationid` が選択されます。

   ```
   SELECT geolocationid FROM "col_tag_database"."source_data_col_lvl" limit 10;
   ```

## ステップ 6: AWS リソースをクリーンアップする
<a name="tut-manage-dl-tbac-clean-up-db"></a>

に不要な料金が発生しないように AWS アカウント、このチュートリアルで使用した AWS リソースを削除できます。

1. Lake Formation コンソールに `lf-data-engineer` としてサインインし、データベース `tag_database` および `col_tag_database` を削除します。

1. 次に、`lf-data-steward` としてサインインし、上で `lf-data-engineer` および `lf-data-analyst.` に対して付与したすべての **LF タグの許可**、**データの許可**、**データのロケーションの許可**を消去します。

1.  CloudFormation スタックのデプロイに使用した IAM 認証情報を使用して、アカウント所有者として Amazon S3 コンソールにサインインします。

1. 以下のバケットを削除します。
   + lf-tagbased-demo-accesslogs-{{acct-id}}
   + lf-tagbased-demo-{{acct-id}}

1. [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) で CloudFormation コンソールにサインインし、作成したスタックを削除します。スタックステータスが `DELETE_COMPLETE` に変わるまで待ちます。