Lake Formation を使用したテーブルまたはデータベースへのアクセスの管理
テーブルバケットが AWS 分析サービスと統合された後、Lake Formation がテーブルリソースへのアクセスを管理します。Lake Formation は、データカタログリソースのきめ細かなアクセスコントロールを可能にする独自のアクセス許可モデル (Lake Formation 許可) を使用します。Lake Formation は、各 IAM プリンシパル (ユーザーまたはロール) に、Lake Formation が管理するリソースに対してアクションを実行する権限があることを必要とします。詳細については、AWS Lake Formation デベロッパーガイドの「Lake Formation 許可の概要」を参照してください。クロスアカウントデータ共有の詳細については、「AWS Lake Formation デベロッパーガイド」の「Lake Formation でのクロスアカウントデータ共有」を参照してください。
IAM プリンシパルが AWS 分析サービスのテーブルにアクセスする前に、それらのリソースに対する Lake Formation 許可を付与する必要があります。
テーブルバケット統合を実行したユーザーである場合は、テーブルに対する Lake Formation 許可が既に付与されています。テーブルにアクセスする唯一のプリンシパルである場合は、このステップをスキップできます。テーブルに対する Lake Formation 許可を他の IAM プリンシパルに付与するだけで済みます。これにより、クエリを実行するときに他のプリンシパルがテーブルにアクセスできるようになります。詳細については、「テーブルまたはデータベースに対する Lake Formation アクセス許可の付与」を参照してください。
次のサービスでテーブルリソースを他の IAM プリンシパルが操作できるようにするには、テーブルリソースに対する Lake Formation 許可をそれらのプリンシパルに付与する必要があります。
-
Amazon Redshift
-
Amazon Data Firehose
-
Amazon QuickSight
-
Amazon Athena
テーブルまたはデータベースに対する Lake Formation アクセス許可の付与
Lake Formation コンソールまたは AWS CLI を通じて、テーブルバケット内のテーブルまたはデータベースに対する Lake Formation 許可をプリンシパルに付与できます。
データカタログリソースに対する Lake Formation のアクセス許可を外部アカウントに付与するか、または別のアカウントの IAM プリンシパルに直接付与する場合、Lake Formation は AWS Resource Access Manager (AWS RAM) サービスを使用してリソースを共有します。付与対象アカウントが付与する側のアカウントと同じ組織内にある場合、付与対象アカウントはその共有リソースをただちに使用できるようになります。付与対象アカウントが同じ組織内にない場合は、AWS RAM が付与対象アカウントに対して、リソース付与を受け入れる、または拒否するための招待を送信します。その後、共有リソースを利用可能にするために、付与対象アカウントのデータレイク管理者が AWS RAM コンソールまたは AWS CLI を使用して招待を承諾する必要があります。クロスアカウントデータ共有の詳細については、「AWS Lake Formation デベロッパーガイド」の「Lake Formation でのクロスアカウントデータ共有」を参照してください。
- Console
-
https://console.aws.amazon.com/lakeformation/ で AWS Lake Formation コンソールを開き、データレイク管理者としてサインインします。データレイク管理者の作成方法の詳細については、「AWS Lake Formation デベロッパーガイド」の「データレイク管理者を作成する」を参照してください。
ナビゲーションペインで、[データアクセス許可]、[付与] の順に選択します。
[アクセス許可の付与] ページの [プリンシパル] で、次のいずれかを実行します。
Amazon Athena または Amazon Redshift の場合は、[IAM ユーザーとロール] を選択し、さらにクエリに使用する IAM プリンシパルを選択します。
Amazon Data Firehose の場合は、[IAM ユーザーとロール] を選択した後、テーブルへのストリーミング用に作成したサービスロールを選択します。
QuickSight の場合は、[SAML ユーザーとグループ] を選択し、QuickSight 管理者ユーザーの Amazon リソースネーム (ARN) を入力します。
AWS Glue Iceberg REST エンドポイントアクセスの場合は、[IAM ユーザーおよびロール] を選択し、クライアント用に作成した IAM ロールを選択します。詳細については、クライアント用の IAM ロールを作成するを参照してください。
[LF タグまたはカタログリソース] で、[名前付きのデータカタログリソース] を選択します。
[カタログ] で、テーブルバケットを統合したときに作成したサブカタログ (account-id:s3tablescatalog/amzn-s3-demo-bucket など) を選択します。
-
[データベース] で、作成した S3 テーブルバケット名前空間を選択します。
-
(オプション) [テーブル] で、テーブルバケットに作成した S3 テーブルを選択します。
Athena クエリエディタで新しいテーブルを作成する場合は、テーブルを選択しないでください。
-
次のいずれかを行います:
-
前のステップでテーブルを指定した場合は、[テーブルのアクセス許可] で [Super] を選択します。
-
前のステップでテーブルを指定しなかった場合は、[データベースのアクセス許可] に進みます。クロスアカウントデータ共有の場合は、[Super] を選択して、データベースに対するすべてのアクセス許可を他のプリンシパルに付与することはできません。代わりに、[Describe] などのよりきめ細かなアクセス許可を選択します。
-
[Grant] (付与) を選択します。
- CLI
次の AWS CLI コマンドをデータレイク管理者として実行していることを確認してください。詳細については、「AWS Lake Formation デベロッパーガイド」の「データレイク管理者を作成する」を参照してください。
次のコマンドを実行して、S3 テーブルバケットのテーブルに対する Lake Formation 許可を IAM プリンシパルに付与し、テーブルにアクセスします。この例を実行するには、user input
placeholders をユーザー自身の情報に置き換えます。
aws lakeformation grant-permissions \
--region us-east-1 \
--cli-input-json \
'{
"Principal": {
"DataLakePrincipalIdentifier": "user or role ARN, for example, arn:aws:iam::account-id:role/example-role"
},
"Resource": {
"Table": {
"CatalogId": "account-id:s3tablescatalog/amzn-s3-demo-bucket",
"DatabaseName": "S3 table bucket namespace, for example, test_namespace",
"Name": "S3 table bucket table name, for example test_table"
}
},
"Permissions": [
"ALL"
]
}'