QuickSight と紐づいた IAM ユーザーが強すぎると危険なので、ユーザーグループへの追加・削除で制限する運用を検討した

QuickSight と紐づいた IAM ユーザーが強すぎると危険なので、ユーザーグループへの追加・削除で制限する運用を検討した

管理用ユーザーは情シスしかアクセスできない、などの運用ケースでどのように QuickSight を運用するのが良いか考えてみました。
Clock Icon2025.05.18

コーヒーが好きな 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 ユーザーグループに一時的に参加させる

quicksight-iam-user-permissions-control-with-groups_20

手順

準備

まずは以下のように IAM グループと QuickSight ユーザーを準備します。

  • 管理用 IAM ユーザーグループ
    • CloudShell の操作権限
    • QuickSight の操作権限
  • IAM 権限を持った QuickSight ユーザー
    • 管理用ユーザー
      • このユーザーで管理操作を行います。
    • 通常ユーザー(図の test-user)

quicksight-iam-user-permissions-control-with-groups_21

管理用ユーザーで IAM ユーザーグループと通常ユーザーの作成

青枠のキャプチャは管理用ユーザーの操作画面です。

まず IAM ユーザーグループ 「QuickSight-group」 を作成します。名前は任意の名前をつけてください。付与する IAM ポリシーは以下です。

  • AWSCloudShellFullAccess(AWS 管理ポリシー)
  • QuickSight-FullAccess-IAM(カスタム管理ポリシーを自身で作成)

quicksight-iam-user-permissions-control-with-groups_1

QuickSight-FullAccess-IAM は QuickSight IAM コンソール管理用の IAM アイデンティティベースのポリシー を参考にしており、"secretsmanager:*" を追加しました。

QuickSight-FullAccess-IAM
{
    "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": [
                "*"
            ]
        }
    ]
}

以下ブログも参照ください。
https://dev.classmethod.jp/articles/iam-permissions-as-a-quicksight-admin/

続いて管理用ユーザーで通常ユーザー test-user を作成します。IAM 権限は何もつけません。
quicksight-iam-user-permissions-control-with-groups_2

続いて、2. IAM ユーザーと紐づいた QuickSight ユーザーを作成 を参考に、test-user と紐づいた QuickSight ユーザーを管理者ロールで作成してください。管理用ユーザーで QuickSight にログインして test-user を招待する形です。

下図の状態になれば OK です。test-user は管理者ロールになっています。
quicksight-iam-user-permissions-control-with-groups_7

ここまでの操作で、以下の状態になりました。
quicksight-iam-user-permissions-control-with-groups_21

通常ユーザー test-user での見え方確認

作成した test-user での見え方を確認します。test-user で AWS マネジメントコンソールにログインします。IAM 権限が何もついていないので、アプリケーションやコストの情報が「見えない状態になっています。
quicksight-iam-user-permissions-control-with-groups_3

CloudShell も見てみましょう。こちらも権限がないので操作できない状態です。
quicksight-iam-user-permissions-control-with-groups_4

QuickSight コンソールに移動してみます。
quicksight-iam-user-permissions-control-with-groups_5

QuickSight の中では test-user は管理者ロールなので、データセットの作成・編集、分析の作成・編集、QuickSight の管理画面操作ができます。
quicksight-iam-user-permissions-control-with-groups_6

ただし、IAM 権限がないので一部操作ができません。例えば、QuickSight 管理画面の 「セキュリティとアクセス許可」 メニューで 「QuickSight の AWS のサービスへのアクセス」 で 「管理」 をクリックすると、
quicksight-iam-user-permissions-control-with-groups_8

以下のように権限エラーで操作ができない状態になっています。
quicksight-iam-user-permissions-control-with-groups_9

管理用ユーザーで test-user を IAM ユーザーグループに参加させる

では、管理用ユーザーで test-user を IAM ユーザーグループに参加させます。
quicksight-iam-user-permissions-control-with-groups_22

以下のようになります。
quicksight-iam-user-permissions-control-with-groups_10

IAM ユーザーグループに追加後の test-user での見え方確認

IAM ユーザーグループに追加後、test-user での見え方確認を確認します。
quicksight-iam-user-permissions-control-with-groups_11

IAM ユーザーグループに参加させたので、CloudShell が使えるようになっています。
quicksight-iam-user-permissions-control-with-groups_12

QuickSight のフル権限もついているので、以下のように quicksight コマンドから describe-user も実行できます。
quicksight-iam-user-permissions-control-with-groups_13

QuickSight 管理画面に移動し、「セキュリティとアクセス許可」 から 「管理」 をクリックします。
quicksight-iam-user-permissions-control-with-groups_14

アクセス許可を編集できるようになりました。
quicksight-iam-user-permissions-control-with-groups_15

管理用ユーザーで test-user を IAM ユーザーグループから削除する

では、QuickSight 関連の IAM 操作が終わった想定で、test-user から IAM 権限を剥奪します。
管理用ユーザーで、IAM ユーザーグループ 「QuickSight-group」 から、test-user を削除します。
quicksight-iam-user-permissions-control-with-groups_16

quicksight-iam-user-permissions-control-with-groups_17

IAM ユーザーグループにから削除後の test-user での見え方確認

IAM ユーザーグループから削除後、test-user での見え方確認を確認します。
CloudShell の権限がなくなったので、CloudShell から AWS CLI コマンドの実行ができなくなっています。
quicksight-iam-user-permissions-control-with-groups_18

QuickSight 管理画面に移動し、「セキュリティとアクセス許可」 から 「管理」 をクリックすると、以下のように操作できなくなっているのが確認できました。
quicksight-iam-user-permissions-control-with-groups_19

おわりに

管理用ユーザーは情シスしかアクセスできない、などの運用ケースでどのように QuickSight を運用するのが良いか考えてみました。
IAM ユーザーグループへの追加・削除はスクリプト等で自動化できそうです。
他に良い運用案があれば、画面下部のお問い合わせ「DevelopersIO について」から教えてください。

本記事への質問やご要望についても、画面下部のお問い合わせ「DevelopersIO について」からご連絡ください。

参考

https://dev.classmethod.jp/articles/create-and-delete-quicksight-users-groups/

https://dev.classmethod.jp/articles/iam-permissions-as-a-quicksight-admin/

https://dev.classmethod.jp/articles/quicksight-iam-provisioning/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.