Amazon Web Services ブログ

Amazon QuickSight の分析機能をマルチテナントのアプリケーションに埋め込む

Amazon QuickSight は最近、埋め込みオーサリング、マルチテナンシーの名前空間、カスタムユーザーアクセス許可、アカウントレベルのカスタマイズという 4 つの新機能を導入しました。Enterprise Edition で利用できる既存の ダッシュボード埋め込み 機能および API 機能と併用することにより、高度なダッシュボード機能と分析機能を SaaS アプリケーションに統合できるようになりました。これらのアプリケーションを構築する開発者や独立系ソフトウェアベンダー (ISV) は、組み込みの事前設定済み(予め用意された)ダッシュボードをすべてのエンドユーザーに提供できるようになり、高度なアドホック探索機能やダッシュボード構築機能もユーザーに提供できるようになりました。

本記事では、架空の ISV のユースケースとして、QuickSight を使うことで、インフラストラクチャのデプロイまたは管理を行うことなく、アプリケーションに簡単に分析を組み込み、数十万人のユーザーにスケールする方法を説明します。

新機能

  • 埋め込みオーサリング – QuickSight のホームページ、検索、データエクスペリエンスなど、完全なダッシュボード構築エクスペリエンスをポータルまたはアプリケーションに埋め込むことができます。これにより、ISV はアプリケーションのパワーユーザーにアドホックなデータ探索およびオーサリング機能を提供できます。ユーザーは、使用状況データを調べたり、ダッシュボードとして特定のビューを作成し、作成したものを組織内の他のユーザーまたはグループと共有することができます。ISV にとって、これは顧客のリクエストごとにアドホック開発を実行する必要がないことを意味します。一方、顧客にとっては、自身のデータに関連するインサイトをすばやく簡単に見つけることができます。
  • 名前空間(Namespace) – 名前空間を使用すると、QuickSight アカウントのユーザーセットを論理的にグループ化および分離できます。名前空間を使用する前は、QuickSight アカウントのすべてのユーザーが単一の(デフォルト)名前空間にいたため、(コンテンツの共有を試みる場合など)ユーザ同士がお互いを認識することが出来ました。今回、新たに隔離された名前空間ごとに作成者と閲覧者をプロビジョニングできるようになりました。これにより、名前空間内での作成者と閲覧者は相互に連携できますが、QuickSight アカウント内の他のユーザーからは分離されます。名前空間は作成者が同僚とのみ共有と共同作業ができるよう制限し、埋め込みオーサリングを使用するときに安全なマルチテナンシーを提供するためには重要です。1つのQuickSight アカウントでプロビジョニングされたすべてのユーザーは、(UI または SSO 経由で)デフォルトの名前空間に存在します。デフォルト以外の名前空間に現在アクセスできるのは、フェデレーティッドシングルサインオン(SSO)ユーザーのみです。
  • カスタムユーザーアクセス許可 – この機能では、作成者のアクセス許可をカスタマイズできます。たとえば、データソースやデータセットの作成権限を削除できます。これにより、管理者は埋め込みまたは通常の作成者に限定された機能を提供でき、ユースケースに必要な特定のデータセットまたはデータソースのみを共有することで、作成者に精選されたエクスペリエンスを作成できます。
  • QuickSight のカスタマイズ – QuickSight のサンプル分析と動画コンテンツをオフにし、名前空間レベルでデフォルトのテーマを指定することができます。

マルチテナント埋め込み分析アーキテクチャ

次の図は、作成者が名前空間内のどの位置に存在するか、および AWS アカウント全体とどのように結びついているかを示しています。

開発者は QuickSight を使用して数十万人のユーザー向けに独自の埋め込みダッシュボードをセットアップできます。たとえば、架空の会社 Oktank Analytica の以下のダッシュボードをご覧ください。

名前空間と埋め込みオーサリングがある場合、これを拡張して、ISV によって作成および共有される、各顧客に個別に準備されたデータセットを使用して、アドホックオーサリング機能を提供できます。以下のスクリーンショットをご覧ください

ユースケース

上記を最終的に実現することを目標に、Oktank Analytica が、既定ダッシュボードおよび、アドホック分析・ダッシュボード構築機能の両方を備えたマルチテナント分析を既存の SaaS アプリケーションに実装する方法について見てみましょう。分かりやすいように、Oktank には 2社の顧客がいて、各顧客にはそれぞれ 2 人の作成者と 2 人の閲覧者がいるとします。また、デフォルトの名前空間を使用してコンテンツを開発する開発チームもあるとします。

