みなさん、こんばんは。QuickSight担当のhiroです。
Amazon QuickSightでS3とAhtenaのロールベースのアクセスがコントロールできるようになったアップデートについて、お伝えします。
https://aws.amazon.com/jp/about-aws/whats-new/2023/02/amazon-quicksight-role-based-access-control-data-sources-s3-athena/

QuickSightとは

Amazon QuickSight は、クラウド規模のビジネスインテリジェンス (BI) サービスで、サーバーやインフラを使わずに簡単にインサイトを作成して提供することができるサービスです。

QuickSightの特徴としては、以下が挙げられます。簡単にこちらにもまとめています。
・SPICE と呼ばれるインメモリエンジンにより読み込みがスピード
・ライセンスの前払いコストが不要で、総保有コスト (TCO) を抑えられる。読み取り権限なら月額5USD
・アプリケーションのインストールが不要
・さまざまなデータを 1 つの分析に結合します。
・分析をダッシュボードとして公開し共有でき、他のサイトに簡単に埋め込みできます。
・ダッシュボードで提供する機能を制御できます。
・データベースの詳細なアクセス許可を管理する必要がなく、ダッシュボードを見る人は管理者によって付与されたアクセス権のあるものだけを見ることができます。

今回のアップデート内容

QuickSightのデータソース(データ元)のAmazon S3 と Amazon Athenaにロールベースのアクセスポリシーが追加できるようになりました。
「 Run-As IAM ロール」として提供がされてるようになっています。

従来はQuickSightが接続するデータであるS3とAthenaの全てにアクセスができるようになっていました。今回のアップデートにより、 QuickSight データソースのS3、AthenaについてはAWSのIDおよびアクセス管理 (IAM) ロールを割り当てることができるようになりました。
ロールの設定により、S3 への接続やAthena でのクエリの実行に必要な、最小限の権限の原則がQuickSightでも実現できるようになりました!
よりセキュリティ面が強化されたアップデートですよね。

Run-As IAM ロールの前提条件

以下の前提条件があります。
・各データソースには、1 つの RoleArn しか関連付けられません。データソース (データセット、ビジュアル) の利用者は、さまざまなタイプのクエリを生成できます。このロールは、クエリが機能するかしないかを決定します。
・ARN は、それを使用する QuickSight インスタンスと AWS アカウント 同じ IAM ロールに対応している必要があります。
・IAM ロールには QuickSight がこのロールを引き受けることができる信頼関係が必要です。
・QuickSight の API を呼び出すアイデンティティには、RoleArn プロパティを更新する前にロールを渡す権限が必要です。ロールをパスできる必要があるのは、ロール ARN を作成または更新するときだけです。権限は後で再評価されません。同様に、ロール ARN を省略しても権限は不要です。
・ロール ARN を省略すると、Athena データソースはアカウント全体のロールとスコープダウンポリシーを使用します。
・ロール ARN が存在する場合、アカウント全体のロールとスコープダウンポリシーの両方が無視されます。LakeFormation 権限は無視されません。
・ARN 文字列は、データが格納され、クエリの対象となる AWS アカウント および AWS リージョン 内の既存の IAM ロールと一致する必要があります。

試してみた

S3にロールを設定してアクセスを試してみました。
(1)まずは、ロールアクセスのためにQuickSightのコンソールからJSONマニフェストファイルをアップロードするか、S3 バケット内の JSON ファイルのURLを指定します。

RoleArn プロパティを使用すると、アカウント全体のロールをオーバーライドするカスタムIAM ロールを通じてマニフェストファイルと参照するデータへのアクセスが許可されるようになります。
API使って、ARN を Amazon S3 データ ソースのマニフェスト ファイルにアタッチすることもできます。

(2) マニフェストファイルについては、以下のように記載します。
{
"fileLocations": [
{
"URIPrefixes": [
"s3://quicksightuser-run-as-role-20230305-sunnytest/data/"
]
}
],
"globalUploadSettings": {
"format": "CSV",
"delimiter": ",",
"textqualifier": "'",
"containsHeader": "true"
}
}

(3)マニュフェストファイルをアップする前にS3バケットをQuickSightに関連付けをしておいます。
Amazon QuickSight内で、プロファイル名 (右上) を選択します。[Manage QuickSight (QuickSight の管理)]、[Security & permissions (セキュリティとアクセス権限)] からS3バケットが対象になっていることを確認し、(2)で指定したバケットにもチェックを入れておきます。

(4)マニュフェストファイルのアップが成功しました。

(5)その後に、s3:GetObjectアクセスを許可する IAM の既存のロールを作成または更新します。
以下はAWS API を使用して既存の IAM ロールを更新する方法です。

aws iam put-role-policy \
--role-name QuickSightAccessToS3RunAsRoleBucket \
--policy-name GrantS3RunAsRoleAccess \
--policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::s3-bucket-name"
},
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::s3-bucket-name/manifest.json"
},
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::s3-bucket-name/*"
}
]
}'

(6)s3:GetObject アクセスが(5)で付与できたら、put-role-policy を Amazon S3データソースのマニフェストファイルに適用できるようになります。

aws quicksight create-data-source --aws-account-id 111222333444 --region us-west-2 --endpoint https://quicksight.us-west-2.quicksight.aws.com/ \
--data-source-id "s3-run-as-role-demo-source" \
--cli-input-json '{
"Name": "S3 with a custom Role",
"Type": "S3",
"DataSourceParameters": {
"S3Parameters": {
"RoleArn": "arn:aws:iam::111222333444:role/QuickSightAccessRunAsRoleBucket",
"ManifestFileLocation": {
"Bucket": "s3-bucket-name",
"Key": "manifest.json"
}
}
}
}'

対象リージョン

S3 および Athena の新しい Run-as IAM ロールは、米国東部 (バージニア北部およびオハイオ)、米国西部 (オレゴン)、カナダ、サウパウロ、ヨーロッパ (フランクフルト、アイルランド、ロンドン)、 アジアパシフィック (ムンバイ、ソウル、シンガポール、シドニー、東京)、AWS GovCloud (米国西部) のすべての QuickSight リージョンで利用できます。

Amazon QuickSight Enterprise および Standard Edition の両方で利用可能です。


SunnyCloudでは、Amazon QuickSightの「サービスデリバリープログラム」認定を日本国内で初めて取得しました。(こちらの記事をご参照ください)

このサービスデリバリープログラムの認定は、株式会社アイディーエスが提供しているAWS導入支援サービスである「サニークラウド(Sunny Cloud)」において、AWSのデータ分析サービスである「Amazon QuickSight」の導入実績や技術力が評価されたもので、日本のAWSパートナーネットワーク(以下、APN)のコンサルティングパートナーとしては初めての認定取得です。

ぜひ、データ分析に興味のある方はこちらまでお問い合わせください!