Amazon Web Services ブログ
Amazon Redshift データ共有のアクセスと権限を AWS Lake Formation で一元管理
この記事は Centrally manage access and permissions for Amazon Redshift data sharing with AWS Lake Formation の翻訳記事です。
現代のグローバルなデータドリブン組織は、データを資産として扱い、さまざまな事業部門 (LOB) で使用して、タイムリーな洞察とより適切なビジネス上の意思決定を推進しています。 Amazon Redshift データ共有を使用すると、あるクラスターから別のクラスターにデータをコピーしたり移動したりすることなく、ある Amazon Redshift データウェアハウス内のトランザクションの一貫性を保ったライブデータを別の Amazon Redshift データウェアハウスと安全に共有できます。同じ AWS アカウント内、アカウント間、リージョン間でデータ共有が使用可能です。
一部のお客様は、異なるアカウントの 50 ~ 100 のデータウェアハウスとデータを共有し、相互に共有を行っているため、誰がどのデータにアクセスしているかを追跡することが困難になっています。アクセス情報を取得するには、個々のアカウントの Amazon Redshift コンソールで確認しなければいけません。また、多くのお客様は、Amazon Simple Storage Service (Amazon S3) 上にデータレイクを持っており、さまざまなビジネスユニット内およびビジネスユニット間で共有されています。組織が成長し、データが民主化されるにつれて、管理者はガバナンスと監査のためにデータ共有を一元管理し、きめ細かいアクセス制御を適用できる機能を必要としています。
お客様からの要望から逆算して、次の新機能を発表します。Amazon Redshift データ共有と AWS Lake Formation の統合により、Amazon Redshift のお客様は AWS Lake Formation を使用して Amazon Redshift データ共有へのアクセスを一元管理できるようになります。
AWS Lake Formation は、Amazon S3 を活用したデータレイクを一元管理するための一般的な選択肢です。今回、AWS Lake Formation による Amazon Redshift データ共有のサポートにより、新しい設計パターンが増え、データウェアハウス全体のガバナンスとセキュリティ体制を広げます。この統合により、AWS Lake Formation を使用して、フェデレーテッド AWS Identity and Access Management (IAM) ユーザーおよび IAM ロールに Amazon Redshift データ共有で共有されているテーブルおよびビューに対するきめ細かいアクセス制御を定義できます。
お客様は、ビジネスユニット間でデータを共有するメカニズムを提供するデータメッシュのアプローチを用いています。また、お客様はモダンデータアーキテクチャを使用して、データレイクストアや Amazon Redshift のマネージドストレージからのデータをビジネスユニット間で共有しています。 AWS Lake Formation は、ビジネスユニット内およびビジネスユニット全体にデータガバナンスを適用する機能を提供します。これにより、安全なデータアクセスと共有、簡単なデータ検出、およびデータアクセスの集中監査が可能になります。
ユナイテッド航空は人々をつなぎ、世界を一つにする事業を行っています。
「データ駆動型企業として、ユナイテッド航空は、革新的なモダンデータ駆動型アプリケーションを構築する分析コミュニティ向けに統合されたデータと分析エクスペリエンスを生み出そうとしています。 我々は、Athena、Aurora、Amazon Redshift、AWS Lake Formation などのさまざまな AWS サービスを使用して Purpose Built なデータメッシュ アーキテクチャを構築し、きめ細かいデータアクセスとコラボレーションに関する管理とガバナンスを簡素化することで、これを達成できると考えています。」
-Ashok Srinivas, Director of ML Engineering and Sarang Bapat, Director of Data Engineering.
この投稿では、AWS Lake Formation を使って Amazon Redshift データ共有のアクセスと権限を一元管理する方法を示します。
ソリューション概要
このソリューションでは、データガバナンスのために Amazon Redshift データ共有と AWS Lake Formation を統合することがデータドメインの構築にどのように役立つか、またデータメッシュアプローチを使用してデータドメインを統合し、ビジネスユニット全体でのデータ共有とフェデレーションを可能にする方法を示します。次の図は、ソリューションのアーキテクチャを示しています。
データメッシュは、分散型のドメイン指向のアーキテクチャです。一元管理されたフェデレーテッドデータカタログを介してデータプロデューサーとデータコンシューマーを分離することを重視しています。通常、プロデューサーとコンシューマーはそれぞれ独自のアカウント内で運用されます。これらのデータメッシュ特性の詳細は次のとおりです。
- データプロデューサー – データプロデューサーはデータプロダクトを所有し、データの生成や正確性の維持、データプロダクトを最新の状態に保つ責任があります。データプロデューサーはどのデータセットを公開して利用できるかを決定し、セントラルガバナンスアカウントの一元管理されたデータカタログにデータセットを登録することでデータセットを共有します。セントラルのガバナンススチュワードまたは管理者チームとともにデータプロダクトを管理するためのプロデューサー側のスチュワードまたは管理者が存在する場合があります。
- セントラルガバナンスアカウント – AWS Lake Formation により、共有データセットに対するきめ細かいアクセス管理が可能になります。一元化されたデータカタログにより、コンシューマーは共有データセットをすばやく検索できるようになり、管理者は共有データセットに対するアクセス許可を一元管理できるようになり、セキュリティチームはビジネスユニット全体でのデータプロダクトの使用状況を監査および追跡できるようになります。
- データコンシューマー – データコンシューマーは、セントラルガバナンス アカウントから共有リソースへのアクセスを取得します。これらのリソースはコンシューマーの AWS Glue データカタログ内で利用できるため、コンシューマー側のデータスチュワードや管理者が管理できるデータベースやテーブルへのきめ細かいアクセスが可能になります。
次の手順では、データメッシュアーキテクチャのセントラルガバナンスパターンで、AWS Lake Formation によって Amazon Redshift データ共有をどのように統制管理できるかの概要を示します。
- プロデューサーアカウントでは、 Amazon Redshift プロデューサークラスター内にデータオブジェクトが作成および維持されます。データウェアハウス管理者は、Amazon Redshift データ共有を作成し、データセット (テーブル、ビュー) を共有に追加します。
- データウェアハウス管理者は、セントラルガバナンスアカウントのデータカタログへのデータ共有へのアクセスを許可します。
- セントラルガバナンスアカウントでは、データレイク管理者が AWS Lake Formation で管理できるようにAmazon Redshift データ共有を受け入れ、 そのデータ共有を指す AWS Glue データベースを作成します。
- データレイク管理者は、AWS Lake Formation のクロスアカウント共有を使用して、AWS Glue データベースとテーブルをコンシューマーアカウントと共有します。
- コンシューマーアカウントでは、データレイク管理者は AWS Resource Access Manager (AWS RAM) 経由でリソース共有の招待を受け入れるとデータベースがリストされているのが確認できます。
- データレイク管理者は、きめ細かいアクセス制御を定義し、アカウント内の IAM ユーザー (この投稿では
consumer1
とconsumer2
) にデータベースとテーブルに対するアクセス許可を付与します。 - Amazon Redshift クラスターでは、データウェアハウス管理者が Glue データベースを指す Amazon Redshift データベースを作成し、作成された Amazon Redshift データベースの使用を IAM ユーザーに許可します。
- IAM ユーザーとしてのデータアナリストは、Amazon Redshift クエリエディタなどの好みのツールを使用して、AWS Lake Formation のきめ細かい権限に基づいてデータセットにアクセスできるようになります。
この投稿の例では、次のアカウント設定を使用します。
- プロデューサーアカウント – 123456789012
- セントラルアカウント – 112233445566
- コンシューマーアカウント – 665544332211
前提条件
Amazon Redshift データ共有を作成し、データセットを追加する
プロデューサーアカウントで、暗号化を有効にした RA3 ノードタイプを使用して Amazon Redshift クラスターを作成します。次の手順を実行します。
- Amazon Redshift コンソールで、クラスターサブネットグループを作成します。
詳細については、「コンソールを使用したクラスター サブネット グループの管理」を参照してください。
- [Create cluster] を選択します。
- [Cluster identifier] には、選択したクラスター名を指定します。
- [Node type] で、RA3 ノードタイプのいずれかを選択します。
この機能は、RA3 ノードタイプでのみサポートされます。
- [Number of nodes] に、クラスターに必要なノードの数を入力します。
- [Database configurations] で、管理者ユーザー名と管理者ユーザーのパスワードを選択します。
- [Cluster permissions] で、IAM ロールを選択し、それをデフォルトとして設定できます。
デフォルトの IAM ロールの詳細については、「Amazon Redshift 用にデフォルトの IAM ロールを作成する」を参照してください。
- デフォルト設定を変更するには、 [Additional configurations] の横にある [Use defaults] オプションをオンにします。
- [Network and security] で、次のように指定します。
- [Virtual private cloud (VPC)] では、クラスターをデプロイする VPC を選択します。
- [VPC security groups] では、デフォルトのままにするか、適切なセキュリティ グループを追加します。
- [Cluster subnet group] で、作成したクラスターサブネットグループを選択します。
- [Database configuration] の [Encryption] セクションで、[Use AWS Key Management Service (AWS KMS)] または [Use a hardware security module (HSM)] を選択します。
暗号化はデフォルトでは無効になっています。
- [Choose an AWS KMS key] では、既存の AWS Key Management Service (AWS KMS) キーを選択する、もしくは [Create an AWS KMS key] を選択して、新しいキーを作成することができます。
新しいキーを作成する場合には、「キーの作成」を参照してください。
- [Create cluster] を選択します。
- この投稿では、次の スクリプト を使用してテーブルを作成し、プロデューサーの Amazon Redshift クラスターにデータをロードします。
データ共有の承認
AWS Command Line Interface (AWS CLI) の最新バージョンをインストールまたは更新して、AWS CLI を実行してデータ共有を承認します。手順については、「AWS CLI の最新バージョンのインストールまたは更新」を参照してください。
AWS Lake Formation の権限を設定
AWS Lake Formation で AWS Glue データカタログを使用するには、セントラルガバナンスアカウントで次の手順を実行して、IAM ベースのアクセス制御ではなく、Lake Formation のアクセス許可を使用してカタログリソースを制御するようにデータカタログ設定を更新します。
- AWS Lake Formation コンソールに管理者としてサインインします。
- ナビゲーション ウィンドウの [Data catalog] で、 [Settings] を選択します。
- [Use only IAM access control for new databases] の選択を解除します。
- [Use only IAM access control for new tables in new databases] の選択を解除します。
- [Cross account version settings] で [Version 3] を選択します。
- [Save] を選択します。
IAM ユーザーをデータレイク管理者として設定する
既存のデータレイク管理者ユーザーまたはロールを使用している場合は、次の管理ポリシーを追加し、以下のセットアップ手順をスキップします。
AWSGlueServiceRole
AmazonRedshiftFullAccess
それ以外の場合、IAM ユーザーをデータレイク管理者として設定するには、次の手順を実行します。
- IAM コンソールのナビゲーションペインで [Users] を選択します。
- データレイク管理者として指定する IAM ユーザーを選択します。
- [Permissions] タブで [Add an inline policy] を選択します。
- <AccountID> を自分のアカウント ID に置き換え、次のポリシーを追加します。
- ポリシー名を指定します。
- 設定を確認して保存します。
- [Add permissions] ボタンを選択し、[Attach existing policies directly] を選択します。
- 次のポリシーを追加します。
AWSLakeFormationCrossAccountManager
AWSGlueConsoleFullAccess
AWSGlueServiceRole
AWSLakeFormationDataAdmin
AWSCloudShellFullAccess
AmazonRedshiftFullAccess
- [Next: Review and add permissions] を選択します。
データコンシューマーアカウントの設定
コンシューマー アカウントでは、セントラルガバナンスアカウントで前述した手順に従って、AWS Lake Formation とデータレイク管理者をセットアップします。
- データコンシューマーアカウントで、暗号化付きの RA3 ノードタイプを使用して Amazon Redshift クラスターを作成します (プロデューサーアカウントで Amazon Redshift クラスターを作成する手順を参照してください)。
- [Launch Stack] を選択して AWS CloudFormation テンプレートをデプロイし、ポリシーを持つ 2 人の IAM ユーザーを作成します。
スタックは、データアナリストとして次のユーザーを作成します
consumer1
consumer2
- CloudFormation スタックが作成されたら、スタックの [Outputs] タブに移動します。
ConsoleIAMLoginURL
とLFUsersCredentials
の値を取得します。
LFUsersCredentials
の値を選択して、AWS Secrets Manager コンソールに移動します。- [Secret value] セクションで、[Retrieve secret value] を選択します。
- パスワードのシークレット値を取得します。
consumer1
と consumer2
はどちらも、AWSマネジメントコンソールにログインするために、これと同じパスワードを使用する必要があります。
AWS Lake Formation を使用して Amazon Redshift データ共有を設定する
プロデューサーアカウント
コンソールを使用してデータ共有を作成
プロデューサーアカウントで Amazon Redshift データ共有を作成し、セントラルアカウントの AWS Lake Formation と共有するには、次の手順を実行します。
- Amazon Redshift コンソールで、データ共有を作成するクラスターを選択します。
- クラスターの詳細ページで、 [Datashares] タブに移動します。
- [Datashares created in my namespace] で、[Connect to database] を選択します。
- [Create datashare] を選択します。
- [Datashare type]として、[Datashare] を選択します。
- [Datashare name] に名前を入力します (この投稿では、demotahoeds)。
- [Database name] で、データ共有オブジェクトを追加するデータベースを選択します (この投稿では dev) 。
- [Publicly accessible] で、[Turn off] を選択します (または、パブリックにアクセス可能なクラスターとデータ共有を共有するには [Turn on] を選択します)。
- [DataShare objects] で、[Add] を選択してスキーマをデータ共有に追加します (この投稿ではパブリック スキーマ) 。
- [Tables and views] で [Add] を選択し、テーブルとビューをデータ共有に追加します (この投稿では、テーブル
customer
とビューcustomer_view
を追加します)。
- [Data consumers] で、[Publish to AWS Data Catalog] を選択します。
- [Publish to the following accounts] で、[Other AWS accounts] を選択します。
- コンシューマーアカウントの AWS アカウント ID を指定します。この投稿では、Lake Formation 中央ガバナンス アカウントの AWS アカウント ID を提供します。
- 同じアカウント内で共有するには、[Local account] を選択します。
- [Create datashare] を選択します。
- データ共有が作成されたら、[Datashares] タブに戻り、 [Datashares created in my namespace] の下の検索バーにデータ共有名を入力して確認できます。
- データ共有名を選択すると、その詳細が表示されます。
- [Data consumers] の下に、コンシューマーアカウントのデータカタログのコンシューマーのステータスが [Pending Authorization] として表示されます。
- コンシューマーデータカタログのチェックボックスを選択すると、 [Authorize] ボタンが有効になります。
- [Authorize] をクリックして、コンシューマーアカウントのデータカタログへのデータ共有アクセスを承認すると、コンシューマーのステータスが [Authorized] に変わります。
SQL コマンドを使用してデータ共有を作成する
プロデューサーアカウントでデータ共有を作成し、セントラルアカウントの AWS Lake Formation と共有するには、次の手順を実行します。
- Amazon Redshift コンソールのナビゲーションペインで、[Query editor V2] を選択します。
- クラスター名を選択 (右クリック) し、[Edit connection] または [Create Connection] を選択します。
- [Authentication] で、[Temporary credentials] を選択します。
さまざまな認証方法の詳細については、「Amazon Redshift データベースに接続する」を参照してください。
- [Database] にデータベース名を入力します (この投稿では dev) 。
- [User name] に、データベースへのアクセスを許可されたユーザーを入力します (この投稿では awsuser) 。
- [Save] を選択してデータベースに接続します。
- 次の SQL コマンドを実行してデータ共有を作成し、共有するデータオブジェクトを追加します。
- 次の SQL コマンドを実行して、プロデューサーのデータ共有をセントラルガバナンスアカウントと共有します。
- 次の SQL コマンドを実行すると、作成されたデータ共有と共有されたオブジェクトを確認できます。
- AWS CLI を使用して次のコマンドを実行して、セントラルデータカタログに対するデータ共有を承認し、AWS Lake Formation がデータ共有を管理できるようにします。 AWS マネジメントコンソールを使用して承認する手順については、「データ共有の承認と承認の取り消し」を参照してください。
以下は出力例です。
前のセクションで説明した手順に従って、コンソールでデータ共有のステータスを確認できます。
セントラルカタログアカウント
データレイク管理者は、セントラルガバナンスアカウントで AWS Lake Formation とのデータ共有を受け入れて登録し、同様にデータベースを作成します。次の手順を実行します。
- データレイク管理者の IAM ユーザーまたはロールとしてコンソールにサインインします。
- AWS Lake Formation コンソールに初めてログインする場合は、[Add myself] を選択し、[Get Started] を選択します。
- ナビゲーションペインの [Data catalog] で、 [Data sharing] を選択し、 [Configuration] タブで Amazon Redshift データ共有の Invitations を表示します。
- データ共有を選択し、[Review invitation] を選択します。
invitation の詳細を示すウィンドウが表示されます。
- [Accept] を選択して、Amazon Redshift データ共有を AWS Glue データカタログに登録します。
- AWS Glue データベースの名前を入力し、[Skip to Review and create] を選択します。
- 内容を確認し、[Create database] を選択します。
AWS Glue データベースが Amazon Redshift データ共有上に作成されると、それらのデータベースを [Shared databases] で表示できます。
AWS CLI を使用してデータ共有を登録し、データベースを作成することもできます。次のコマンドを使用します。
- セントラルアカウントと共有される Amazon Redshift データ共有について確認します。
- Amazon Redshift データ共有を受け入れて Data Catalog に関連付けます。
以下は出力例です。
- AWS Lake Formation に Amazon Redshift データ共有を登録します。
- 受け入れられた Amazon Redshift データ共有を指す AWS Glue データベースを作成します。
これで、セントラルガバナンスアカウントのデータレイク管理者は、AWS Lake Formation のクロスアカウント共有機能を使用して、データベースとテーブルの両方に対するコンシューマーアカウントへのアクセスを表示および共有できるようになりました。
データコンシューマーにデータ共有アクセスを許可する
共有された AWS Glue データベースに対するコンシューマーアカウントへのアクセス許可を付与するには、次の手順を実行します。
- AWS Lake Formation コンソールのナビゲーションペインの [Permissions] で、 [Data lake permissions] を選択します。
- [Grant] を選択します。
- [Principals] で、 [External accounts] を選択します。
- コンシューマーアカウント ID を入力して Enter キーを押します (この投稿では 665544332211)。
- [LF-Tags or catalog resources] で、 [Named data catalog resources] を選択します。
- [Databases] では、データベース
demotahoedb
を選択します。 - [Database permissions] と [Grantable permissions] の両方に [Describe] を選択します。
- [Grant] を選択します。
コンシューマーアカウントにテーブルに対するアクセス許可を付与するには、次の手順を実行します。
- AWS Lake Formation コンソールのナビゲーション ペインの [Permissions] で、[Data lake permissions] を選択します。
- [Grant] を選択します。
- [Principals] で、 [External accounts] を選択します。
- コンシューマーアカウントを指定します (この投稿では 665544332211 を使用します)。
- [LF-Tags or catalog resources] で、 [Named data catalog resources] を選択します。
- [Databases] では、データベース [demotahoedb] を選択します。
- [Tables] で、 [All tables] を選択します。
- [Table permissions] と [Grantable permissions] の両方で [Describe] と [Select] を選択します。
- [Grant] を選択して変更を適用します。
コンシューマーアカウント
コンシューマー管理者はセントラルガバナンスアカウントから共有リソースを受け取り、次の表に示すように、コンシューマーアカウント内の他のユーザーにアクセスを委任します。
IAM User | Object Access | Object Type | Access Level |
consumer1 |
public.customer |
Table | All |
consumer2 |
public.customer_view |
View | specific columns: c_customer_id , c_birth_country , cd_gender , cd_marital_status , cd_education_status |
データ コンシューマー アカウントで、次の手順に従って、アカウントと共有されているリソースを受け入れます。
- データレイク管理者の IAM ユーザーまたはロールとしてコンソールにサインインします。
- AWS Lake Formation コンソールに初めてログインする場合は、[Add myself] を選択し、[Get Started] を選択します。
- AWS RAM コンソールにサインインします。
- ナビゲーション ウィンドウの [Shared with me] で [Resource shares] を選択し、保留中の Invitation を表示します。2 つの Invitation を受け取ります。
- 保留中の Inviation を選択し、リソース共有を受け入れます。
- AWS Lake formation コンソールのナビゲーションペインの [Data catalog] で、[Databases] を選択して、クロスアカウント共有データベースを表示します。
AWS Lake Formation を使用してデータアナリストと IAM ユーザーにアクセスを許可する
これで、コンシューマーアカウントのデータレイク管理者は、共有データベースとテーブルに対するアクセス許可をコンシューマーアカウントのユーザーに委任できるようになりました。
consumer1 と consumer2 にデータベース権限を付与する
IAM ユーザー consumer1
と consumer2
にデータベース権限を付与するには、次の手順に従います。
- AWS Lake Formation コンソールのナビゲーション ペインの [Data catalog] で、 [Databases] を選択します。
- データベース
demotahoedb
を選択し、 [Actions] メニューから [Grant] を選択します。
- [Principals] で、 [IAM users and roles] を選択します。
- IAM ユーザー consumer1 と consumer2 を選択します。
- [LF-Tags or catalog resources] では、demotahoedb がデータベースとしてすでに選択されています。
- [Database permissions] で [Describe] を選択します。
- [Grant] を選択して権限を適用します。
consumer1 にテーブル権限を付与する
IAM ユーザー consumer1
にテーブル public.customer
に対するアクセス許可を付与するには、次の手順に従います。
- ナビゲーション ペインの [Data catalog] で、 [Databases] を選択します。
- データベース
demotahoedb
を選択し、「Actions」メニューから「Grant」を選択します。 - [Principals] で、 [IAM users and roles] を選択します。
- IAM ユーザー
consumer1
を選択します。 - [LF-Tags or catalog resources] では、
demotahoedb
がデータベースとしてすでに選択されています。 - [Tables] で、
public.customer
を選択します。 - [Table permissions] で [Describe] と [Select] を選択します。
- [Grant] を選択して権限を適用します。
consumer2 に列権限を付与する
IAM ユーザー consumer2
に public.customer_view
の機密情報ではない列に対するアクセス許可を付与するには、次の手順に従います。
- ナビゲーション ペインの [Data catalog] で、 [Databases] を選択します。
- データベース
demotahoedb
を選択し、 [Actions] メニューから [Grant] を選択します。 - [Principals] で、 [IAM users and roles] を選択します。
- IAM ユーザー
consumer2
を選択します。 - [LF-Tags or catalog resources] では、
demotahoedb
がデータベースとしてすでに選択されています。 - [Tables] で、
public.customer_view
を選択します。
- [Table permissions] で [Select] を選択します。
- [Data permissions] で、 [Column-based access] を選択します。
- [Include columns] を選択し、機密情報ではない列 (
c_customer_id
、c_birth_country
、cd_gender
、cd_marital_status
、およびcd_education_status
) を選択します。 - [Grant] を選択して権限を適用します。
コンシューマーアカウントの Amazon Redshift クラスターからデータ共有の利用設定を行う
コンシューマー 用の Amazon Redshift データウェアハウスで、Query Editor V2 を使用して管理者ユーザーとしてログインし、次の手順を実行します。
- 次の SQL コマンドを使用して、共有されたカタログデータベースから Amazon Redshift データベースを作成します。
- 次の SQL コマンドを実行して、Amazon Redshift データベースを作成し、IAM ユーザー consumer1 と consumer2 に作成したデータベースに対して USAGE の許可を与えます。
AWS Lake Formation アクセス許可を強制するために IAM 認証を利用します。次の手順に従ってクエリエディタ v2 を設定します。
- クエリエディタ v2 の左下隅にある設定アイコンを選択し、[Account Settings] を選択します。
- [Connection settings] で、[Authenticate with IAM credentials] を選択します。
- [Save]を選択します。
コンシューマーユーザーとして共有データセットをクエリする
IAM ユーザー consumer1
が Amazon Redshift からデータ共有アクセス権があることを検証するには、次の手順を実行します。
- IAM ユーザー
consumer1
としてコンソールにサインインします。 - Amazon Redshift コンソールのナビゲーションペインで [Query Editor V2] を選択します。
- コンシューマークラスタに接続するには、ツリー ビュー ペインでコンシューマークラスタを選択します。
- プロンプトが表示されたら、 [Authentication] で [Temporary credentials using your IAM identity] を選択します。
- [Database] にデータベース名を入力します (この投稿では
dev
) 。 - ユーザー名は現在の IAM アイデンティティ にマッピングされます(この投稿では
consumer1
)。 - [Save] を選択します。
- データベースに接続したら、次の SQL コマンドを使用して、現在ログインしているユーザーを確認できます。
- コンシューマーアカウントで作成されたフェデレーションデータベースを検索するには、次の SQL コマンドを実行します。
consumer1
の権限を検証するには、次の SQL コマンドを実行します。
次のスクリーンショットに示すように、consumer1
はデータ共有の customer オブジェクトに正常にアクセスできます。
では、 consumer2
が同じコンシューマークラスタ上のデータ共有テーブル「public.customer」にアクセスできないことを検証してみましょう。
- コンソールからログアウトし、IAM ユーザー
consumer2
としてサインインします。 - 同じ手順に従って、クエリエディタ v2 を使用してデータベースに接続します。
- 接続できたら、同じクエリを実行します。
ユーザー consumer2
は、次のスクリーンショットに示すように、アクセスの拒否エラーを受け取るはずです。
consumer2
に対する public.customer_view
ビューの 列レベルのアクセス権限を検証してみましょう。
consumer2
としてクエリエディタ v2 に接続し、次の SQL コマンドを実行します。
次のスクリーンショットでは、consumer2 が AWS Lake Formation によって許可された列にのみアクセスできることがわかります。
まとめ
データメッシュアプローチは、組織がビジネスユニット間でデータを共有できる方法を提供します。各ドメインは、データの取り込み、データ処理、データの提供を担当します。ドメインの担当者は、データ所有者でありドメインの専門家であり、データの品質と正確性に対して責任を負います。データガバナンスのために AWS Lake Formation と Amazon Redshift データ共有を使用すると、データメッシュアーキテクチャの構築が容易になり、きめ細かいアクセス制御によるビジネスユニット間のデータ共有とフェデレーションが可能になります。
AWS Lake Formation との Amazon Redshift データ共有の開始に貢献していただいた皆様に心より感謝いたします。
Debu Panda, Michael Chess, Vlad Ponomarenko, Ting Yan, Erol Murtezaoglu, Sharda Khubchandani, Rui Bi
参考情報
- Modern Data Architecture on AWS
- Designing a data lake for growth and scale on the AWS Cloud
- Design a data mesh architecture using AWS Lake Formation and AWS Glue
翻訳はソリューションアーキテクトの池田 敬之が担当しました。