もしOktank がすべてのユーザーに同じ埋め込みダッシュボードを提供するだけの場合、すべてのユーザーを 1 つの名前空間に入れることで実装を簡素化できます。ダッシュボードは閲覧専用であある、各会社の閲覧者はお互いを発見したり表示したりすることはできません。この場合、単純にQuickSight の 行レベルセキュリティ 機能を使用して、適切なデータが適切なユーザーまたはグループに表示されるようにできます。詳細については、 行レベルのセキュリティ (RLS) を使用したデータセットへのアクセスの制限を参照してください。

次の表は、Oktank の名前空間をまとめたものです。

Default Namespace FooCompany Namespace
Foo2Company Namespace
Readers

Bob

Sally

Peter

David

Julie

Tom

Authors

Tom

Susan

Jill

Emma

John

Nancy

Admins

Mike

Andrew

Notes Development team Foo Company users Foo2 Company users

これらのユーザーをプロビジョニングするとき、Oktank は開発チームのデフォルトの名前空間(QuickSight アカウントセットアップの一環として作成)を使用し、通常どおりに管理者、作成者、および閲覧者をプロビジョニングします。そして名前空間を作成した後、顧客ユーザーを設定します。本記事では、Foo Company の例を順を追って説明します。

デフォルトの名前空間のユーザーは、Oktank Analytica のユーザーであるため、通常の QuickSight の作成者と管理者です。ただし、Oktank は、FooCompany および Foo2 Company のユーザーに対し、アカウント内のアセットを発見することを制限し、共有を許可した特定のデータセットにのみアクセスできるよう制限したいと考えています。

名前空間の作成

このソリューションを実装するには、まず名前空間を作成します。以下のコードを参照してください。

aws quicksight create-namespace --aws-account-id 111122223333 --region us-east-1 --namespace FooCompanyNamespace --identity-store QUICKSIGHT 
{
"Status": 202,
"Name": "FooCompanyNamespace",
"CapacityRegion": "us-east-1",
"CreationStatus": "CREATING",
"IdentityStore": "QUICKSIGHT",
"RequestId": "9576f625-39b4-47ee-b56a-bcb95ed1f040"

}

このオペレーションは非同期であるため、少し待ってから、名前空間作成が完了したことを確認します。

aws quicksight describe-namespace --aws-account-id 111122223333 --region us-east-1 --namespace FooCompanyNamespace
{
    "Status": 200,
    "Namespace": {
        "Name": "FooCompanyNamespace",
        "Arn": "arn:aws:quicksight:us-east-1:111122223333:namespace/FooCompanyNamespace",
        "CapacityRegion": "us-east-1",
        "CreationStatus": "CREATED",
        "IdentityStore": "QUICKSIGHT"
    },
    "RequestId": "9a00b6bd-02b1-471a-9eaf-30db68bedd99"
}

QuickSightのカスタマイズ

名前空間が作成されたので、マルチテナント構成で適切に機能するようにQuickSight をカスタマイズできます。

まず、QuickSight の説明動画とサンプルを無効にします。Oktank には独自の製品ウェルカム動画が数本あり、QuickSight で用意された動画は不要だからです。QuickSight の管理者は、 Account customization ページから本設定にアクセスできます。

ユーザーパーミッションのカスタマイズ

次に、カスタムユーザーアクセス許可を使用して、ユーザーが新しいデータソースまたはデータセットを作成することを制限します。これにより、Oktank は、データを探索してダッシュボードを作成できるがアプリケーションで共有されているもの以外のデータソースには接続できないユーザーを作成できます。

これを行うには、カスタムユーザーアクセス許可ポリシーを作成します。 Manage users (ユーザを管理)ページで、 Manage permissionsを選択します。

ポリシーで、Oktank 管理者が共有するデータセットのみを使用するようにユーザーを制限します。将来的には、このスクリーンショットに写っている機能よりも多くの機能が使えるようになる予定です。

ユーザーアカウントとグループの作成

カスタムユーザーアクセス許可ポリシーが利用できるため、Foo Company の作成者である Jill のユーザーアカウントを作成できます。以下のコードを参照してください。

