セットアップ AWS Lake Formation - AWS Lake Formation

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

セットアップ AWS Lake Formation

以下のセクションでは、Lake Formation を初めて設定する場合について説明します。Lake Formation の使用を開始するにあたり、すべての設定事項が必要になるわけではありません。手順を使用して、Amazon Simple Storage Service (Amazon S3) の既存の AWS Glue Data Catalog オブジェクトとデータの場所を管理する Lake Formation アクセス許可モデルを設定できます。

このセクションでは、Lake Formation リソースをセットアップする 2 つの異なる方法を示します。

  • AWS CloudFormation テンプレートの使用

  • Lake Formation コンソールの使用

AWS コンソールを使用して Lake Formation を設定するには、「」を参照してくださいデータレイク管理者を作成する

AWS CloudFormation テンプレートを使用して Lake Formation リソースを設定する

注記

AWS CloudFormation スタックは、ステップ 2 と 5 を除き、上記のステップ 1~6 を実行します。Lake Formation コンソールから デフォルトのアクセス許可モデルを変更するか、ハイブリッドアクセスモードを使用するIAM アイデンティティセンターの統合を手動で実行します。

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

  2. [スタックの起動] を選択します。

  3. [Create Stack] (スタックの作成) 画面で、[Next] (次へ) を選択します。

  4. [Stack name] (スタック名) を入力します。

  5. DatalakeAdminName と にはDatalakeAdminPassword、データレイク管理者ユーザーのユーザー名とパスワードを入力します。

  6. DatalakeUser1NameDatalakeUser1Password には、データレイクアナリストユーザーのユーザー名とパスワードを入力します。

  7. にはDataLakeBucketName、作成する新しいバケット名を入力します。

  8. [次へ] をクリックします。

  9. 次のページで、[Next] (次へ) を選択します。

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

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

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

リソースをクリーンアップする

AWS CloudFormation スタックリソースをクリーンアップする場合:

  1. スタックが作成し、データレイクのロケーションとして登録した Amazon S3 バケットの登録を解除します。

  2. AWS CloudFormation スタックを削除します。これにより、スタックによって作成されたすべてのリソースが削除されます。

データレイク管理者を作成する

データレイク管理者は、最初は、データロケーションと Data Catalog リソースに対する Lake Formation 許可を任意のプリンシパル AWS Identity and Access Management (自己を含む) に付与できる唯一の (IAM) ユーザーまたはロールです。データレイク管理者の能力に関する詳細については、「黙示的な Lake Formation 許可」を参照してください。Lake Formation はデフォルトで、最大 30 人のデータレイク管理者の作成を許可します。

データレイク管理者は、Lake Formation コンソール、または Lake Formation API の PutDataLakeSettings 操作を使用して作成できます。

データレイク管理者の作成には、以下の許可が必要です。Administrator ユーザーは、これらの許可を黙示的に持っています。

  • lakeformation:PutDataLakeSettings

  • lakeformation:GetDataLakeSettings

AWSLakeFormationDataAdmin ポリシーをユーザーに付与する場合、そのユーザーは追加の Lake Formation 管理者ユーザーを作成できなくなります。

