行レベルのアクセスコントロールによるデータレイクの保護 - AWS Lake Formation

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

行レベルのアクセスコントロールによるデータレイクの保護

AWS Lake Formation 行レベルのアクセス許可を使用すると、データコンプライアンスとガバナンスポリシーに基づいて、テーブル内の特定の行へのアクセスを提供できます。数十億のレコードを格納する大きなテーブルがある場合、さまざまなユーザーやチームがアクセスして表示できるデータを、許可した範囲に限定する方法が必要です。行レベルのアクセスコントロールは、データを保護するとともに、ジョブの実行に必要なデータへのアクセス許可をユーザーに付与するシンプルでパフォーマンスの高い方法です。Lake Formation は、一元的な監査とコンプライアンスレポートを通じて、どのプリンシパルが、どのデータに、いつ、どのサービスを通じてアクセスしたかを特定します。

このチュートリアルでは、Lake Formation での行レベルのアクセスコントロールの仕組みと設定方法について説明します。

このチュートリアルには、必要なリソースをすばやくセットアップするための AWS CloudFormation テンプレートが含まれています。このテンプレートを参照し、ニーズに合わせてカスタマイズできます。

対象者

このチュートリアルは、データスチュワード、データエンジニア、データアナリストを対象としています。次の表は、データ所有者とデータコンシューマーのロールと責任を示しています。

ロール 説明
IAM 管理者 ユーザーおよびロール、Amazon Simple Storage Service (Amazon S3) バケットを作成できるユーザー。AdministratorAccess AWS マネージドポリシーがあります。
データレイク管理者 データレイクの設定、データフィルターの作成、およびデータアナリストへの許可の付与を担当するユーザー。
データアナリスト データレイクに対してクエリを実行できるユーザー。複数の異なる国 (このユースケースの場合は日本と米国) に居住するデータアナリストは、自国の顧客の製品レビューのみを分析でき、コンプライアンス上の理由から、他国の顧客のデータを表示することはできません。

前提条件

このチュートリアルを開始する前に、正しいアクセス許可を持つ管理者ユーザーとしてサインインするために AWS アカウント 使用できる が必要です。詳細については、「初期設定 AWS タスクを完了する」を参照してください。

このチュートリアルでは、 に精通していることを前提としていますIAM。の詳細についてはIAM、IAM「 ユーザーガイド」を参照してください。

Lake Formation 設定を変更する
重要

AWS CloudFormation テンプレートを起動する前に、以下の手順に従って、Lake Formation の新しいデータベース/テーブルのIAMアクセスコントロールのみを使用する オプションを無効にします。

  1. 米国東部 (バージニア北部) リージョンまたは米国西部 (オレゴン) リージョンの https://console.aws.amazon.com/lakeformation/で Lake Formation コンソールにサインインします。

  2. [Data Catalog] で、[Settings] (設定) を選択します。

  3. 選択を解除する新しいデータベースのIAMアクセスコントロールのみを使用し新しいデータベースの新しいテーブルのIAMアクセスコントロールのみを使用します

  4. [Save] を選択します。

ステップ 1: リソースをプロビジョニングする

このチュートリアルには、クイックセットアップ用の AWS CloudFormation テンプレートが含まれています。このテンプレートを参照し、ニーズに合わせてカスタマイズできます。 AWS CloudFormation テンプレートは、次のリソースを生成します。

  • ユーザーおよびポリシー (以下のロール向け):

    • DataLakeAdmin

    • DataAnalyst米国

    • DataAnalyst日本

  • Lake Formation データレイクの設定と許可

  • パブリック Amazon S3 バケットから Amazon S3 バケットにサンプルデータファイルをコピーするために使用される Lambda Amazon S3関数 (Lambda でバックアップされた AWS CloudFormation カスタムリソース用)

  • データレイクとして機能する Amazon S3 バケット

  • AWS Glue Data Catalog データベース、テーブル、パーティション

リソースを作成する