aws quicksight register-user --namespace FooCompanyNamespace --identity-type QUICKSIGHT --user-role AUTHOR --region us-east-1 --custom-permissions-name DataExploration --email=jill@foocompany.com --user-name jill --aws-account-id 111122223333

{
    "Status": 201,
    "User": {
        "Arn": "arn:aws:quicksight:us-east-1:111122223333:user/FooCompanyNamespace/jill",
        "UserName": "jill",
        "Email": "jill@foocompany.com",
        "Role": "AUTHOR",
        "Active": false,
        "PrincipalId": "user/d-90677fdc8e/086f9e70-f140-4ac0-9d10-7a21fa718bb9",
        "CustomPermissionsName": "DataExploration"
    },
    "UserInvitationUrl": "https://signin.thinkwithwp.com/inviteuser?token=11a1mJtOYlD9T-quoo8b7tJK7bd4_Sa0lPb8Wdr9AW5p29NA7m30lvLKvomMNPnKIaZr3lmLwFf3E0tij5fPj5R9XkT4dSf5b11xsO8MnfNOmerqtHdrgt2StqywbMP2PNUuii1Pz3Xz8pIOIS_4xzFhtPuNwSuiP7JALO5kK3So_HuNdhZn_WLNjiMj47u_dq-NvuBrnZB8Lc8w",
    "RequestId": "78d36175-5d67-4fa9-b45f-124bbf4806dc"
}

今後の操作を用意にするために、FooCompanyNamespace 内で作成者と閲覧者のグループを作成することもできます。

aws quicksight create-group --namespace FooCompanyNamespace --region us-east-1 --aws-account-id 111122223333 --group-name="all-authors"
{
    "Status": 201,
    "Group": {
        "Arn": "arn:aws:quicksight:us-east-1:111122223333:group/FooCompanyNamespace/all-authors",
        "GroupName": "all-authors",
        "PrincipalId": "group/d-90677fdc8e/3ec30833-3a1c-4e67-ac65-92950a770c0e"
    },
    "RequestId": "b70a78c8-2453-4b47-8a49-f1f9058a0716"
}

aws quicksight create-group-membership --namespace FooCompanyNamespace --region us-east-1 --aws-account-id 111122223333 --group-name="all-authors" --member-name="jill"
{
    "Status": 200,
    "GroupMember": {
        "Arn": "arn:aws:quicksight:us-east-1:111122223333:user/FooCompanyNamespace/jill",
        "MemberName": "jill"
    },
    "RequestId": "593d1774-27fd-4b11-8fa0-78025b819a8f"
}

aws quicksight create-group-membership --namespace FooCompanyNamespace --region us-east-1 --aws-account-id 111122223333 --group-name="all-authors"  --member-name="emma"
{
    "Status": 200,
    "GroupMember": {
        "Arn": "arn:aws:quicksight:us-east-1:111122223333:user/FooCompanyNamespace/emma",
        "MemberName": "emma"
    },
    "RequestId": "32e65803-497b-475c-a959-d334403320ac"
}
aws quicksight list-group-memberships --namespace FooCompanyNamespace --region us-east-1 --aws-account-id 111122223333 --group-name="all-authors"
{
    "Status": 200,
    "GroupMemberList": [
        {
            "Arn": "arn:aws:quicksight:us-east-1:111122223333:user/FooCompanyNamespace/emma",
            "MemberName": "emma"
        },
        {
            "Arn": "arn:aws:quicksight:us-east-1:111122223333:user/FooCompanyNamespace/jill",
            "MemberName": "jill"
        }
    ],
    "RequestId": "7085373a-53a0-4209-9d6d-cf685caa3184"
}

アセットの共有

Oktank は、このグループを使用してユーザーとアセットを共有できるようになりました。たとえば、Oktank がこれらのユーザーとデータセットを共有する場合、以下のコードを使用できます。

aws quicksight update-data-set-permissions --cli-input-json file://datapermissions.json

datapermissions.json ファイルには、以下の内容が含まれます。

{
    "AwsAccountId": "111122223333", 
    "DataSetId": "011cef30-cd53-425c-827b-045a171f90f3", 
    "GrantPermissions": [
        {
            "Principal": "arn:aws:quicksight:us-east-1:111122223333:group/FooCompanyNamespace/all-authors",
            "Actions": [
                "quicksight:DescribeDataSet",
                "quicksight:DescribeDataSetPermissions",
                "quicksight:PassDataSet",
                "quicksight:DescribeIngestion",
                "quicksight:ListIngestions"
            ]
        }
    ]
}

