AWS Glue Data Catalog ビューの使用
この機能はプレビューリリースであり、変更される可能性があります。詳細については、「AWS のサービス条件 |
Amazon Athena や Amazon Redshift などの AWS のサービス 全体で 1 つの共通ビューが必要な場合は AWS Glue Data Catalog ビューを使用します。データカタログビューでは、アクセス許可はビューをクエリするユーザーではなく、ビューを作成したユーザーによって定義されます。この権限の付与方法は、definer セマンティクスと呼ばれます。
以下のユースケースは、データカタログビューの使用例です。
-
アクセスコントロールの強化 — ユーザーが必要とするアクセス許可のレベルに基づいてデータアクセスを制限するビューを作成します。例えば、データカタログビューを使用して、人事 (HR) 部門に属さない従業員が個人を特定できる情報を表示できないようにすることができます。
-
完全なレコードを確保 — データカタログビューに特定のフィルターを適用することで、データカタログビューのデータレコードを常に完全な状態にすることができます。
-
セキュリティの強化 — データカタログビューでビューを作成するには、ビューを作成するクエリ定義をそのまま維持する必要があります。これにより、データカタログビューは悪意のある行為者からの SQL コマンドの影響を受けにくくなります。
-
基礎となるテーブルへのアクセスを防ぐ — Definer セマンティクスにより、ユーザーは基礎となるテーブルを利用できるようにしなくてもビューにアクセスすることができます。ビューを定義したユーザーのみがテーブルにアクセスする必要があります。
データカタログビュー定義は AWS Glue Data Catalog に保存されます。つまり、AWS Lake Formation を使用して、リソース許可、列付与、またはタグベースのアクセスコントロールを通じてアクセスを許可できます。Lake Formation でのアクセス権の付与と取り消しについての詳細は、「AWS Lake Formation デベロッパーガイド」の「Data Catalog リソースに対する許可の付与と取り消し」を参照してください。
アクセス許可
データカタログビューには Lake Formation Admin
、Definer
、Invoker
の 3 つのロールが必要です。
-
Lake Formation Admin
— すべてのLake Formation 権限を設定するためのアクセス権があります。 -
Definer
— データカタログビューを作成します。Definer
ロールには、ビュー定義が参照するすべての基礎となるテーブルに対して付与可能で完全なSELECT
権限が必要です。 -
Invoker
— データカタログビューにクエリを実行したり、そのメタデータを確認したりできます。
Definer
ロールの信頼関係によって、以下の例のように AWS Glue と Lake Formation のサービスプリンシパルに対する sts:AssumeRole
アクションを許可する必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com", "lakeformation.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
Athena にアクセスするための IAM アクセス許可も必要です。詳細については、「Amazon Athena の AWS 管理ポリシー」を参照してください。
制限事項
-
データカタログビューは他のビューを参照できません。
-
ビュー定義では最大 10 個のテーブルを参照できます。
-
基礎となるテーブルは、Lake Formation に登録されている必要があります。
-
DEFINER
プリンシパルは IAM ロールのみにできます。 -
DEFINER
ロールには、基礎となるテーブルに対する完全なSELECT
(付与可能な) 権限が必要です。 -
UNPROTECTED
データカタログビューはサポートされていません。 -
ユーザー定義関数 (UDF) は、ビュー定義ではサポートされていません。
-
Athena 統合データソースはデータカタログビューでは使用できません。
-
Data Catalog ビューは外部 Hive メタストアではサポートされていません。
-
Athena は、古いビューを検出するとエラーメッセージを表示します。以下のいずれかが発生すると、古いビューが報告されます。
-
このビューは、存在しないテーブルまたはデータベースを参照します。
-
スキーマまたはメタデータの変更は、参照されるテーブルで行われます。
-
参照されるテーブルは削除され、異なるスキーマまたは設定で再度作成されます。
-
データカタログビューの作成
次の構文例は、Definer
ロールのユーザーが orders_by_date
データカタログビューを作成する方法を示しています。この例では、Definer
ロールが default
データベース内の orders
テーブルに対するすべての SELECT
権限を持っていることを前提としています。
CREATE PROTECTED MULTI DIALECT VIEW orders_by_date SECURITY DEFINER AS SELECT orderdate, sum(totalprice) AS price FROM orders WHERE order_city = 'SEATTLE' GROUP BY orderdate
データカタログビューをクエリする
ビューが作成されると、Lake Formation
Admin
はデータカタログビューに対する SELECT
権限を Invoker
プリンシパルに付与できます。その後、Invoker
プリンシパルは、ビューが参照する基になるベーステーブルにアクセスしなくてもビューをクエリできます。以下は Invoker
クエリの例です。
SELECT * from orders_by_date where price > 5000
データカタログビューの更新
Lake Formation Admin
または Definer
は、ALTER VIEW
UPDATE DIALECT
構文を使用してビュー定義を更新できます。次の例では、ビュー定義を変更して、orders
テーブルではなく returns
テーブルから列を選択します。
ALTER VIEW orders_by_date UPDATE DIALECT AS SELECT return_date, sum(totalprice) AS price FROM returns WHERE order_city = 'SEATTLE' GROUP BY orderdate
データカタログビューを作成および管理するための構文の詳細については、「Glue データカタログビュー構文」を参照してください。