AWS CloudFormation テンプレートを使用してリソースを作成するには、次の手順に従います。

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

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

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

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

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

  6. DataAnalystUsUserName と にはDataAnalystUsUserPassword、米国市場を担当するデータアナリストユーザーに必要なユーザー名とパスワードを入力します。

  7. DataAnalystJpUserName と にはDataAnalystJpUserPassword、日本市場を担当するデータアナリストユーザーに必要なユーザー名とパスワードを入力します。

  8. DataLakeBucketName、データバケットの名前を入力します。

  9. ではDatabaseName、 をデフォルトTableNameのままにします。

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

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

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

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

    スタックの作成が完了するまでに 1 分かかる場合があります。

ステップ 2: データフィルターなしでクエリを実行する

環境の設定後に、製品レビューテーブルに対してクエリを実行できます。まず、行レベルのアクセスコントロールなしでテーブルにクエリを実行し、データが表示されることを確認します。Amazon Athena でクエリを初めて実行する場合は、クエリ結果の場所を設定する必要があります。

行レベルのアクセスコントロールなしでテーブルに対してクエリを実行する
  1. にサインインする Athena DatalakeAdmin ユーザーhttps://console.aws.amazon.com/athena/として でコンソールを実行し、次のクエリを実行します。

    SELECT * FROM lakeformation_tutorial_row_security.amazon_reviews LIMIT 10

    次のスクリーンショットは、クエリ結果を示しています。このテーブルのパーティションは 1 つ (product_category=Video) のみであるため、各レコードは動画製品のレビューコメントを示します。

    Query results showing 10 rows of Amazon product reviews for VHS tapes with various ratings.
  2. 次に、集計クエリを実行して、marketplace あたりのレコードの総数を取得します。

    SELECT marketplace, count(*) as total_count FROM lakeformation_tutorial_row_security.amazon_reviews GROUP BY marketplace

    次のスクリーンショットは、クエリ結果を示しています。marketplace 列には 5 つの異なる値があります。以降のステップでは、marketplace 列を使用して行ベースのフィルターをセットアップします。

    Query results showing marketplace data with total counts for FR, UK, JP, DE, and US.

ステップ 3: データフィルターを設定し、許可を付与する

このチュートリアルでは、2 人のデータアナリストを使用します。1 人は米国マーケットプレイス、もう 1 人は日本マーケットプレイスを担当しています。各アナリストは Athena を使用して、各担当マーケットプレイスのみのカスタマーレビューを分析します。2 つの異なるデータフィルターを作成します。1 つは米国マーケットプレイスを担当するアナリスト用、もう 1 つは日本マーケットプレイスを担当するアナリスト用です。次に、アナリストにそれぞれの許可を付与します。

