

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

# 基盤となるデータのアクセスコントロール
<a name="access-control-underlying-data"></a>

統合された AWS サービスが、アクセスが制御されている Amazon S3 ロケーションのデータへのアクセスをリクエストすると AWS Lake Formation、Lake Formation はデータにアクセスするための一時的な認証情報を提供します。

Amazon S3 の場所にある基盤となるデータへのアクセスを Lake Formation が制御できるようにするには、Lake Formation にその場所を*登録*します。

Amazon S3 ロケーションを登録したら、以下の Lake Formation 許可の付与を開始できます。
+ そのロケーションをポイントする Data Catalog テーブルに対するデータアクセス許可 (`SELECT`、`INSERT`、および `DELETE)`)。
+ そのロケーションに対するデータロケーション許可。

Lake Formation のデータロケーション許可は、特定の Amazon S3 ロケーションをポイントする Data Catalog リソースを作成する機能を制御します。データロケーション許可は、データレイク内のロケーションのセキュリティをさらに強化します。プリンシパルに `CREATE_TABLE` または `ALTER` 許可を付与するときは、プリンシパルがメタデータテーブルの作成または変更を実行できるロケーションを制限するためのデータロケーション許可も付与します。

Amazon S3 ロケーションは、バケット、またはバケット下のプレフィックスで、個々の Amazon S3 オブジェクトではありません。

データロケーション許可は、Lake Formation コンソール、API、または AWS CLIを使用してプリンシパルに付与することができます。付与の一般的な形式は以下のとおりです。

```
grant DATA_LOCATION_ACCESS to principal on S3 location [with grant option]
```

`with grant option` を含めると、付与対象者は他のプリンシパルに許可を付与することができます。

Lake Formation のアクセス許可は常に、きめ細かなアクセスコントロールのための AWS Identity and Access Management (IAM) アクセス許可と組み合わせて機能することを覚えておいてください。基盤となる Amazon S3 データに対する読み取り/書き込み許可では、IAM 許可が以下のように付与されます。

ロケーションを登録するときは、そのロケーションに対する読み取り/書き込み許可を付与する IAM ロールを指定します。Lake Formation は、統合 AWS サービスに一時的な認証情報を提供するときに、そのロールを引き受けます。典型的なロールには、以下のようなポリシーがアタッチされている場合があります。このポリシーの登録済みロケーションはバケット `awsexamplebucket` です。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        }
    ]
}
```

------

Lake Formation は、このようなポリシーを自動的に作成するために登録時に使用できる、サービスリンクロールを提供します。詳細については、「[Lake Formation のサービスリンクロールの使用](service-linked-roles.md)」を参照してください。

このため、Amazon S3 ロケーションの登録によって、そのロケーションに対する必要な IAM `s3:` 許可が付与され、この許可は、ロケーションの登録に使用されたロールによって指定されます。

**重要**  
**[Requester pays]** (リクエスタ支払い) が有効になっている Amazon S3 バケットの登録は避けてください。Lake Formation に登録されたバケットの場合、バケットの登録に使用されるロールは常にリクエスト元であると見なされます。バケットが別の AWS アカウントからアクセスされた場合、ロールがバケット所有者と同じアカウントに属している場合、バケット所有者はデータアクセスに対して課金されます。

基盤となるデータへの読み取り/書き込みアクセスの場合、プリンシパルには、Lake Formation アクセス許可に加えて以下の `lakeformation:GetDataAccess` IAM アクセス許可も必要になります。この許可があると、Lake Formation がデータにアクセスするための一時的な認証情報のリクエストを承諾します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "lakeformation:GetDataAccess",
            "Resource": "*"
        }
    ]
}
```

------

 上記のポリシーでは、リソースパラメータを「\$1」(すべて) に設定する必要があります。このアクセス許可に他のリソースを指定することはサポートされていません。この設定により、Lake Formation はデータレイク環境全体のデータアクセスを効率的に管理できます。

**注記**  
Amazon Athena では、ユーザーに `lakeformation:GetDataAccess` アクセス許可が必要です。他の統合サービスでは、基盤となる実行ロールに `lakeformation:GetDataAccess` アクセス許可が必要です。

この許可は、「[Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)」で提案されているポリシーに含まれています。

