名前付きリソース方式を使用したデータベースのアクセス権限の付与 - AWS Lake Formation

名前付きリソース方式を使用したデータベースのアクセス権限の付与

以下は、名前付きリソース方式を使用してデータベース許可を付与する方法を説明する手順です。

Console

Lake Formation コンソールの [データレイクのアクセス許可を付与] ページを使用します。このページは、以下のセクションに分かれています。

  • [プリンシパル] – アクセス許可の付与先となる IAM ユーザー、ロール、IAM アイデンティティセンターユーザーとグループ、AWS アカウント、組織、または組織単位。

  • [LF タグまたはカタログリソース] – 付与する許可の対象となるデータベース、テーブル、ビュー、またはリソースリンク。

  • [Permissions] (許可) – 付与される Lake Formation 許可。

注記

データベースリソースリンクに対する許可を付与するには、「リソースリンク許可の付与」を参照してください。

  1. [データレイクのアクセス許可を付与] ページを開きます

    AWS Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を開き、データレイク管理者、データベース作成者、またはデータベースに対する [Grantable permissions] (付与可能なアクセス許可) を持っている IAM ユーザーとしてサインインします。

    次のいずれかを行います。

    • ナビゲーションペインの [Permissions] (許可) で [Data lake permissions] (データレイクの許可) を選択します。次に、[Grant] (付与) を選択します。

    • ナビゲーションペインの [データカタログ][データベース] を選択します。次に、[データベース] ページでデータベースを選択し、[アクション] メニューの [許可][付与] を選択します。

    注記

    データベースに対する許可は、そのリソースリンクを使用して付与できます。これを実行するには、[Database] (データベース) ページでリソースリンクを選択し、[Actions] (アクション) メニューで [Grant on target] (ターゲットに対して付与) を選択します。詳細については、「Lake Formation でのリソースリンクの仕組み」を参照してください。

  2. 次に、[プリンシパル] セクションでプリンシパルタイプを選択してから、アクセス許可の付与先となるプリンシパルを指定します。

    [プリンシパル] セクションには、次のテキストを使用した名前が付いている 4 つのタイルが含まれています。各タイルには、オプションボタンとテキストがあります。[IAM アイデンティティセンターのユーザーとグループ] タイルが選択されていて、次のテキストの下にユーザーとグループのドロップダウンリストがあります。
    IAM ユーザーとロール

    [IAM users and roles] (IAM ユーザーおよびロール) リストから、1 人、または複数のユーザーまたはロールを選択します。

    IAM アイデンティティセンター

    [ユーザーとグループ] リストから、1 人、または複数のユーザーまたはグループを選択します。ユーザーまたはグループをさらに追加するには、[追加] を選択します。

    SAML ユーザーとグループ

    [SAML and Amazon QuickSight users and groups] (SAML および Amazon QuickSight のユーザーとグループ) の場合は、SAML 経由でフェデレートされたユーザーまたはグループに 1 つ、または複数の Amazon リソースネーム (ARN) を入力するか、Amazon QuickSight のユーザーまたはグループに ARN を入力します。各 ARN の後で Enter キーを押します。

    ARN の構築方法については、「Lake Formation の grant および revoke AWS CLI コマンド」を参照してください。

    注記

    Lake Formation の Amazon QuickSight との統合がサポートされるのは、Amazon QuickSight Enterprise Edition のみです。

    外部アカウント

    AWS アカウント、AWS 組織、または IAM プリンシパルには、IAM ユーザーまたはロールの 1 つ以上の有効な AWS アカウント ID、組織 ID、組織単位 ID、または ARN を入力します。各 ID の後で [Enter] キーを押します。

    組織 ID は、最初の「o-」と、その後に続く 10~32 個の小文字または数字で構成されています。

    組織単位 ID は「ou-」で始まり、その後に 4~32 個の小文字または数字 (OU が含まれるルートの ID) が続きます。この文字列の後には、2 番目の「-」ダッシュと 8~32 個の追加の小文字または数字が続きます。

  3. [LF タグまたはカタログリソース] セクションで、[名前付きのデータカタログリソース] を選択します。

    [LF-Tags or catalog resources] (LF タグまたはカタログリソース) セクションには、水平に配置された 2 つのタイルがあり、各タイルにはオプションボタンと説明テキストが含まれています。オプションは、[LF タグに一致するリソース] と [名前付きのデータカタログリソース] です。タイルの下には、[Database] (データベース) と [Table] (テーブル) の 2 つのドロップダウンリストがあります。[Database] (データベース) ドロップダウンリストには、その下に選択したデータベース名が含まれるタイルがあります。
  4. [Database] (データベース) のリストから、1 つ、または複数のデータベースを選択します。1 つ以上のテーブルデータフィルターを選択することもできます。

  5. [Permissions] (許可) セクションで、許可と付与可能な許可を選択します。[Database permissions] (データベースの許可) で、付与する許可を 1 つ、または複数選択します。

    [Permissions] (許可) セクションには、水平に配置された 2 つのタイルがあります。各タイルには、オプションボタンとテキストがあります。[Database permissions] (データベースの許可) タイルが選択されています。もう 1 つのタイルである [Column-based permissions] (列ベースの許可) は、テーブル許可に関連していることから無効になっています。タイルの下には、付与するデータベース許可のチェックボックスのグループがあります。チェックボックスには、[Create Table] (テーブルの作成)、[Alter] (変更)、[Drop] (ドロップ)、[Describe] (記述)、および [Super] (スーパー) があります。そのグループの下には、付与可能な許可のための、同じチェックボックスがある別のグループがあります。
    注記

    登録されたロケーションをポイントするロケーションプロパティを持ったデータベースに対する Create Table または Alter を付与した後は、プリンシパルにもそのロケーションに対するデータロケーション許可を付与するようにしてください。詳細については、「データロケーション許可の付与」を参照してください。

  6. (オプション) [Grantable permissions] (付与可能な許可) で、付与対象者がそれぞれの AWS アカウント内の他のプリンシパルに付与できる許可を選択します。このオプションは、外部アカウントから IAM プリンシパルにアクセス許可を付与する場合はサポートされません。

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