データレイク管理者を作成する (コンソール)
  1. データレイク管理者になるユーザーがまだ存在しない場合は、IAM コンソールを使用してそのユーザーを作成します。存在する場合は、データレイク管理者になる既存のユーザーを選択します。

    注記

    データレイク管理者として IAM 管理ユーザー ( AdministratorAccess AWS 管理ポリシーを持つユーザー) を選択しないことをお勧めします。

    次の AWS 管理ポリシーをユーザーにアタッチします。

    ポリシー 必須/オプション メモ
    AWSLakeFormationDataAdmin 必須 基本的なデータレイク管理者許可。この AWS 管理ポリシーには、ユーザーが新しいデータレイク管理者を作成するPutDataLakeSettingことを制限する Lake Formation API オペレーションの明示的な拒否が含まれています。
    AWSGlueConsoleFullAccess, CloudWatchLogsReadOnlyAccess オプション データレイク管理者が Lake Formation ブループリントから作成されたワークフローをトラブルシューティングを行う場合は、これらのポリシーをアタッチします。これらのポリシーは、データレイク管理者が AWS Glue コンソールと Amazon CloudWatch Logs コンソールでトラブルシューティング情報を表示できるようにします。ワークフローについては、「Lake Formation でのワークフローを使用したデータのインポート」を参照してください。
    AWSLakeFormationCrossAccountManager オプション このポリシーをアタッチして、データレイク管理者が Data Catalog リソースに対するクロスアカウント許可の付与と取り消しを実行できるようにします。詳細については、「Lake Formation でのクロスアカウントデータ共有」を参照してください。
    AmazonAthenaFullAccess オプションです。 データレイク管理者が でクエリを実行する場合は、このポリシーをアタッチします Amazon Athena。
  2. 以下のインラインポリシーをアタッチします。これは、Lake Formation サービスリンクロールを作成する許可をデータレイク管理者に付与します。ポリシーに推奨される名前は LakeFormationSLR です。

    このサービスリンクロールは、データレイク管理者がより簡単に Amazon S3 ロケーションを Lake Formation に登録できるようにします。Lake Formation サービスリンクロールの詳細については、「Lake Formation のサービスリンクロールの使用」を参照してください。

    重要

    次のすべてのポリシーで、<account-id> を有効な AWS アカウント番号に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "lakeformation.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::<account-id>:role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess" } ] }
  3. (オプション) 以下の PassRole インラインポリシーをユーザーにアタッチします。このポリシーは、データレイク管理者がワークフローを作成して実行できるようにします。iam:PassRole は、ワークフローが LakeFormationWorkflowRole ロールを引き受けてクローラとジョブを作成し、作成されたクローラとジョブにロールをアタッチすることを可能にします。ポリシーに推奨される名前は UserPassRole です。

    重要

    <account-id> を有効な AWS アカウント番号に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PassRolePermissions", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole" ] } ] }
  4. (オプション) アカウントがクロスアカウント Lake Formation 許可を付与または受ける場合は、この追加のインラインポリシーをアタッチします。このポリシーにより、データレイク管理者は AWS Resource Access Manager (AWS RAM) リソース共有の招待を表示および承諾できます。また、 AWS Organizations 管理アカウントのデータレイク管理者の場合、ポリシーには組織へのクロスアカウント付与を有効にするアクセス許可が含まれます。詳細については、「Lake Formation でのクロスアカウントデータ共有」を参照してください。

    ポリシーに推奨される名前は RAMAccess です。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:AcceptResourceShareInvitation", "ram:RejectResourceShareInvitation", "ec2:DescribeAvailabilityZones", "ram:EnableSharingWithAwsOrganization" ], "Resource": "*" } ] }
  5. https://console.aws.amazon.com/lakeformation/ で AWS Lake Formation コンソールを開き、 で作成した管理者ユーザーとして、管理アクセスを持つユーザーを作成するまたはユーザー AWS 管理ポリシーを持つAdministratorAccessユーザーとしてサインインします。

  6. [Welcome to Lake Formation] (Lake Formation へようこそ) ウィンドウが表示されたら、ステップ 1 で作成または選択した IAM ユーザーを選択し、[Get started] (開始する) を選択します。

  7. [Welcome to Lake Formation] (Lake Formation へようこそ) ウィンドウが表示されない場合は、以下の手順を実行して Lake Formation 管理者を設定します。

    1. ナビゲーションペインで、[管理者] の [管理ロールとタスク] を選択します。コンソールページの [データレイク管理者] セクションで、[追加] を選択します。

    2. [管理者を追加] ダイアログボックスで、[アクセスタイプ] の [データレイク管理者] を選択します。

    3. [IAM ユーザーおよびロール] として、ステップ 1 で作成または選択した IAM ユーザーを選択し、[保存] を選択します。