データフィルターを作成して許可を付与する
  1. US marketplace データへのアクセスを制限するためのフィルターを作成します。

    1. DatalakeAdmin ユーザーとして、米国東部 (バージニア北部) リージョンの https://console.aws.amazon.com/lakeformation/ で Lake Formation コンソールにサインインします。

    2. [Data filters] (データフィルター) を選択します。

    3. [Create new filter] (新しいフィルターの作成) を選択します。

    4. [Data filter name] (データフィルター名) に、「amazon_reviews_US」と入力します。

    5. [Target database] (ターゲットデータベース) で、データベース lakeformation_tutorial_row_security を選択します。

    6. [Target table] (ターゲットテーブル) で、テーブル amazon_reviews を選択します。

    7. [Column-level access] (列レベルのアクセス) は、デフォルトのままにします。

    8. [Row filter expression] (行フィルター式) に「marketplace='US'」と入力します。

    9. [フィルターの作成] をクリックします。

  2. 日本の marketplace データへのアクセスを制限するフィルターを作成します。

    1. [Data filters] (データフィルター) ページで、[Create new filter] (新しいフィルターを作成) を選択します。

    2. [Data filter name] (データフィルター名) に、「amazon_reviews_JP」と入力します。

    3. [Target database] (ターゲットデータベース) で、データベース lakeformation_tutorial_row_security を選択します。

    4. [Target table] (ターゲットテーブル) で、table amazon_reviews を選択します。

    5. [Column-level access] (列レベルのアクセス) は、デフォルトのままにします。

    6. [Row filter expression] (行フィルター式) に「marketplace='JP'」と入力します。

    7. [フィルターの作成] をクリックします。

  3. 次に、これらのデータフィルターを使用して、データアナリストに許可を付与します。米国のデータアナリスト (DataAnalystUS) に許可を付与するには、以下のステップに従います。

    1. [Permissions] (許可) で [Data lake permissions] (データレイクの許可) を選択します。

    2. [Data permission] (データの許可) で、[Grant] (付与) を選択します。

    3. プリンシパル では、IAMユーザーとロール を選択し、ロール を選択しますDataAnalystUS

    4. [LF-tags or catalog resources] (LF タグまたはカタログリソース) で、[Named data catalog resources] (名前付きの Data Catalog リソース) を選択します。

    5. [Database] (データベース) で、lakeformation_tutorial_row_security を選択します。

    6. [Tables-optional] (テーブル-オプション) で、amazon_reviews を選択します。

    7. [Data filters – optional] (データフィルター - オプション) で、amazon_reviews_US を選択します。

    8. [Data filter permissions] (データフィルターの許可) で、[Select] (選択) を選択します。

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

  4. 日本のデータアナリスト (DataAnalystJP) に許可を付与するには、以下のステップに従います。

    1. [Permissions] (許可) で、[Data lake permissions] (データレイクの許可) を選択します。

    2. [Data permission] (データの許可) で、[Grant] (付与) を選択します。

    3. プリンシパル では、IAMユーザーとロール を選択し、ロール を選択しますDataAnalystJP

    4. [LF-tags or catalog resources] (LF タグまたはカタログリソース) で、[Named data catalog resources] (名前付きの Data Catalog リソース) を選択します。

    5. [Database] (データベース) で、lakeformation_tutorial_row_security を選択します。

    6. [Tables-optional] (テーブル-オプション) で、amazon_reviews を選択します。

    7. [Data filters – optional] (データフィルター - オプション) で、amazon_reviews_JP を選択します。

    8. [Data filter permissions] (データフィルターの許可) で、[Select] (選択) を選択します。

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

ステップ 4: データフィルターを使用してクエリを実行する

製品レビューテーブルにデータフィルターをアタッチして、いくつかのクエリを実行し、Lake Formation で許可がどのように適用されるかを確認します。

  1. DataAnalystUS ユーザーhttps://console.aws.amazon.com/athena/として で Athena コンソールにサインインします。

  2. 次のクエリを実行し、定義した行レベルの許可に基づいてフィルタリングされたレコードをいくつか取得します。

    SELECT * FROM lakeformation_tutorial_row_security.amazon_reviews LIMIT 10

    次のスクリーンショットは、クエリ結果を示しています。

    Query results showing 10 rows of Amazon product reviews data, including marketplace, ratings, and product titles.
  3. 同様に、クエリを実行し、マーケットプレイスごとのレコードの総数をカウントします。

    SELECT marketplace , count ( * ) as total_count FROM lakeformation_tutorial_row_security .amazon_reviews GROUP BY marketplace

    このクエリ結果には、結果内の marketplace US のみが表示されます。これは、ユーザーに許可された表示は、marketplace 列の値が US と等しい行のみであるためです。

  4. DataAnalystJP ユーザーに切り替えて、同じクエリを実行します。

    SELECT * FROM lakeformation_tutorial_row_security.amazon_reviews LIMIT 10

    クエリ結果には、JP marketplace に属するレコードのみが表示されます。

  5. クエリを実行し、marketplace あたりのレコードの総数をカウントします。

    SELECT marketplace, count(*) as total_count FROM lakeformation_tutorial_row_security.amazon_reviews GROUP BY marketplace

    クエリ結果には、JP marketplace に属する行のみが表示されます。

ステップ 5: AWS リソースをクリーンアップする

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

への不要な請求を防ぐために AWS アカウント、このチュートリアルに使用した AWS リソースを削除できます。