要約すると、Lake Formation プリンシパルが Lake Formation 許可でアクセス制御されている基盤となるデータに対する読み取りと書き込みを実行できるようにするには、以下が必要になります。
+ データが含まれる Amazon S3 ロケーションを Lake Formation に登録します。
+ 基盤となるデータのロケーションをポイントする Data Catalog テーブルを作成するプリンシパルにデータロケーション許可があること。
+ 基盤となるデータに対する読み取りと書き込みを実行するプリンシパルに、基盤となるデータのロケーションをポイントする Data Catalog テーブルに対する Lake Formation データアクセス許可があること。
+ 基礎となるデータロケーションが Lake Formation に登録されているとき、基礎となるデータを読み書きするプリンシパルには `lakeformation:GetDataAccess` IAM アクセス許可が必要です。

**注記**  
ユーザーが IAM または Amazon S3 ポリシーを通して Amazon S3 ロケーションへのアクセス権を得ている場合、Lake Formation 許可モデルは、Amazon S3 API またはコンソール経由でのそれらのロケーションへのアクセスを阻止しません。IAM ポリシーをプリンシパルにアタッチして、このアクセスをブロックすることができます。

**データロケーションアクセス許可の詳細**  
データロケーション許可は、Data Catalog データベースとテーブルに対する作成および更新操作の結果を制御します。ルールは以下のとおりです。
+ プリンシパルが Amazon S3 ロケーションを指定するデータベースまたはテーブルを作成または更新するには、そのロケーションに対する明示的または黙示的なデータロケーション許可を持っている必要があります。
+ 明示的なアクセス許可`DATA_LOCATION_ACCESS`は、 コンソール、API、または を使用して付与されます AWS CLI。
+ 黙示的な許可は、登録されたロケーションをポイントするロケーションプロパティがデータベースにあり、プリンシパルがそのデータベースに対する `CREATE_TABLE` 許可を持っていて、プリンシパルがそのロケーションまたは子ロケーションでテーブルを作成しようとするときに付与されます。
+ そのロケーションに対するデータロケーション許可がプリンシパルに付与されている場合、プリンシパルはすべての子ロケーションに対するデータロケーション許可を持っています。
+ プリンシパルに、基盤となるデータに対する読み取り/書き込み操作を実行するためのデータロケーション許可は必要ありません。`SELECT` または `INSERT` データアクセス許可があれば十分です。データロケーション許可は、そのロケーションをポイントする Data Catalog リソースの作成のみに適用されます。

以下の図にあるシナリオを考えてみましょう。

![\[フォルダ階層と、データベース A と B の 2 つのデータベースがあり、データベース B が Customer service (カスタマーサービス) フォルダをポイントしています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/location-permissions-example.png)


この図では、以下のようになっています。
+ Amazon S3 バケット `Products`、`Finance`、および `Customer Service` が Lake Formation に登録されている。
+ `Database A` にはロケーションプロパティがなく、`Database B` には `Customer Service` バケットをポイントするロケーションプロパティがある。
+ ユーザー `datalake_user` が両方のデータベースに対する `CREATE_TABLE` を持っている。
+ ユーザー `datalake_user` には、`Products` バケットのみに対するデータロケーション許可が付与されている。

以下は、ユーザー `datalake_user` が特定のロケーションで特定のデータベース内にカタログテーブルを作成しようとする場合の結果です。


**`datalake_user` がテーブルを作成しようとするロケーション**  

| データベースとロケーション | 成功または失敗 | 理由 | 
| --- | --- | --- | 
| Finance/Sales でのデータベース A | 失敗 | データロケーション許可がない | 
| Products でのデータベース A | 成功 | データロケーション許可がある | 
| HR/Plans でのデータベース A | 成功 | ロケーションが登録されていない | 
| Customer Service/Incidents でのデータベース B | 成功 | データベースに Customer Service のロケーションプロパティがある | 

詳細については、次を参照してください。
+ [データレイクへの Amazon S3 ロケーションの追加](register-data-lake.md)
+ [Lake Formation 許可のリファレンス](lf-permissions-reference.md)
+ [Lake Formation のペルソナと IAM 許可のリファレンス](permissions-reference.md)