AWS Glue Data Catalog ビューの使用 - Amazon Athena

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 AdminDefinerInvoker の 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 データカタログビュー構文」を参照してください。