同様に、Oktank はビルド済みのダッシュボードをこのグループと共有できます。

aws quicksight update-dashboard-permissions --cli-input-json file://dbpermissions.json

dbpermissions.json ファイルには、以下の内容が含まれます。

{
    "AwsAccountId": ""111122223333", ", 
    "DashboardId": "Oktank-supply-chain-dashboard",
    "GrantPermissions": [
        {
            "Principal": "arn:aws:quicksight:us-east-1:111122223333:group/FooCompanyNamespace/all-authors", 
            "Actions": [
                "quicksight:DescribeDashboard",
                "quicksight:ListDashboardVersions",
                "quicksight:QueryDashboard"
                
            ]
        }
    ]
}

必要であれば、名前空間に対してダッシュボードを共有することもできます。これにより、名前空間内の新しいユーザーに常にアクセス権を付与することが容易になります。

デフォルトテーマを作成して共有する

埋め込みオーサリングフローを開始する前に、Foo 名前空間で作成者のデフォルトテーマを設定できます。QuickSight のテーマエディタを使用すると、ダッシュボードで使用される色、フォント、レイアウトを変更できます。

カスタムテーマを作成したら、名前空間に対して共有することで、名前空間内のすべてのユーザーがそのテーマにアクセスできるようになります。以下のコードを参照してください。

aws quicksight update-theme-permissions --region us-east-1 --aws-account-id 111122223333 --cli-input-json file://permissions.json

permissions.json ファイルには以下の内容が含まれます。

{
    "AwsAccountId": "111122223333", 
    "ThemeId": "25515eb4-e7e3-4a68-a274-4a863bd79d81", 
    "GrantPermissions": [
        {
            "Principal": "arn:aws:quicksight:us-east-1:111122223333:group/FooCompanyNamespace/all-authors",
            "Actions": [
    "quicksight:DescribeTheme",
    "quicksight:DescribeThemeAlias",
    "quicksight:ListThemeAliases",
    "quicksight:ListThemeVersions"
            ]
        }
    ]
}

aws quicksight create-account-customization --region us-east-1 --aws-account-id 111122223333 --namespace=FooCompanyNamespace --account-customization DefaultTheme="arn:aws:quicksight:us-east-1:111122223333:theme/25515eb4-e7e3-4a68-a274-4a863bd79d81"

{
    "Status": 201,
    "AwsAccountId": "111122223333",
    "Namespace": "FooCompanyNamespace",
    "AccountCustomization": {
        "DefaultTheme": "arn:aws:quicksight:us-east-1:111122223333:theme/25515eb4-e7e3-4a68-a274-4a863bd79d81"
    },
    "RequestId": "221ac63b-8c71-48c2-95e4-ffd9b5476e07"
}

埋め込みオーサリングエクスペリエンスの設定

名前空間とユーザーを作成し、QuickSight をカスタマイズし、デフォルトテーマを有効にして、テーマとデータセットを共有したことで、埋め込みオーサリングエクスペリエンスを設定できるようになりました。

まず、QuickSight を埋め込むドメインが管理者設定で許可されていることを確認します。 Domains and embedding ページからアクセスします。

次に、アプリケーションサーバーに対し、get-dashboard-embed-url コマンドと  get-session-embed-url コマンドを呼び出す権限があることを確認します。これらは、それぞれダッシュボードとオーサリングインターフェイスを埋め込むために必要です。

ユーザー認証に関し、QuickSight は AWS Identity and Access Management (IAM) フェデレーティッドユーザーと QuickSight の直接フェデレーションの両方をサポートしています。どちらのオプションでも、SaaSのサーバーによって認証され、エンドユーザーには QuickSight ログインページは表示されなくなります。このユースケースでは、Jill と Emma に QuickSight ID タイプを使用するため、QuickSight フェデレーションを使用します。以下のコードを参照してください。

