Lake Formation のタグベースのアクセス制御 - AWS Lake Formation

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

Lake Formation のタグベースのアクセス制御

Lake Formation タグベースのアクセスコントロール (LF-TBAC) は、属性に基づいてアクセス許可を定義する認証戦略です。これらの属性は、Lake Formation で LF タグと呼ばれています。LF タグを Data Catalog リソースにアタッチし、これらの LF タグを使用して、それらのリソースの Lake Formation プリンシパルにアクセス許可を付与できます。Lake Formation では、プリンシパルのタグ値がリソースタグ値と一致する場合に、これらのリソースに対するオペレーションを許可します。LF-TBAC は、急速に成長している環境で役立ち、ポリシー管理が面倒になる状況に役立ちます。

LF-TBAC は、多数の Data Catalog リソースがある場合に Lake Formation のアクセス許可を付与するために推奨される方法です。LF-TBAC は、名前付きリソースメソッドよりもスケーラブルで、アクセス許可管理のオーバーヘッドが少なくて済みます。

注記

IAM タグは LF タグとは異なります。これらのタグは置き換え可能ではありません。LF タグは Lake Formation に許可を付与するために使用されます。IAMタグはIAMポリシーの定義に使用されます。

Lake Formation のタグベースのアクセス制御の仕組み

各 LF タグは、department=salesclassification=restricted などのキーと値のペアです。キーは、department=sales,marketing,engineering,finance など複数の定義された値を持つことができます。

LF-TBAC メソッドを使用するには、データレイク管理者とデータエンジニアが以下のタスクを実行します。

タスク タスクの詳細

1. LF タグのプロパティと関係を定義します。

-

2. Lake Formation で LF タグ作成者を作成します。

LF タグ作成者の追加

3. Lake Formation で LF タグを作成します。

LF タグの作成

4. LF タグを Data Catalog リソースに割り当てます。

Data Catalog リソースへの LF タグの割り当て

5. LF タグをリソースに割り当てる許可 (オプションで付与オプションを使用) を他のプリンシパルに付与します。

LF タグ値のアクセス許可の管理

6. LF タグ式 (オプションで付与オプションを使用) をプリンシパルに付与します。

LF-TBAC メソッドを使用したデータレイクアクセス許可の付与

7. (推奨) プリンシパルが LF-TBAC メソッドを使用して正しいリソースにアクセスできることを確認したら、名前付きリソースメソッドを使用して付与されたアクセス許可を取り消します。

-

3 つのデータベースと 7 つのテーブルに対するアクセス許可を 3 人のプリンシパルに付与する必要がある場合を考えてみましょう。

左側に 3 人のユーザーが垂直に配置されています。右側には、A、B、および C のラベルが付けられた 3 個のデータベースが垂直に配置されています。データベース A には A.1 および A.2 のラベルが付けられた 2 個のテーブルがあり、データベース B には B.1 および B.2 のラベルが付けられたテーブル、データベース C には C.1、C.2、および C.3 のラベルが付けられた 3 個のテーブルがあります。17 本の矢印は、ユーザーをデータベースとテーブルに結び付けており、データベースおよびテーブルに対する許可のユーザーへの付与を示しています。

上の図に示されているアクセス許可を名前付きリソース方法を使用して実現するには、以下のように、17 の付与を行う必要があります (擬似コードを使用)。

GRANT CREATE_TABLE ON Database A TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.1 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table B.2 TO PRINCIPAL 1 ... GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 2 GRANT CREATE_TABLE ON Database B TO PRINCIPAL 2 ... GRANT SELECT, INSERT ON Table C.3 TO PRINCIPAL 3

次に、LF- を使用してアクセス許可を付与する方法を考えてみましょうTBAC。次の図は、LF タグをデータベースとテーブルに割り当てて、LF タグに対するアクセス許可をプリンシパルに付与したことを示しています。

この例では、LF タグは、エンタープライズリソースプランニング (ERP) アプリケーションスイートのさまざまなモジュールの分析を含むデータレイクの領域を表します。さまざまなモジュールの分析データへのアクセスを制御できます。すべての LF タグは、module というキーと、SalesOrders、および Customers の可能な値を持っています。LF タグの例は以下のようになります。

module=Sales

この図は LF タグの値のみを示しています。