AWS CLI

データベース許可は、名前付きリソース方式と AWS Command Line Interface (AWS CLI) を使用して付与することができます。

AWS CLI を使用してデータベース許可を付与する
  • grant-permissions コマンドを実行し、付与される許可に応じて、データベースまたは Data Catalog をリソースとして指定します。

    以下の例の <account-id> は、有効な AWS アカウント ID に置き換えてください。

    例 – データベースを作成するための付与

    この例では、CREATE_DATABASE をユーザー datalake_user1 に付与します。この許可が付与されるリソースは Data Catalog であるため、コマンドは resource パラメータとして空の CatalogResource 構造を指定します。

    aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "CREATE_DATABASE" --resource '{ "Catalog": {}}'
    例 – 指定されたデータベースでテーブルを作成するための付与

    次の例は、データベース retail での CREATE_TABLE をユーザー datalake_user1 に付与します。

    aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::<account-id>:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
    例 – 付与オプションを使用した外部 AWS アカウントへの付与

    次の例は、データベース retail に対する grant オプション付きの CREATE_TABLE を外部アカウント 1111-2222-3333 に付与します。

    aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333 --permissions "CREATE_TABLE" --permissions-with-grant-option "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
    例 – 組織への付与

    次の例は、データベース issues に対する grant オプション付きの ALTER を組織 o-abcdefghijkl に付与します。

    aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:organizations::111122223333:organization/o-abcdefghijkl --permissions "ALTER" --permissions-with-grant-option "ALTER" --resource '{ "Database": {"Name":"issues"}}'
    例 - 同じアカウントで ALLIAMPrincipals に付与

    次の例では、同じアカウントのすべてのプリンシパルにデータベース retail への CREATE_TABLE アクセス許可を付与します。このオプションを使用すると、アカウント内のすべてのプリンシパルがデータベースにテーブルを作成し、統合クエリエンジンが共有データベースとテーブルにアクセスできるようにするテーブルリソースリンクを作成できます。このオプションは、プリンシパルがクロスアカウント付与を受け取っていて、リソースリンクを作成するアクセス許可を持っていない場合に特に役立ちます。このシナリオでは、データレイク管理者がプレースホルダーデータベースを作成して ALLIAMPrincipal グループに CREATE_TABLE アクセス許可を付与し、アカウント内の各 IAM プリンシパルがプレースホルダーデータベースにリソースリンクを作成できるようにします。

    aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"temp","CatalogId":"111122223333"}}'
    例 - 外部アカウントでの ALLIAMPrincipals への付与

    次の例では、外部アカウントのすべてのプリンシパルにデータベース retail への CREATE_TABLE を付与します。このオプションにより、アカウント内の各プリンシパルがデータベースにテーブルを作成できます。

    aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=111122223333:IAMPrincipals --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"retail","CatalogId":"123456789012"}}'
注記

登録されたロケーションをポイントするロケーションプロパティを持ったデータベースに対する CREATE_TABLE または ALTER を付与した後は、プリンシパルにもそのロケーションに対するデータロケーション許可を付与するようにしてください。詳細については、「データロケーション許可の付与」を参照してください。