aws quicksight get-session-embed-url --aws-account-id 111122223333 --region us-east-1 --user-arn arn:aws:quicksight:us-east-1:111122223333:user/FooCompanyNamespace/jill --entry-point /start/favorites 
{
    "Status": 200,
    "EmbedUrl": "https://us-east-1.quicksight.thinkwithwp.com/embedding/eab15737343f4335867483528cd53d20/sn/data-sets?code=AYABeK_9AGgfIBA6_NSqDti_M1cAAAABAAdhd3Mta21zAEthcm46YXdzOmttczp1cy1lYXN0LTE6MjU5NDgwNDYyMTMyOmtleS81NGYwMjdiYy03MDJhLTQxY2YtYmViNS0xNDViOTExNzFkYzMAuAECAQB4P-lAb3AsrVHPwO-wVCEmuFDTp0yz4wFfkrwutzPupewBHRHPzBvGEF0mwTMFwR7fSQAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDAYnevNrQG_42UsUigIBEIA7_amsZyNiF2wOi-LEXZq8X3ToZ3LwlTCAGHhNli8208lv5zIfjEbSr9zOxeF4SsyEWryxNzVYiXd6kg4CAAAAAAwAABAAAAAAAAAAAAAAAAAACuwtWXlySImCI98W0x6jkv____8AAAABAAAAAAAAAAAAAAABAAAA5i3XsPdfGRy9rMCB-EM39rDeOgFDMZKIFqA3lQcLZI_nXith2wGH_1dDP8n5uL1BFLIxVURk3caapiNXyDMxDkHS9x22U1w2TH6wZlQ0_Nd4Eqzn05rPowTzAXU0yiG1nTXo6Rv-_p01tQ1g2IVzm4ykigGXwuxD92ekgKsgEE46OvTwjBRQMtsUaaJKKKcl0J-whFJ3G-p2ATZMcVKACwyUtHWScIJFpVOc4AIM0m4u5quf2m9_OyWpAJgzJn_TtyKxkl-jcOht7S9KsIuLEmvnlJTMdUB6FXk6M1-OxyQ_ogoXH2hvYnW7D7GA1yrUR2T2tj29NA%3D%3D&identityprovider=quicksight&isauthcode=true",
    "RequestId": "48d1c858-36fc-421e-a22b-e64ce6e58545"
}

JavaScript SDK を使用して、この URL を Oktank SaaS アプリケーションに埋め込み、精選されたデフォルトの分析を表示するホームページに Jill が直接アクセスできるようにできます。そこから、Jill はデータセットページに移動し、用意されている精選されたデータセットにアクセスして、一からデータ分析を開始できます。データセットとデータソースの作成を無効にしたため、埋め込みオーサリングインターフェイスには、アカウント内または外部のデータソースに接続するオプションは表示されません。共有された特定のデータセットのみが表示されます。

Jill が利用可能なデータを探索しようとすると、QuickSight はデフォルトで Oktank テーマを適用し、必要に応じてデータを探索してダッシュボードを作成できるようにします。

ダッシュボードが構築されると、Jill は Emma とこれを共有し、共同作業を行い、Foo Company 内のどのユーザーに対して公開するかを決定できます。名前空間の機能により、Oktank は Jill が Emma 以外の他のユーザーが見えないよう設定できています。

ここまで見てきた一連の Amazon QuickSight 機能により、Oktank は SaaS ポータル内で魅力的な分析エクスペリエンスを提供し、適切なユーザーのみが適切なデータを表示できるようになります。QuickSight は、わずか数日でセットアップし本番稼働できる、高度にスケーラブルなマルチテナント分析環境を提供します。この統合の詳細については、チュートリアルの Amazon QuickSight の埋め込みを参照してください。

まとめ

埋め込みダッシュボードとオーサリング機能と、マルチテナントの名前空間およびアカウントのカスタマイズオプションを組み合わせることで、開発者と ISV はアプリケーションユーザーに対して高度な分析をすばやく簡単にセットアップできます。インフラストラクチャの設定や管理は全く行うことなく、数百万人のユーザーへスケーリングできます。 QuickSight Embedded Analytics のその他の更新情報については、 Amazon QuickSight ユーザーガイドの最新情報を参照してください。

その他のリソース

その他のリソースについては、以下を参照してください。

著者について

Jose Kunnackal John は、AWS のクラウドネイティブでフルマネージド型 BI サービスである Amazon QuickSight のプリンシパルプロダクトマネージャーです。Jose は Motorola社にてキャリアを開始し、通信システムおよびファースト・レスポンダーシステム用のソフトウェアを開発しました。その後、Trilibis Mobile のエンジニアリングディレクターを務め、AWS のサービスを使用して SaaS モバイルウェブプラットフォームを構築しました。Jose は、クラウドテクノロジーの持つ可能性に心を躍らせ、お客様のクラウド移行を支援することを楽しみにしています。