QuickSightのRLS(Row-Level Security) が匿名ユーザーのダッシュボードで使えるようになりました。

2021.08.02

いわさです。

QuickSightにはRLS(Row-Level Security)という機能があります。
データセットルールを適用し、対象行を特定ユーザーのみ扱えるようにします。
また、QuickSightでは外部サイトにダッシュボードを埋め込み、QuickSight未認証のユーザーにダッシュボードを共有する機能があります。

匿名ユーザー向けのダッシュボードと呼んでいますが、こちらでもRLSが使えるようになりました。

ユーザーやロールは紐付いていないため、組み込みURL発行側のアプリでタグを使って制御を行う形となります。

先に書きますが、「試してみたけど出来なかった」記事になってます。 投稿を見送ろうかなとも思ったのですが、このアップデートはAWSのアップデートブログに掲載されておらず、QuickSightのドキュメントが更新されたのみのようです。 闇に埋もれそうな割に有益っぽい気がしたので記事にしました。

前提

この機能は、GenerateEmbedUrlForAnonymousUserAPIを使用します。

このAPIは2020年7月末にリリースされたばかりの機能です。

  • AWS CLIは最新バージョンにアップデートしてください。

試してみたのだが...

タグ設定

データセット作成API、もしくはデータセット更新APIで、--row-level-permission-tag-configurationオプションを使用してタグ構成を設定します。

{
    "Status": "ENABLED",
    "TagRules": 
        [
            {
                "TagKey": "tag_retailer_id",
                "ColumnName": "retailer_id",
                "TagMultiValueDelimiter": ",",
                "MatchAllValue": "*"
            },
            {
                "TagKey": "tag_role",
                "ColumnName": "role"
            }
        ]
}

例えば、city1のユーザーにはcity2やcity3へのデータへアクセスさせたくない時などにcityをタグ構成として設定します。

タグ使用

あとは、組み込みダッシュボードURLを発行してWebサイトにURLを組み込むだけなのですが、URL発行の際に、SessionTagsにて対象のタグをKey-Value形式で指定します。
発行されたURLを表示してみると対象行データのみ取り扱われているかと思います。

実は、試したのですがエラーになりました。

An error occurred (UnsupportedPricingPlanException) when calling the GenerateEmbedUrlForAnonymousUser operation: This API action is supported only when the account has an active Capacity Pricing plan.

セッションキャパシティプランでない場合はURL生成時に上記のエラーが表示されます。

匿名ユーザー向けダッシュボードがそもそもセッションキャパシティープランを利用時のみ使える機能でした。
また、IAMユーザー、QuickSightユーザー向けの組み込みダッシュボード生成機能の場合はこちらのRLSは使えませんでした。

リーダーセッションキャパシティは最小250USD/月からになります。

挙動としてはグループを使ったRLSと同じ挙動になります。
RLS自体は以下の記事で試している記事がありますのでご参照ください。

ユースケース

ダッシュボードを多数のユーザーで使用したいがQuickSightユーザーの作成を行わない場合、セッションキャパシティプランでリーダーセッションを用意すると思います。
その際にダッシュボードは上記の匿名ユーザー向けの組み込みダッシュボードのURLを生成してWebサイトで閲覧します。
そのWebサイトで独自のユーザー認証を行っており、ユーザーの属性に応じてダッシュボードの内容(例:自分に関係のあるデータのみを表示する)をカスタマイズしたい場合、Webアプリケーション側で組み込みダッシュボードURLを生成する際に独自でタグを指定することで閲覧者の属性に応じてダッシュボードのカスタマイズを行いたい場合などを想定しているようです。

まとめ

今まで登録ユーザー向けのRLS機能は提供されてきましたが、匿名ユーザー向けにもRLSを使うことが出来るようになりました。
セキュリティの制限は組み込み先のアプリケーション側でしっかり制御を行う必要はありますが、QuickSightユーザーと紐付いていないのでアプリケーション側は組み込み易くなったのではないでしょうか。

あわせて、QuickSightのCLIコマンドもアップデートされていますので、忘れずにアップデートしておきましょう。

参考