デフォルトのアクセス許可モデルを変更するか、ハイブリッドアクセスモードを使用する

Lake Formation は、既存の AWS Glue Data Catalog 動作との互換性のために「IAM アクセスコントロールのみを使用する」設定で始まります。この設定により、IAM ポリシーと Amazon S3 バケットポリシーを通じて、データレイク内のデータとそのメタデータへのアクセスを管理できます。

データレイクのアクセス許可を IAM および Amazon S3 モデルから Lake Formation のアクセス許可に簡単に移行できるように、Data Catalog ではハイブリッドアクセスモードを使用することをお勧めします。ハイブリッドアクセスモードを使用すると、増分パスにより、他の既存のユーザーやワークロードを中断することなく、特定のユーザーのセットに対して Lake Formation アクセス許可を有効にすることができます。

詳細については、「ハイブリッドアクセスモード」を参照してください。

デフォルト設定を無効にすると、テーブルの既存のユーザー全員が 1 ステップで Lake Formation に移動されます。

重要

既存の AWS Glue Data Catalog データベースとテーブルがある場合は、このセクションの手順を実行しないでください。その代わりに、「AWS Lake Formation モデルへのAWS Glueデータアクセス許可のアップグレード」の手順を実行してください。

警告

Data Catalog にデータベースとテーブルを作成するオートメーションを設定している場合、以下の手順は、オートメーションとダウンストリームの抽出、変換、ロード (ETL) ジョブが失敗する原因になる可能性があります。この手順は、既存のプロセスを変更するか、必要なプリンシパルに明示的な Lake Formation 許可を付与した後でのみ、続行するようにしてください。Lake Formation 許可については、「Lake Formation 許可のリファレンス」を参照してください。

デフォルトの Data Catalog 設定を変更する
  1. 引き続き Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を使用します。で作成した管理者ユーザーとして、管理アクセスを持つユーザーを作成するまたは AdministratorAccess AWS 管理ポリシーを持つユーザーとしてサインインしていることを確認します。

  2. Data Catalog 設定を変更します。

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

    2. 両方のチェックボックスをオフにして、[Save] (保存) を選択します。

      [データカタログの設定] ダイアログボックスには、「新しく作成されたデータベースとテーブルのデフォルト許可」というサブタイトルが付いており、テキストで説明されている 2 つのチェックボックスがあります。
  3. データベース作成者の IAMAllowedPrincipals 許可を取り消します。

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

    2. [Administrative roles and tasks] (管理ロールとタスク) コンソールページの [Database creators] (データベース作成者) セクションで IAMAllowedPrincipals グループを選択し、[Revoke] (取り消す) を選択します。

      IAMAllowedPrincipals[Create database] (データベースの作成) 許可があることを示す、許可の [Revoke] (取り消す) ダイアログボックスが表示されます。

    3. [Revoke] (取り消す) を選択します。

Lake Formation ユーザーにアクセス許可を割り当てる

でデータレイクにアクセスできるユーザーを作成します AWS Lake Formation。このユーザーは、データレイクをクエリするための最小特権アクセス許可を持っています。

ユーザーやグループの作成の詳細については、「IAM ユーザーガイド」の「IAM アイデンティティ」を参照してください。

