多くのユーザーとチームと機密情報を伴う大規模なビジネス インテリジェンス (BI) プロジェクトには、多面的なセキュリティ アーキテクチャが必要です。このようなアーキテクチャは、BI 管理者とアーキテクトに、ユーザーがアクセスできる情報の量を最小限に抑える機能を提供する必要があります。簡単なソリューションを管理するには アマゾンクイックサイト ユーザーおよびアセットへのアクセス許可を使用するには、 AWSコマンドラインインターフェイス (AWS CLI)または AWSマネジメントコンソール QuickSight ユーザー ロールとダッシュボード アクセスを手動で編集します。ただし、特定のケースでは、企業には簡単に数百、数千のユーザーやグループが存在する可能性があり、これらのアクセス管理方法は効率的ではありません。一元化された QuickSight セキュリティ アーキテクチャを展開および管理するための高度なプログラム可能なアプローチを提供してほしいという多数のリクエストを受け取りました。
この投稿では、QuickSight の認証と認可の詳細なアクセス制御のベスト プラクティスについて説明し、一元化されたクラウド アプリケーションに次のような機能を提供します。 AWSクラウド開発キット (AWS CDK) スタックをダウンロードします。私たちのソリューションの利点の 1 つは、企業が AWS を離れることなく、セキュリティ フレームワークをデプロイして BI のアクセス制御を管理できることです。
すべての設定は次の場所に保存されます。 AWS SystemsManagerパラメータストア。パラメータ ストアは、構成データ管理とシークレット管理のための安全な階層ストレージを提供します。ユーザー名、ユーザー権限、パスワード、データベース文字列などのデータをパラメーター値として保存できます。参照できます AWS システム マネージャー パラメータの作成時に指定した一意の名前を使用して、スクリプト内のパラメータ、構成および自動化ワークフローを作成します。
AWS CDK アプリケーション テンプレートは、継続的インテグレーションおよび継続的デプロイメント (CI/CD) インフラストラクチャに適合し、AWS によって規定された定義済みポリシーに基づいてすべての認証と認可を付与または取り消します。これにより、BI 開発者や管理者によって発生する可能性のある人的エラーが回避されます。 BI 開発者は構成パラメータを編集して、新しいダッシュボードをエンドユーザーにリリースできます。同時に、BI 管理者は別のパラメータ セットを編集して、ユーザーまたはグループを管理できます。この AWS CDK CI/CD 設計は、BI アプリケーションの構築とデプロイの自動化を強制することで、開発と運用のアクティビティ間のギャップを埋めます。
セキュリティ要件
エンタープライズ BI アプリケーションの設計では、マルチテナントが一般的な使用例であり、1 つのインフラストラクチャで複数のユーザー セットにサービスを提供します。テナントは、独立系ソフトウェア ベンダー (ISV) のさまざまな顧客、または企業のさまざまな部門のいずれかになります。マルチテナント設計では、各テナントがダッシュボード、分析、およびその他の QuickSight アセットを共有します。各ユーザーは、同じテナントに属する他のすべてのユーザーを表示できますが (コンテンツ共有時など)、他のテナントには表示されません。 BI 管理チームは、各テナント内でさまざまなユーザー グループを作成して、資産へのアクセス権限や詳細レベルのデータ アクセスなどのデータ承認を制御する必要があります。
アセットへのアクセス許可のいくつかの使用例について詳しく説明します。 BI アプリケーションでは、通常、さまざまな資産がビジネス ドメイン (運用ダッシュボードやエグゼクティブ サマリー ダッシュボードなど) とデータ分類 (重要、機密性の高い、内部専用、パブリック) に従って分類されます。たとえば、販売結果データを分析するために 2 つのダッシュボードを使用できます。両方のダッシュボードの外観と操作性は似ていますが、データのセキュリティ分類が異なります。 Sales Critical Dashboard という名前の 1 つのダッシュボードには、重要なデータの列と行が含まれています。もう 1 つのダッシュボードは Sales Highly-Confidential ダッシュボードと呼ばれ、機密性の高いデータの列と行が含まれています。両方のダッシュボードを表示する権限を付与されているユーザーもいますが、セキュリティ レベルの低い権限を持ち、Sales Highly-Confidential ダッシュボードのみにアクセスできるユーザーもいます。
次の使用例では、次のように粒度レベルのデータ アクセスに対処します。
- 行レベルのアクセス (RLS) – Sales Critical Dashboard にアクセスできるユーザーの一部は、米国のデータのみを表示できます。ただし、一部のグローバル ユーザーは、米国や英国を含むすべての国のデータを表示できます。
- 列レベルのアクセス (CLS) – 一部のユーザーはデータセットの非個人識別情報 (PII) データ列のみを表示できますが、人事チームは同じデータセットのすべての列を表示できます。
大規模なプロジェクトでは、1 つの QuickSight アカウントに複数のテナント、数百のグループ、および数千のユーザーが含まれる場合があります。データ リーダー チームは、メンテナンス コストとセキュリティ リスクを軽減するために、ユーザーの作成と認証に 1 つのプロトコルを導入したいと考えています。この投稿で説明するアーキテクチャとワークフローは、データ リーダーがこの目標を達成するのに役立ちます。
さらに、日常の運用における人的エラーを回避するために、これらのセキュリティ権限を自動的に付与および取り消して、CI/CD インフラストラクチャに適合させる必要があります。詳細については、この投稿の後半で説明します。
アーキテクチャの概要
次の図は、このソリューションの QuickSight アカウント アーキテクチャを示しています。
- 作成者はダッシュボードを作成し、AWS Systems Manager パラメータストアを更新して、ダッシュボードをさまざまなグループにリリースします。
- 管理者は作成者からのリクエストを承認します
- 管理者は AWS Systems Manager パラメータ ストアを編集してユーザー管理 (ロール、名前空間) を更新します
- DevOps は AWS CDK を使用してアップデートをデプロイします
*グループ: オブジェクト アクセス許可グループは、オブジェクトの所有者/閲覧者を制御します。 RLS/CLS と組み合わせたデータ セグメント グループは、データ アクセスを制御します。
*データセット: 行レベルのセキュリティ (RLS) と列レベルのセキュリティ (CLS) によって制限されたすべてのデータが含まれます。
*QuickSight への初回ログイン時: 初めてログインする前に QuickSight ユーザーが登録されていない場合、リーダーが作成され、このリーダーのみがランディング ページ ダッシュボードを表示できます。このダッシュボードは、このアカウントのすべてのユーザーに共有されます。ランディング ページには、このユーザーが表示できるレポート リストが表示されます。
次の図は、アーキテクチャの認可ワークフローを示しています。
認可図の詳細:
- ユーザー情報 (部門、チーム、地理的位置) は、Amazon Redshift、Amazon Athena、またはその他のデータベースに保存されます。グループとユーザーのマッピングと組み合わせて、データ アクセスを制御するために RLS データベースが構築されます。
- 時間ごとの権限の割り当て:
- グループと従業員名 (ユーザー) のマッピング (membership.csv) およびグループと役割のマッピング (/qs/console/roles) に従って、AWS Lambda 関数はグループの作成、登録、ユーザー、グループメンバーの割り当て、グループメンバーシップの削除、読者の昇格を行います。ユーザーが作成者または管理者に降格され、ユーザーが作成者または管理者から読者に降格された場合は削除されます。
- /qs/config/access のグループとダッシュボードのマッピングに従って、AWS Lambda 関数はダッシュボードのアクセス許可を QuickSight グループに更新します。
- members.csv のグループと名前空間のマッピングに従って、AWS Lambda 関数は指定された名前空間に QuickSight グループを作成します。
- オブジェクトのアクセス許可とデータ セグメントのサンプル パラメーター:
- QuickSight ユーザー ロールのサンプル パラメーター:
- members.csv のサンプルデータ:
このソリューションでは、マルチテナンシーをサポートするためにカスタム名前空間がデプロイされます。の default
名前空間は、企業のすべての内部ユーザー用です (OkTank と呼びます)。 OKTank が作成するのは、 3rd-Party
外部ユーザーの名前空間。さらに多くのテナントをサポートする必要がある場合は、さらに多くのカスタム名前空間を作成できます。デフォルトでは、AWS アカウントあたりの名前空間は 100 に制限されています。この制限を増やすには、QuickSight 製品チームにお問い合わせください。マルチテナントの詳細については、を参照してください。 AmazonQuickSightを使用してアプリケーションにマルチテナント分析を組み込む.
各名前空間で、さまざまなタイプのグループを作成します。たとえば、 default
名前空間を作成します。 BI-Admin
& BI-Developer
のためのグループ admin
& author
ユーザー。 ために reader
では、アセット アクセス権限とデータ アクセスを制御するために、オブジェクト アクセス権限グループとデータ セグメント グループという 2 種類の QuickSight グループを展開します。
次の表は、オブジェクト アクセス許可グループがどのように許可を制御するかをまとめたものです。
グループ名 | 名前空間 | 許可 | ノート |
critical |
デフォルト | 両方のダッシュボードを表示します (重要なデータと機密性の高いデータが含まれます) | |
highlyconfidential |
デフォルト | 営業の機密性の高いダッシュボードのみを表示する | |
BI-Admin |
デフォルト | アカウント管理とすべてのアセットの編集 | のユーザー BI-Admin グループには、 Admin QuickSight ユーザーの役割。 |
BI-Developer |
デフォルト | すべてのアセットを編集する | のユーザー BI-Developer グループには、作成者 QuickSight ユーザー ロールが割り当てられます。 |
Power-reader |
デフォルト | すべてのアセットを表示し、セルフサービス分析レポートを実行するためのアドホック分析を作成します。 |
のユーザー ただし、このグループはアドホック レポートを保存したり共有したりすることはできません。 |
3rd-party |
デフォルト以外の名前空間 (3rd-party 名前空間など) |
読者とのみ共有できます (3rd-party-reader グループ (例) 同じ名前空間内の |
デフォルト以外の名前空間では、デフォルトの名前空間のクリティカル グループに似た他のオブジェクト アクセス許可グループを作成することもできます。 |
QuickSight グループ、ユーザー、ユーザー ロールの詳細については、次を参照してください。 Amazon QuickSight 内でのユーザーアクセスの管理, Amazon QuickSight 用のユーザーのプロビジョニング, 管理ダッシュボードを使用して Amazon QuickSight オブジェクトを一元的に表示する.
2 番目のタイプのグループ (データ セグメント グループ) は、 行レベルのセキュリティ データセットと 列レベルのセキュリティ、次の表に示すようにデータ アクセスを制御します。
グループ名 | 名前空間 | 許可 | 対象領域 |
USA |
デフォルト | どのダッシュボードでも米国のデータのみを表示します | 行レベル |
GBR |
デフォルト | ダッシュボードでは英国のデータのみを表示します | 行レベル |
All countries |
デフォルト | あらゆるダッシュボードですべての国のデータを表示 | 行レベル |
non-PII |
デフォルト | 社会保障番号、年収、その他の PII データのすべての列を表示できない | 列レベル |
PII |
デフォルト | PII データを含むすべての列を表示できます | 列レベル |
デフォルト以外の名前空間に同様のグループをセットアップできます。
これらの異なるグループは互いに重複する可能性があります。たとえば、ユーザーがグループに属している場合、 USA
, Critical
, PII
、両方のダッシュボードですべての列を含む米国のデータを表示できます。次のベン図は、これらのグループ間の関係を示しています。
要約すると、名前空間、グループ、ユーザー、RLS、CLS などの QuickSight 機能を組み合わせることで、多面的なセキュリティ アーキテクチャを定義できます。関連するすべての設定はパラメータ ストアに保存されます。 QuickSight ユーザー リストとグループとユーザーのマッピング情報は、 Amazon シンプル ストレージ サービス (Amazon S3) バケットを CSV ファイル (名前付き) として保存 membership.csv
)。この CSV ファイルは、LDAP クエリの出力結果である可能性があります。いくつかの AWSラムダ 関数は、パラメータと membership.csv
。定義された設定に従って、Lambda 関数はグループ、ユーザー、アセットのアクセス権限を作成、更新、または削除します。
必要なセキュリティ設定が完了すると、Lambda 関数は QuickSight API を呼び出して更新情報を取得し、結果を CSV ファイルとして S3 バケットに記録します。 BI 管理チームは、これらのファイルを使用してデータセットを構築し、ダッシュボードで結果を視覚化できます。詳細については、を参照してください。 管理ダッシュボードを使用して Amazon QuickSight オブジェクトを一元的に表示する & Amazon QuickSight で管理コンソールを構築して使用状況メトリクスを分析する.
さらに、Lambda 関数のエラーとユーザー削除イベントは、管理チームが確認できるようにこの S3 バケットに保存されます。
オートメーション
次の図は、Lambda 関数の全体的なワークフローを示しています。
プログラム可能な方法を使用して、グループとユーザーを自動的に作成および構成します。アドホックなユーザー登録リクエスト (ユーザーが記録されていない場合など) membership.csv
ただし、遅延のせいで)、ユーザーが認証できる限り、ユーザーは次のように想定できます。 AWS IDおよびアクセス管理 (IAM)役割 quicksight-fed-user
QuickSight リーダーとしてセルフプロビジョニングします。このセルフプロビジョニングされたリーダーは、ダッシュボードと対応するグループのリストを提供するランディング ページ ダッシュボードのみを表示できます。ダッシュボードとグループのマッピングに従って、この新しいリーダーは、ダッシュボードにアクセスするために特定のグループのメンバーシップを申請できます。グループ所有者がアプリケーションを承認すると、時間ごとの Lambda 関数が次回実行時に新しいユーザーをグループに追加します。
CI/CD パイプラインは AWS CDK から開始されます。 BI 管理者および作成者は、Systems Manager パラメータを更新して、AWS CDK スタック内の新しいダッシュボードまたは他の QuickSight アセットをリリースできます。 granular_access_stack.py
。 BI 管理者は、同じスタック内の Systems Manager パラメータを更新して、ネームスペース、グループ、またはユーザーを作成、更新、または削除できます。その後、DevOps チームは、更新された AWS CDK スタックをデプロイして、これらの変更を Systems Manager パラメータまたは他の AWS リソースに適用できます。 Lambda 関数は 1 時間ごとにトリガーされて API を呼び出し、関連する QuickSight アカウントに変更を適用します。
規模
Lambda 関数は、最大実行時間 15 分に制限されています。この制限を克服するには、Lambda 関数を次のように変換できます。 AWSグルー 次のような大まかな手順を含む Python シェル スクリプト:
- ダウンロード ボト3 ホイールファイルから pypi.org.
- Wheel ファイルを S3 バケットにアップロードします。
- ダウンロード ラムダ関数 それらを 1 つの Python スクリプトにマージし、AWS Glue Python シェル スクリプトを作成します。
- Boto3 ホイール ファイルの S3 パスを Python ライブラリ パスに追加します。追加するファイルが複数ある場合は、カンマで区切ってください。
- この AWS Glue ジョブを毎日実行するようにスケジュールします。
詳細については、を参照してください。 Python で AWS Glue ETL スクリプトをプログラムする & AWS Glue での Python ライブラリの使用.
前提条件
このソリューションを実装するには、次の前提条件を満たしている必要があります。
- QuickSight Enterprise アカウント
- Pythonの基本的な知識
- SQLの基本的な知識
- BIの基礎知識
リソースを作成する
から AWS CDK スタックをダウンロードしてリソースを作成します。 GitHubレポ.
granular_access
フォルダーでコマンドを実行します cdk deploy granular-access
リソースをデプロイします。詳細については、を参照してください。 AWS CDK 入門ワークショップ: Python ワークショップ.
ソリューションを展開する
AWS CDK スタックをデプロイすると、次のスクリーンショットに示すように、5 つの Lambda 関数が作成されます。
このスタックは、アカウント内に追加のサポート リソースも作成します。
granular_user_governance
関数は、によってトリガーされます アマゾンクラウドウォッチ イベントルール qs-gc-everyhour
。グループとユーザーの情報はファイルに定義されます membership.csv
。 S3 バケット名はパラメータ ストアに保存されます /qs/config/groups
。この機能のフローチャートを次の図に示します。
- 目的地を設定する
granular_user_governance
別の Lambda 関数に、downgrade_user
、とsource=Asynchronous invocation
&condition=On Success
.
以下の図はこの機能のフローチャートです。
管理者または作成者が管理する QuickSight アセットへの重要なアクセスが遮断されるのを避けるため、管理者または作成者ユーザーを削除し、Lambda 関数を使用して新しい読者ユーザーを作成することで、管理者または作成者を降格します。 downgrade_user
を選択します。 granular_user_governance
この関数は、管理者から作成者へのダウングレード、または作成者から管理者へのアップグレードを処理します。
- 目的地を設定する
downgrade_user
Lambda関数にgranular_access_assets_govenance
source=Asynchronous invocation
&condition=On Success
.
この機能のフローチャートを次の図に示します。
- 目的地を設定する
downgrade_user
Lambda関数にcheck_team_members
source=Asynchronous invocation
&condition=On Failure
.
check_team_members
この関数は、QuickSight API を呼び出して名前空間、グループ、ユーザー、およびアセットの情報を取得し、結果を S3 バケットに保存するだけです。 S3キーは monitoring/quicksight/group_membership/group_membership.csv
& monitoring/quicksight/object_access/object_access.csv
.
前の手順の 2 つの出力ファイルに加えて、エラー ログとユーザー削除ログ ( downgrade_user
) にも保存されます。 monitoring/quicksight
フォルダにコピーします。
- 目的地を設定する
granular_access_assets_govenance
Lambda関数にcheck_team_members
source=Asynchronous invocation
&condition=On Success
orcondition=On Failure
.
行レベルのセキュリティ データセットを作成する
最後のステップとして、RLS データセットを作成します。これにより、ダッシュボードを表示するユーザーに基づいてダッシュボード レコードを変更できます。
QuickSight は、ダッシュボード データセットからレコードをサブ選択するシステム管理のデータセットを適用することで RLS をサポートします。このメカニズムにより、管理者はフィルタリング データセット (RLS データセット) を提供できます。 username
or groupname
列は、ログインしているユーザーに自動的にフィルターされます。たとえば、次のような名前のユーザーです。 YingWang
QuickSightグループに所属 BI
したがって、ユーザー名に対応する RLS データセットのすべての行 YingWang
またはグループ名 BI
フィルタリングされます。ユーザー名とグループ名のフィルターを適用した後に RLS に残った行は、同じ名前の列を照合することでダッシュボード データセットをさらにフィルターするために使用されます。行レベルのセキュリティの詳細については、次を参照してください。 行レベル セキュリティ (RLS) を使用してデータセットへのアクセスを制限する.
このソリューションでは、サンプルのユーザー情報をファイルにエクスポートします。 membership.csv
、S3 バケットに保存されます。このファイルでは、RLS データセット定義用のサンプル グループをいくつか提供します。全体的なアーキテクチャ設計で説明されているように、これらのグループはデータ セグメント グループです。次のスクリーンショットは、いくつかのグループとそれらのグループ内のユーザーを示しています。
granular_user_governance
関数はこれらのグループを作成し、関連するユーザーをこれらのグループのメンバーとして追加します。
RLS データセットはどのように作成するのでしょうか?というテーブルがあるとします。 employee_information
私たちの組織の人事データベースにあります。次のスクリーンショットは、いくつかのサンプル データを示しています。
に基づく employee_information
テーブルの場合、というビューを作成します。 rls
RLS データセットの場合。次の SQL コードを参照してください。
次のスクリーンショットはサンプル データを示しています。
これでテーブルの準備ができたので、次のカスタム SQL を使用して RLS データセットを作成できます。
次のスクリーンショットはサンプル データを示しています。
グループにとって quicksight-fed-all-countries
を設定します。 username
, country
, city
null は、このグループ内のすべてのユーザーがすべての国のデータを表示できることを意味します。
国レベルの場合は、で定義されているセキュリティ ルールのみが適用されます。 groupname
そして国 columns
フィルタリングに使用されます。の username
& city
列は null として設定されます。のユーザーは、 quicksight-fed-usa
グループは米国のデータとそのユーザーのデータを表示できます。 quicksight-fed-gbr
グループはGBRのデータを閲覧できます。
ユーザーごとに groupname
null に設定すると、ユーザー名に割り当てられた特定の国と都市のみが表示されます。例えば、 TerryRigaud
米国オースティンのデータのみを表示できます。
QuickSight では、RLS データセット内の複数のルールが OR を使用して結合されます。
これらの多面的な RLS ルールを使用して、包括的なデータ アクセス パターンを定義できます。
クリーンアップ
今後の料金発生を回避するには、次のコマンドを実行して作成したリソースを削除します。
まとめ
この投稿では、BI 管理者が QuickSight の認証と認可の詳細なアクセス制御を設計および自動化する方法について説明しました。行レベルおよび列レベルのセキュリティ、グループ、名前空間などの QuickSight セキュリティ機能を組み合わせて、包括的なソリューションを提供します。 「BIOps」を通じてこれらの変更を管理することで、QuickSight セキュリティを管理するための堅牢でスケーラブルなメカニズムが保証されます。詳しく知ることができ、 QuickSight デモにサインアップする.
著者について
王英 は、AWS プロフェッショナル サービスのデータと分析のグローバル スペシャリティ プラクティスを担当するシニア データ視覚化エンジニアです。
アミール・バー・オル AWS プロフェッショナル サービスのプリンシパル データ アーキテクトです。 20 年間ソフトウェア組織を率い、データ分析プラットフォームと製品を開発した後、現在は大企業の顧客とその経験を共有し、クラウドでのデータ分析の拡張を支援しています。
- "
- &
- 100
- アクセス
- アクセス管理
- 活動
- Ad
- NEW
- 管理人
- すべて
- Amazon
- 分析
- 分析論
- API
- 申し込み
- 建築
- 資産
- 資産
- オースティン
- 認証
- 承認
- オートメーション
- AWS
- AWSラムダ
- BEST
- ベストプラクティス
- 国境
- ビルド
- 建物
- ビジネス
- ビジネス・インテリジェンス
- コール
- 例
- 変化する
- 課金
- 市町村
- 分類
- クラウド
- コード
- コマンドと
- 会社
- コンテンツ
- 国
- 作成
- Customers
- ダッシュボード
- データ
- データアクセス
- データ分析
- データ管理
- データの可視化
- データベース
- データベースを追加しました
- 需要
- 設計
- 破壊する
- 詳細
- 開発者
- 開発
- DevOps
- ドメイン
- エンジニア
- Enterprise
- 企業顧客
- イベント
- イベント
- エグゼクティブ
- export
- 特徴
- フィルター
- 名
- 初回
- フィット
- フレームワーク
- function
- 未来
- グローバル
- 助成
- グループ
- 認定条件
- hr
- HTTPS
- 何百
- IAM
- アイデンティティ
- 含めて
- 所得
- 増える
- 情報
- インフラ
- 統合
- インテリジェンス
- IT
- ジョブ
- join
- キー
- 知識
- ランディングページ
- 大
- LDAP
- 主要な
- LEARN
- レベル
- 図書館
- 限定的
- LINE
- リスト
- 場所
- 長い
- 管理
- メンバー
- 名
- 番号
- 注文
- その他
- その他
- 所有者
- パスワード
- パターン
- 敬虔な
- プラットフォーム
- 方針
- 校長
- プロダクト
- 製品
- プロジェクト
- プロジェクト(実績作品)
- 公共
- Python
- リーダー
- 読者
- 記録
- 減らします
- 参加申し込み
- の関係
- レポート
- 要件
- リソース
- 結果
- レビュー
- リスク
- ルール
- ラン
- ランニング
- セールス
- 規模
- セキュリティ
- セルフサービス
- サービス
- セッションに
- シェアする
- 株式
- シェル(Shell)
- 簡単な拡張で
- So
- 社会
- ソフトウェア
- SQL
- ストレージ利用料
- 店舗
- サポート
- サポート
- システム
- 時間
- Uk
- 組合
- アップデイト
- 更新版
- us
- USA
- users
- 詳しく見る
- 可視化
- weekly
- ホイール
- 誰
- 以内
- ワークフロー
- 年