Redshift Spectrum と AWS Lake Formation
このトピックでは、Lake Formation で Redshift Spectrum を使用する方法について説明します。Lake Formation は、分析データを共有するためのサービスです。
AWS Lake Formation を使用して、Amazon S3 に格納されているデータに対しデータベース、テーブル、および列レベルのアクセスポリシーを一元的に定義および執行することができます。Lake Formation で有効になっている AWS Glue Data Catalog にデータを登録したら、Redshift Spectrum などの複数のサービスを使用したクエリができるようになります。
Lake Formation は、データカタログのセキュリティとガバナンスを提供します。Lake Formation 内では、データカタログオブジェクト (例: データベース、テーブル、列、基本の Amazon S3 ストレージ) へのアクセス許可の付与または取り消しを行うことができます。
重要
Redshift Spectrum は、Lake Formation が利用可能な AWS リージョンにおいて、Lake Formation が有効になっているデータカタログでのみ使用が可能です。利用可能なリージョンの一覧については、「AWS 全般のリファレンス」の「AWS Lake Formation エンドポイントとクォータ」を参照してください。
Lake Formation で Redshift Spectrum を使用すると、次のことができます。
データレイク内のすべてのデータに対するアクセス許可とアクセス制御ポリシーを付与および取り消しする、一元化された場所として Lake Formation を使用します。Lake Formation には、データカタログ内のデータベースとテーブルへのアクセスを制御するためのアクセス許可の階層があります。詳細については、AWS Lake Formation デベロッパーガイドの「Lake Formation 許可の概要」を参照してください。
外部テーブルを作成し、データレイク内のデータに対してクエリを実行します。アカウントのユーザーがクエリを実行する前に、データレイクのアカウント管理者は、ソースデータを含む既存の Amazon S3 パスを Lake Formation に登録します。また、管理者はテーブルを作成し、アクセス許可をユーザーに付与します。データベース、テーブル、または列に対するアクセス権を付与できます。管理者は Lake Formation のデータフィルターを使用して、Amazon S3 に保存されている機密データに対するきめ細かなアクセスコントロールを許可できます。詳細については、「行レベルおよびセルレベルのセキュリティでのデータフィルターの使用」を参照してください。
データがデータカタログに登録された後、ユーザーがクエリを実行しようとする度に、Lake Formation はその特定のプリンシパルのテーブルへのアクセスを確認します。Lake Formation は Redshift Spectrum に一時的な認証情報を引き渡し、クエリを実行します。
-
GetCredentials
またはGetClusterCredentials
で取得した IAM 認証情報を使用して自動的にマウントされた AWS Glue Data Catalog に対して Redshift Spectrum クエリを実行し、データベースユーザー (IAMR: Username または IAM: Username) ごとに Lake Formation アクセス許可を管理します。
Lake Formation が有効なデータカタログで Redshift Spectrum を使用する場合は、次のいずれかが必要です。
データカタログへのアクセス許可を持つクラスターに関連付けられた IAM ロール。
外部リソースへのアクセスを管理するように設定されたフェデレーション IAM ID。詳細については、「フェデレーション ID を使用して、ローカルリソースと Amazon Redshift Spectrum の外部テーブルへの Amazon Redshift アクセスを管理する」を参照してください。
重要
Lake Formation でデータカタログを有効にして Redshift Spectrum を使用する場合は、IAM ロールを連鎖することはできません。
Redshift Spectrum で使用するように AWS Lake Formation を設定するために必要な手順の詳細については、「AWS Lake Formation デベロッパーガイド」の「チュートリアル: Lake Formation での JDBC ソースからのデータレイクの作成」を参照してください。Redshift Spectrum との統合の詳細については、「Amazon Redshift Spectrum を使用してデータレイク内のデータをクエリする」を参照してください。このトピックで使用するデータと AWS リソースは、チュートリアルの以前のステップに応じて異なります。
行レベルおよびセルレベルのセキュリティでのデータフィルターの使用
AWS Lake Formation でデータフィルターを定義し、データカタログに定義されているデータに対する Redshift Spectrum クエリの行レベルおよびセルレベルのアクセスを制御できます。これを設定するには、以下のタスクを実行します。
以下の情報を使用して、Lake Formation でデータフィルターを作成します。
クエリ結果に含める、またはクエリ結果から除外する列のリストを含む列指定。
クエリ結果に含める行を指定する行フィルター式。
データフィルターの作成方法の詳細については、AWS Lake Formation デベロッパーガイドの「Lake Formation でのデータフィルター」を参照してください。
Amazon Redshift で、Lake Formation に対応したデータカタログのテーブルを参照する外部テーブルを作成します。Redshift Spectrum を使用して Lake Formation テーブルをクエリする方法の詳細については、AWS Lake Formation デベロッパーガイドの「Amazon Redshift Spectrum を使用してデータレイク内のデータをクエリする」を参照してください。
Amazon Redshift でテーブルを定義したら、Lake Formation テーブルにクエリを実行して、データフィルターが許可する行と列にのみアクセスできます。
Lake Formation で行レベルとセルレベルのセキュリティを設定し、Redshift Spectrum を使用してクエリを実行する方法の詳細なガイドについては、「Use Amazon Redshift Spectrum with row-level and cell-level security policies defined in AWS Lake Formation