Lake Formation データにアクセスするためのアクセス許可を管理者以外のユーザーにアタッチするには
  1. で IAM コンソールhttps://console.aws.amazon.com/iamを開き、 で作成した管理者ユーザーとして、管理アクセスを持つユーザーを作成するまたは AdministratorAccess AWS 管理ポリシーを持つユーザーとしてサインインします。

  2. [ユーザー] または [ユーザーグループ] を選択します。

  3. 一覧から、ポリシーを埋め込むユーザーまたはグループの名前を選択します。

    [アクセス許可] を選択します。

  4. [アクセス許可の追加][ポリシーを直接アタッチする] の順に選択します。[Filter policies] (フィルターポリシー) テキストフィールドに「Athena」と入力します。結果のリストで、AmazonAthenaFullAccess のボックスをオンにします。

  5. [Create policy] (ポリシーの作成) ボタンを選択します。[ポリシーの作成] ページで、[JSON] タブを選択します。以下のコードをコピーして、ポリシーエディタに貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetTable", "glue:GetTables", "glue:SearchTables", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartitions", "lakeformation:GetResourceLFTags", "lakeformation:ListLFTags", "lakeformation:GetLFTag", "lakeformation:SearchTablesByLFTags", "lakeformation:SearchDatabasesByLFTags" ], "Resource": "*" } ] }
  6. 最下部にある [Next] (次へ) ボタンを繰り返し選択して、[Review policy] (ポリシーの確認) ページを表示します。ポリシーの名前を入力します (DatalakeUserBasic など)。[ポリシーを作成] を選択し、[ポリシー] タブまたはブラウザウィンドウを閉じます。

データレイク用の Amazon S3 ロケーションを設定する

データレイク内のデータの管理とセキュア化に Lake Formation を使用するには、まず Amazon S3 ロケーションを登録する必要があります。ロケーションを登録すると、その Amazon S3 パスと、そのパスにあるすべてのフォルダが登録され、Lake Formation によるストレージレベルの許可の適用が可能になります。ユーザーが Amazon Athena などの統合エンジンからのデータをリクエストすると、Lake Formation はユーザーの許可を使用するのではなく、データアクセスを提供します。

ロケーションを登録するときは、そのロケーションに対する読み取り/書き込み許可を付与する IAM ロールを指定します。Lake Formation は、登録された Amazon S3 ロケーション内のデータへのアクセスをリクエストする統合 AWS サービスに一時的な認証情報を提供するときに、そのロールを引き受けます。ユーザーは、Lake Formation サービスリンクロール (SLR) を指定するか、独自のロールを作成することができます。

カスタムロールは、以下の状況で使用します。

ロケーションの登録に使用されるロールの要件」で説明したように、選択するロールには必要な許可がある必要があります。Amazon S3 ロケーションを登録する方法の手順については、「データレイクへの Amazon S3 ロケーションの追加」を参照してください。

(オプション) 外部データフィルタリング設定

サードパーティーのクエリエンジンを使用してデータレイク内のデータを分析および処理する予定の場合は、Lake Formation によって管理されるデータに外部エンジンがアクセスできるようにオプトインする必要があります。オプトインしない場合、外部エンジンは、Lake Formation に登録されている Amazon S3 ロケーションにあるデータにアクセスできません。

Lake Formation は、テーブル内の特定の列へのアクセスを制限するために、列レベルの許可をサポートしています。 Amazon Athena、Amazon Redshift Spectrum、Amazon EMR などの統合分析サービスは、 からフィルタリングされていないテーブルメタデータを取得します AWS Glue Data Catalog。クエリ応答内にある列の実際のフィルタリングは、統合サービスが担当します。データへの不正アクセスを回避するための許可の適切な処理は、サードパーティー管理者の責任になります。

サードパーティーエンジンによるデータへのアクセスとフィルタリングを許可するようにオプトインするには (コンソール)
  1. 引き続き Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を使用します。Lake Formation の PutDataLakeSettings API 操作に対する IAM 許可を持つプリンシパルとしてサインインしていることを確認します。この許可は、「にサインアップする AWS アカウント」で作成した IAM 管理者ユーザーが持っています。

  2. ナビゲーションペインの [管理] で、[アプリケーションの統合設定] を選択します。

  3. [アプリケーションの統合設定] ページで、次の操作を行います。

    1. [Allow external engines to filter data in Amazon S3 locations registered with Lake Formation] (外部エンジンが、Lake Formation に登録された Amazon S3 ロケーション内のデータをフィルタリングすることを許可する) チェックボックスをオンにします。

    2. サードパーティーエンジン用に定義された [Session tag values] (セッションタグ値) を入力します。

    3. [AWS アカウント ID] に、Lake Formation に登録されているロケーションにサードパーティーのエンジンがアクセスできるアカウント ID を入力します。各アカウント ID の後で Enter キーを押します。

    4. [保存] を選択します。

