QuickSight と紐づいた IAM ユーザーが強すぎると危険なので、ユーザーグループへの追加・削除で制限する運用を検討した
コーヒーが好きな emi です。
QuickSight は IAM とは別に QuickSight 独自のユーザーを使用します。QuickSight 独自のユーザーは IAM の権限と紐づけることもできます。
こういったサービスの特性上、QuickSight ユーザーの権限管理として、以下のような悩みが発生します。
- データアナリストとして QuickSight の権限は強めの管理者ロールが欲しいが、IAM の権限はそこまで強くしたくない
- QuickSight 自体に Athena や RDS への権限を付与する必要があり、IAM の権限が欲しいタイミングがある
- 一部 QuickSight コンソールから実行できない、API 操作のみ対応している作業を実施するときに AWS CLI コマンドを実行したい
例えば、「管理用ユーザーは情シスしかアクセスできない」、などの運用ケースで上記のような悩みが発生すると思います。
今回はこのようなケースでどのように QuickSight ユーザーの権限をを運用するのが良いか考えてみました。
運用イメージ
- 通常時
- IAM の権限は持たず、QuickSight コンソールへのアクセスのみでデータセットや分析の作成・編集を行う
- QuickSight で 各サービス(RDS など)への権限の付与や AWS CLI 操作を行いたいとき
- IAM 権限が付与された IAM ユーザーグループに一時的に参加させる
手順
準備
まずは以下のように IAM グループと QuickSight ユーザーを準備します。
- 管理用 IAM ユーザーグループ
- CloudShell の操作権限
- QuickSight の操作権限
- IAM 権限を持った QuickSight ユーザー
- 管理用ユーザー
- このユーザーで管理操作を行います。
- 通常ユーザー(図の test-user)
- 管理用ユーザー
管理用ユーザーで IAM ユーザーグループと通常ユーザーの作成
青枠のキャプチャは管理用ユーザーの操作画面です。
まず IAM ユーザーグループ 「QuickSight-group」 を作成します。名前は任意の名前をつけてください。付与する IAM ポリシーは以下です。
- AWSCloudShellFullAccess(AWS 管理ポリシー)
- QuickSight-FullAccess-IAM(カスタム管理ポリシーを自身で作成)
QuickSight-FullAccess-IAM は QuickSight IAM コンソール管理用の IAM アイデンティティベースのポリシー を参考にしており、"secretsmanager:*"
を追加しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"quicksight:*",
"iam:AttachRolePolicy",
"iam:DetachRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:GetPolicy",
"iam:CreatePolicyVersion",
"iam:DeletePolicyVersion",
"iam:GetPolicyVersion",
"iam:ListPolicyVersions",
"iam:DeleteRole",
"iam:CreateRole",
"iam:GetRole",
"iam:ListRoles",
"iam:CreatePolicy",
"iam:ListEntitiesForPolicy",
"iam:listPolicies",
"s3:ListAllMyBuckets",
"athena:ListDataCatalogs",
"athena:GetDataCatalog",
"secretsmanager:*"
],
"Resource": [
"*"
]
}
]
}
以下ブログも参照ください。
続いて管理用ユーザーで通常ユーザー test-user を作成します。IAM 権限は何もつけません。
続いて、2. IAM ユーザーと紐づいた QuickSight ユーザーを作成 を参考に、test-user と紐づいた QuickSight ユーザーを管理者ロールで作成してください。管理用ユーザーで QuickSight にログインして test-user を招待する形です。
下図の状態になれば OK です。test-user は管理者ロールになっています。
ここまでの操作で、以下の状態になりました。
通常ユーザー test-user での見え方確認
作成した test-user での見え方を確認します。test-user で AWS マネジメントコンソールにログインします。IAM 権限が何もついていないので、アプリケーションやコストの情報が「見えない状態になっています。
CloudShell も見てみましょう。こちらも権限がないので操作できない状態です。
QuickSight コンソールに移動してみます。
QuickSight の中では test-user は管理者ロールなので、データセットの作成・編集、分析の作成・編集、QuickSight の管理画面操作ができます。
ただし、IAM 権限がないので一部操作ができません。例えば、QuickSight 管理画面の 「セキュリティとアクセス許可」 メニューで 「QuickSight の AWS のサービスへのアクセス」 で 「管理」 をクリックすると、
以下のように権限エラーで操作ができない状態になっています。
管理用ユーザーで test-user を IAM ユーザーグループに参加させる
では、管理用ユーザーで test-user を IAM ユーザーグループに参加させます。
以下のようになります。
IAM ユーザーグループに追加後の test-user での見え方確認
IAM ユーザーグループに追加後、test-user での見え方確認を確認します。
IAM ユーザーグループに参加させたので、CloudShell が使えるようになっています。
QuickSight のフル権限もついているので、以下のように quicksight コマンドから describe-user も実行できます。
QuickSight 管理画面に移動し、「セキュリティとアクセス許可」 から 「管理」 をクリックします。
アクセス許可を編集できるようになりました。
管理用ユーザーで test-user を IAM ユーザーグループから削除する
では、QuickSight 関連の IAM 操作が終わった想定で、test-user から IAM 権限を剥奪します。
管理用ユーザーで、IAM ユーザーグループ 「QuickSight-group」 から、test-user を削除します。
IAM ユーザーグループにから削除後の test-user での見え方確認
IAM ユーザーグループから削除後、test-user での見え方確認を確認します。
CloudShell の権限がなくなったので、CloudShell から AWS CLI コマンドの実行ができなくなっています。
QuickSight 管理画面に移動し、「セキュリティとアクセス許可」 から 「管理」 をクリックすると、以下のように操作できなくなっているのが確認できました。
おわりに
管理用ユーザーは情シスしかアクセスできない、などの運用ケースでどのように QuickSight を運用するのが良いか考えてみました。
IAM ユーザーグループへの追加・削除はスクリプト等で自動化できそうです。
他に良い運用案があれば、画面下部のお問い合わせ「DevelopersIO について」から教えてください。
本記事への質問やご要望についても、画面下部のお問い合わせ「DevelopersIO について」からご連絡ください。
参考