翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
行レベルのアクセスコントロールによるデータレイクの保護
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アクセスコントロールのみを使用する オプションを無効にします。
米国東部 (バージニア北部) リージョンまたは米国西部 (オレゴン) リージョンの https://console.aws.amazon.com/lakeformation/
で Lake Formation コンソールにサインインします。 [Data Catalog] で、[Settings] (設定) を選択します。
選択を解除する新しいデータベースのIAMアクセスコントロールのみを使用し、新しいデータベースの新しいテーブルのIAMアクセスコントロールのみを使用します。
[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 テンプレートを使用してリソースを作成するには、次の手順に従います。
米国東部 (バージニア北部) リージョンの https://console.aws.amazon.com/cloudformation
で AWS CloudFormation コンソールにサインインします。 [スタックの起動]
を選択します。 [Create Stack] (スタックの作成) 画面で、[Next] (次へ) を選択します。
[Stack name] (スタック名) を入力します。
DatalakeAdminUserName と にはDatalakeAdminUserPassword、データレイク管理者ユーザーのIAMユーザー名とパスワードを入力します。
DataAnalystUsUserName と にはDataAnalystUsUserPassword、米国市場を担当するデータアナリストユーザーに必要なユーザー名とパスワードを入力します。
DataAnalystJpUserName と にはDataAnalystJpUserPassword、日本市場を担当するデータアナリストユーザーに必要なユーザー名とパスワードを入力します。
にDataLakeBucketName、データバケットの名前を入力します。
ではDatabaseName、 をデフォルトTableNameのままにします。
[Next] (次へ) を選択します。
次のページで、[Next] (次へ) を選択します。
最終ページの詳細を確認し、 がIAMリソースを作成する AWS CloudFormation 可能性があることを確認します。
[Create] (作成) を選択します。
スタックの作成が完了するまでに 1 分かかる場合があります。
ステップ 2: データフィルターなしでクエリを実行する
環境の設定後に、製品レビューテーブルに対してクエリを実行できます。まず、行レベルのアクセスコントロールなしでテーブルにクエリを実行し、データが表示されることを確認します。Amazon Athena でクエリを初めて実行する場合は、クエリ結果の場所を設定する必要があります。
行レベルのアクセスコントロールなしでテーブルに対してクエリを実行する
-
にサインインする Athena
DatalakeAdmin
ユーザーhttps://console.aws.amazon.com/athena/として でコンソールを実行し、次のクエリを実行します。 SELECT * FROM lakeformation_tutorial_row_security.amazon_reviews LIMIT 10
次のスクリーンショットは、クエリ結果を示しています。このテーブルのパーティションは 1 つ (
product_category=Video
) のみであるため、各レコードは動画製品のレビューコメントを示します。 -
次に、集計クエリを実行して、
marketplace
あたりのレコードの総数を取得します。SELECT marketplace, count(*) as total_count FROM lakeformation_tutorial_row_security.amazon_reviews GROUP BY marketplace
次のスクリーンショットは、クエリ結果を示しています。
marketplace
列には 5 つの異なる値があります。以降のステップでは、marketplace
列を使用して行ベースのフィルターをセットアップします。
ステップ 3: データフィルターを設定し、許可を付与する
このチュートリアルでは、2 人のデータアナリストを使用します。1 人は米国マーケットプレイス、もう 1 人は日本マーケットプレイスを担当しています。各アナリストは Athena を使用して、各担当マーケットプレイスのみのカスタマーレビューを分析します。2 つの異なるデータフィルターを作成します。1 つは米国マーケットプレイスを担当するアナリスト用、もう 1 つは日本マーケットプレイスを担当するアナリスト用です。次に、アナリストにそれぞれの許可を付与します。
データフィルターを作成して許可を付与する
US
marketplace
データへのアクセスを制限するためのフィルターを作成します。DatalakeAdmin
ユーザーとして、米国東部 (バージニア北部) リージョンの https://console.aws.amazon.com/lakeformation/で Lake Formation コンソールにサインインします。 [Data filters] (データフィルター) を選択します。
[Create new filter] (新しいフィルターの作成) を選択します。
[Data filter name] (データフィルター名) に、「
amazon_reviews_US
」と入力します。[Target database] (ターゲットデータベース) で、データベース
lakeformation_tutorial_row_security
を選択します。[Target table] (ターゲットテーブル) で、テーブル
amazon_reviews
を選択します。[Column-level access] (列レベルのアクセス) は、デフォルトのままにします。
[Row filter expression] (行フィルター式) に「
marketplace='US'
」と入力します。[フィルターの作成] をクリックします。
-
日本の
marketplace
データへのアクセスを制限するフィルターを作成します。[Data filters] (データフィルター) ページで、[Create new filter] (新しいフィルターを作成) を選択します。
[Data filter name] (データフィルター名) に、「
amazon_reviews_JP
」と入力します。[Target database] (ターゲットデータベース) で、データベース
lakeformation_tutorial_row_security
を選択します。[Target table] (ターゲットテーブル) で、
table amazon_reviews
を選択します。[Column-level access] (列レベルのアクセス) は、デフォルトのままにします。
[Row filter expression] (行フィルター式) に「
marketplace='JP'
」と入力します。[フィルターの作成] をクリックします。
次に、これらのデータフィルターを使用して、データアナリストに許可を付与します。米国のデータアナリスト (
DataAnalystUS
) に許可を付与するには、以下のステップに従います。[Permissions] (許可) で [Data lake permissions] (データレイクの許可) を選択します。
[Data permission] (データの許可) で、[Grant] (付与) を選択します。
-
プリンシパル では、IAMユーザーとロール を選択し、ロール を選択します
DataAnalystUS
。 [LF-tags or catalog resources] (LF タグまたはカタログリソース) で、[Named data catalog resources] (名前付きの Data Catalog リソース) を選択します。
-
[Database] (データベース) で、
lakeformation_tutorial_row_security
を選択します。 [Tables-optional] (テーブル-オプション) で、
amazon_reviews
を選択します。[Data filters – optional] (データフィルター - オプション) で、
amazon_reviews_US
を選択します。-
[Data filter permissions] (データフィルターの許可) で、[Select] (選択) を選択します。
[Grant] (付与) を選択します。
日本のデータアナリスト (
DataAnalystJP
) に許可を付与するには、以下のステップに従います。[Permissions] (許可) で、[Data lake permissions] (データレイクの許可) を選択します。
[Data permission] (データの許可) で、[Grant] (付与) を選択します。
-
プリンシパル では、IAMユーザーとロール を選択し、ロール を選択します
DataAnalystJP
。 [LF-tags or catalog resources] (LF タグまたはカタログリソース) で、[Named data catalog resources] (名前付きの Data Catalog リソース) を選択します。
-
[Database] (データベース) で、
lakeformation_tutorial_row_security
を選択します。 [Tables-optional] (テーブル-オプション) で、
amazon_reviews
を選択します。[Data filters – optional] (データフィルター - オプション) で、
amazon_reviews_JP
を選択します。-
[Data filter permissions] (データフィルターの許可) で、[Select] (選択) を選択します。
[Grant] (付与) を選択します。
ステップ 4: データフィルターを使用してクエリを実行する
製品レビューテーブルにデータフィルターをアタッチして、いくつかのクエリを実行し、Lake Formation で許可がどのように適用されるかを確認します。
-
DataAnalystUS
ユーザーhttps://console.aws.amazon.com/athena/として で Athena コンソールにサインインします。 -
次のクエリを実行し、定義した行レベルの許可に基づいてフィルタリングされたレコードをいくつか取得します。
SELECT * FROM lakeformation_tutorial_row_security.amazon_reviews LIMIT 10
次のスクリーンショットは、クエリ結果を示しています。
-
同様に、クエリを実行し、マーケットプレイスごとのレコードの総数をカウントします。
SELECT marketplace , count ( * ) as total_count FROM lakeformation_tutorial_row_security .amazon_reviews GROUP BY marketplace
このクエリ結果には、結果内の
marketplace
US
のみが表示されます。これは、ユーザーに許可された表示は、marketplace
列の値がUS
と等しい行のみであるためです。 -
DataAnalystJP
ユーザーに切り替えて、同じクエリを実行します。SELECT * FROM lakeformation_tutorial_row_security.amazon_reviews LIMIT 10
クエリ結果には、
JP
marketplace
に属するレコードのみが表示されます。 -
クエリを実行し、
marketplace
あたりのレコードの総数をカウントします。SELECT marketplace, count(*) as total_count FROM lakeformation_tutorial_row_security.amazon_reviews GROUP BY marketplace
クエリ結果には、
JP
marketplace
に属する行のみが表示されます。