前の図と同様に、左側に 3 人のユーザーが垂直に配置されており、右側には A、B、および C のラベルが付けられた 3 個のデータベースが垂直に配置されています。データベース A には A.1 および A.2 のラベルが付けられた 2 個のテーブルがあり、データベース B には B.1 および B.2 のラベルが付けられたテーブル、データベース C には C.1、C.2、および C.3 のラベルが付けられた 3 個のテーブルがあります。ユーザーと、データベースとテーブルの間に矢印はありません。その代わりに、ユーザーの横にあるラベル付けされた「フラグ」が、ユーザー 1 に Sales (売上) および Customers (顧客) の LF タグが付与され、ユーザー 2 には Orders (注文) の LF タグ、ユーザー 3 には Customers (顧客) の LF タグが付与されていることを示しています。データベースとテーブルの横にあるフラグは、データベースとテーブルへの次のような LF タグの割り当てを示しています。データベース A: Sales (売上)。テーブル A.1: 淡色表示のフラグによって、Sales (売上) がデータベース A から継承されたことが示されています。テーブル A.2: Orders (注文)。ただし、淡色表示のフラグによって、Sales (売上) がデータベース A から継承されたことが示されています。データベース B: Orders (注文)。テーブル B.1 と B.2 は Orders (注文) を継承しており、テーブル B.2 には Customers (顧客) があります。データベース C には Customers (顧客) があり、テーブル C.1、C.2、および C.3 は Customers (顧客) を継承しています。C のテーブルに他の割り当てはありません。
Data Catalog リソースへのタグ割り当てと継承

テーブルはデータベースから LF タグを継承し、列はテーブルから LF タグを継承します。継承された値は上書きすることができます。上記の図では、淡色表示の LF タグが継承されています。

継承が行われるため、データレイク管理者は、リソースに対して以下の 5 つの LF タグの割り当てを行うだけで済みます (擬似コードを使用)。

ASSIGN TAGS module=Sales TO database A ASSIGN TAGS module=Orders TO table A.2 ASSIGN TAGS module=Orders TO database B ASSIGN TAGS module=Customers TO table B.2 ASSIGN TAGS module=Customers TO database C
プリンシパルへのタグの付与

データベースとテーブルに LF タグを割り当てた後、データレイク管理者は、以下のようにプリンシパルに対して LF タグを 4 回付与するだけで済みます (擬似コードを使用)。

GRANT TAGS module=Sales TO Principal 1 GRANT TAGS module=Customers TO Principal 1 GRANT TAGS module=Orders TO Principal 2 GRANT TAGS module=Customers TO Principal 3

これで、LF タグ module=Sales を持つプリンシパルは LF タグ module=Sales を持つ Data Catalog リソース (例えば、データベース A) にアクセスでき、LF タグ module=Customers を持つプリンシパルは LF タグ module=Customers を持つリソースにアクセスできる、というようになります。

上記の grant コマンドは不完全です。これらは、プリンシパルが許可を持つ Data Catalog リソースを LF タグで示してはいるものの、プリンシパルがそれらのリソースに対してどの Lake Formation 許可 (SELECTALTER など) を持っているかを正確に示していないためです。したがって、以下の擬似コードのコマンドが、LF タグを使用して Data Catalog リソースに対する Lake Formation 許可を付与する方法のより正確な表現になります。

GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Sales TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Sales TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Orders TO Principal 2 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Orders TO Principal 2 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 3 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 3
まとめ – 結果として得られたリソースに対するアクセス許可

以下の表は、上記の図のデータベースとテーブルに割り当てられた LF タグと、図の中でプリンシパルに付与された LF タグを前提とした、プリンシパルが持つデータベースとテーブルに対する Lake Formation 許可のリストです。

プリンシパル LF タグを通じて付与された許可
プリンシパル 1
  • データベース A に対する CREATE_TABLE

  • テーブル A.1 に対する SELECTINSERT

  • テーブル B.2 に対する SELECTINSERT

  • データベース C に対する CREATE_TABLE

  • テーブル C.1 に対する SELECTINSERT

  • テーブル C.2 に対する SELECTINSERT

  • テーブル C.3 に対する SELECTINSERT

プリンシパル 2
  • テーブル A.2 に対する SELECTINSERT

  • データベース B に対する CREATE_TABLE

  • テーブル B.1 に対する SELECTINSERT

プリンシパル 3
  • テーブル B.2 に対する SELECTINSERT

  • データベース C に対する CREATE_TABLE

  • テーブル C.1 に対する SELECTINSERT

  • テーブル C.2 に対する SELECTINSERT

  • テーブル C.3 に対する SELECTINSERT

結論

このシンプルな例では、5 つの割り当て操作と 8 つの付与操作を使用することで、データレイク管理者が 17 個の許可を指定できました。数十のデータベースと数百のテーブルがある場合、名前付きリソースメソッドよりも LF-TBAC メソッドの利点が明確になります。すべてのプリンシパルにすべてのリソースへのアクセス権を付与する必要があり、n(P) をプリンシパルの数、n(R) をリソースの数とする仮定上のケースでは、以下のようになります。

  • 名前付きリソース方式では、必要な付与数が n(P) × n(R) 個になります。

  • LF-TBAC メソッドでは、単一の LF タグを使用して、プリンシパルへの許可とリソースへの割り当ての合計数は n(P) + ですn(R)