セッションタグを検証せずに外部エンジンがデータにアクセスできるように方法については、「フルテーブルアクセスのためのアプリケーション統合 」を参照してください。

(オプション) Data Catalog 暗号化キーへのアクセス権を付与する

AWS Glue Data Catalog が暗号化されている場合は、Data Catalog データベースとテーブルに対する Lake Formation 許可を付与する必要があるすべてのプリンシパルに AWS KMS 、キーに対する AWS Identity and Access Management (IAM) 許可を付与します。

詳細については、AWS Key Management Service デベロッパーガイドを参照してください。

(オプション) ワークフロー用の IAM ロールを作成する

では AWS Lake Formation、 AWS Glue クローラーによって実行されるワークフローを使用してデータをインポートできます。ワークフローは、データレイクにデータをインポートするためのデータソースとスケジュールを定義します。ワークフローは、Lake Formation が提供するブループリント (テンプレート) を使用して簡単に定義できます。

ワークフローを作成するときは、Lake Formation にデータを取り込むために必要なアクセス許可を付与する AWS Identity and Access Management (IAM) ロールを割り当てる必要があります。

以下の手順では、IAM に精通していることが前提となっています。

ワークフロー用の IAM ロールを作成する
  1. で IAM コンソールhttps://console.aws.amazon.com/iamを開き、 で作成した管理者ユーザーとして、管理アクセスを持つユーザーを作成するまたは AdministratorAccess AWS マネージドポリシーを持つユーザーとしてサインインします。

  2. ナビゲーションペインで [Roles] (ロール)、[Create role] (ロールを作成) の順に選択します。

  3. [Create role] (ロールを作成) ページで、[AWS service] (サービス) を選択して、[Glue] を選択します。[次へ] をクリックします。

  4. アクセス許可の追加ページで、AWSGlueServiceRole管理ポリシーを検索し、リスト内のポリシー名の横にあるチェックボックスをオンにします。次に、ロールに LFWorkflowRole という名前を付けて、[Create role] (ロールを作成) ウィザードを完了します。最後に、[Create role] (ロールを作成) を選択します。

  5. [Roles] (ロール) ページに戻り、LFflowRole を検索してロール名を選択します。

  6. ロールの [概要] ページにある [アクセス許可] タブで、[インラインポリシーの作成] を選択します。[ポリシーの作成] 画面で、[JSON] タブに移動し、次のインラインポリシーを追加します。ポリシーに推奨される名前は LakeFormationWorkflow です。

    重要

    次のポリシーで、<account-id> を有効な AWS アカウント 番号に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "lakeformation:GrantPermissions" ], "Resource": "*" }, { "Effect": "Allow", "Action": ["iam:PassRole"], "Resource": [ "arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole" ] } ] }

    以下は、このポリシー内にある許可の簡単な説明です。

    • lakeformation:GetDataAccess は、ワークフローによって作成されたジョブによるターゲットロケーションへの書き込みを可能にします。

    • lakeformation:GrantPermissions は、ワークフローがターゲットテーブルに対する SELECT 許可を付与することを可能にします。

    • iam:PassRole は、サービスが LakeFormationWorkflowRole ロールを引き受けてクローラーとジョブ (ワークフローのインスタンス) を作成し、作成されたクローラーとジョブにロールをアタッチすることを可能にします。

  7. LakeFormationWorkflowRole ロールに 2 つのポリシーがアタッチされていることを確認します。

  8. データレイクロケーションの外にあるデータを取り込んでいる場合は、そのソースデータを読み取るための許可を付与するインラインポリシーを追加します。