QuickSight 管理者として過不足のない IAM 権限はどうなるか調査・検討した

QuickSight 管理者として過不足のない IAM 権限はどうなるか調査・検討した

QuickSight を操作する管理者はどのような IAM 権限を持っていればいいのか調査・検討しました。
Clock Icon2025.01.22

コーヒーが好きな emi です。

QuickSight はアカウント有効化時に認証方法でデフォルトの「IAM フェデレーティッド ID と QuickSight で管理されたユーザーを使用する」を選択している場合、以下二種類のユーザーを作成することができます。

  • IAM ユーザー(や IAM ロール、IAM Identity Center ユーザー等)に紐づいた QuickSight ユーザー
  • QuickSight 独自のユーザー

ユーザーの作方法は以下ブログもご参照ください。
https://dev.classmethod.jp/articles/create-and-delete-quicksight-users-groups/

QuickSight 管理者が QuickSight 関連の操作をする際は、QuickSight 自体へのアクセス以外にも、S3 や Athena など他の AWS リソースとの接続や、VPC Connection を作成するための IAM ロール選択など、様々な権限が必要とされるシーンがあります。
一部コンソール画面から操作できず、AWS CLI などの API 操作を行わなければならないこともあるため、個人的には CloudShell の操作権限も欲しいところです。

▼ QuickSight 管理コンソールから様々な AWS リソースへのアクセス権限を設定する画面
iam-permissions-as-a-quicksight-admin_1

では QuickSight の管理者にはどのような IAM 権限が必要なのか、どこまでの権限が必要なのか、必要十分な権限セットはどうなるのかを調査・検討してみました。

最初に所感

  • IAM コンソール管理用の QuickSight IAM ID ベースのポリシー を参考にカスタマー管理ポリシーを作成し付与すればある程度網羅された最低限の権限となる
    • 個人的には上記権限に「AWSCloudShellFullAccess」を追加してやるのが良いと思う
  • 上記権限で QuickSight に関するすべての操作ができるわけではないので、都度必要に応じて権限を追加する運用をするのが現実的

1. 「IAM コンソール管理用の QuickSight IAM ID ベースのポリシー」を利用した検証

1-1. IAM ポリシーの作成

以下 AWS 公式ドキュメントに、QuickSight を操作するユーザー向けの IAM 権限の例がいくつか掲載されています。用途に応じてこの中から選択すると良さそうです。

https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/iam-policy-examples.html

今回は QuickSight の管理者に必要な権限を付与したいです。
IAM コンソール管理用の QuickSight IAM ID ベースのポリシー というものを使ってみます。

IAM コンソール管理用の QuickSight IAM ID ベースのポリシー
{
   "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"
           ],
           "Resource": [
               "*"
           ]
       }
    ]
}

こちらの json を見たところ、以下の権限が許可されるようです。

  • QuickSight に関するすべての権限
  • QuickSight 関連で必要になる IAM 権限
  • S3 バケット一覧の権限
  • 一部の Athena へのアクセス権限

この json を使い、まずはカスタマー管理ポリシーを作成します。
「QuickSight-FullAccess-IAM」という名前を付けて保存しました。

こんな感じです。
iam-permissions-as-a-quicksight-admin_2

1-2. IAM ユーザーの作成

QuickSight 管理者に紐づける IAM ユーザー「test-user」を作成します。マネジメントコンソールへのアクセスを許可します。
iam-permissions-as-a-quicksight-admin_3

先ほど作成した「QuickSight-FullAccess-IAM」を付与します。
iam-permissions-as-a-quicksight-admin_4

IAM ユーザーを作成したら、CSV ファイルをダウンロードしてパスワード等を保管します。
iam-permissions-as-a-quicksight-admin_5

1-3. QuickSight ユーザーの自己プロビジョニング

作成した IAM ユーザーでログインしました。QuickSight と一部の AWS リソースへの権限しかないので、コストなどは見えないようになっています。
iam-permissions-as-a-quicksight-admin_6

QuickSight コンソールに移動し、QuickSight ユーザーを自己プロビジョニングします。
iam-permissions-as-a-quicksight-admin_7

メールアドレスを入力し「続行」をクリックします。
iam-permissions-as-a-quicksight-admin_8

QuickSight コンソールにログインできました。最新情報は「閉じる」をクリックし閉じます。
iam-permissions-as-a-quicksight-admin_9

1-4. QuickSight コンソールでの操作確認

右上のアイコンから「QuickSight を管理」をクリックして管理画面に遷移します。
iam-permissions-as-a-quicksight-admin_10

ユーザーの管理画面になります。作成した IAM ユーザーで自己プロビジョニングした QuickSight ユーザーが管理者権限で存在するのがわかります。
iam-permissions-as-a-quicksight-admin_11

「セキュリティとアクセス許可」から、別のサービスへのアクセス権限が操作できるか確認します。
iam-permissions-as-a-quicksight-admin_12

S3 バケットの一覧は確認できますね。想定通りです。
iam-permissions-as-a-quicksight-admin_13

Secrets Manager からシークレットへのアクセスはできませんでした。RDS や Redshift などにアクセスする際 Secrets Manager を使っている場合は別途 IAM ユーザー側に権限を追加する必要があります。
iam-permissions-as-a-quicksight-admin_14

ちなみに作成したユーザー自身で IAM コンソールからに IAM ポリシーを変更することはできました。

▼ IAM ダッシュボードでは権限がない部分でエラーになっているが、
iam-permissions-as-a-quicksight-admin_15

▼ 自身の IAM ユーザーに付与されている IAM ポリシーを変更して
iam-permissions-as-a-quicksight-admin_35

▼ Secrets Manager のシークレットが見えるようになった
iam-permissions-as-a-quicksight-admin_36

では、既存の権限を外すことはできるのでしょうか?RDS のチェックを外してみます。
iam-permissions-as-a-quicksight-admin_16

保存すると、無事 RDS への権限が外せました。なるほど。
iam-permissions-as-a-quicksight-admin_17

続いて「VPC 接続の管理」で VPC Connection を作ろうとしてみます。
VPC への権限がないので、VPC 一覧は見えません。
iam-permissions-as-a-quicksight-admin_18

実行ロールは見えました。
iam-permissions-as-a-quicksight-admin_19

1-4-1. CoudShell へのアクセス検証

ついでに CloudShell へのアクセスについても試します。
QuickSight の操作の一部はコンソールではできず、AWS CLI などを利用した API での操作が必要な場合があります。QuickSight グループの削除制限付き共有フォルダ の作成・編集などが該当します。

API 操作のために AWS CLI が手軽に使える CloudShell へのアクセス権限があると便利なのですが、今回設定した「IAM コンソール管理用の QuickSight IAM ID ベースのポリシー」だと CloudShell への権限が許可されていないので利用できません。
iam-permissions-as-a-quicksight-admin_32

IAM ユーザーに、AWS 管理ポリシーの「AWSCloudShellFullAccess」を付与します。
iam-permissions-as-a-quicksight-admin_33

利用できるようになりました。
試しに list-data-sets コマンドでデータセット一覧を表示してみると、うまく動作しました。
iam-permissions-as-a-quicksight-admin_34

2. QuickSight に対するフルアクセスのみだとどうなるのか

AWS 管理の IAM ポリシーに、QuickSightFullAccess というものはありません。
iam-permissions-as-a-quicksight-admin_20

無いので、カスタマー管理ポリシーで作成してみます。「QuicksightFullAccess」という名前を付けました。
iam-permissions-as-a-quicksight-admin_21

QuicksightFullAccess(カスタマー管理ポリシー)
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "quicksight:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

iam-permissions-as-a-quicksight-admin_22

作成した「QuickSightFullAccess」ポリシーを別の IAM ユーザーを作成して付与します。
iam-permissions-as-a-quicksight-admin_23

「QuickSightFullAccess」ポリシーを付与した「test-user2」でマネジメントコンソールにログインしました。
iam-permissions-as-a-quicksight-admin_24

QuickSight ユーザーを自己プロビジョニングします。
iam-permissions-as-a-quicksight-admin_25

QuickSight コンソールにログインしました。管理画面に遷移します。
iam-permissions-as-a-quicksight-admin_26

自身の QuickSight ユーザーが管理者ロールとして作成されているのが確認できます。
iam-permissions-as-a-quicksight-admin_27

「セキュリティとアクセス許可」から各サービスへのアクセス権限を管理する画面に遷移しようとすると、
iam-permissions-as-a-quicksight-admin_28

エラーとなりました。
iam-permissions-as-a-quicksight-admin_29

「以下を参照してください」の後のリンクは以下のドキュメントへのリンクでした。
https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/iam-policy-examples.html

VPC 接続の管理画面では、実行ロールも見えませんでした。IAM へのアクセス権限が無いので、そうですよね。
iam-permissions-as-a-quicksight-admin_31

終わりに

QuickSight の管理者にはどのような IAM 権限があった方がいいか検証しつつ考えてみました。
私の所感としては以下です。

  • IAM コンソール管理用の QuickSight IAM ID ベースのポリシー を参考にカスタマー管理ポリシーを作成し付与すればある程度網羅された最低限の権限となる
    • 個人的には上記権限に「AWSCloudShellFullAccess」を追加してやるのが良いと思う
  • 上記権限で QuickSight に関するすべての操作ができるわけではないので、都度必要に応じて権限を追加する運用をするのが現実的

質問やご要望については画面下部のお問い合わせ「DevelopersIO について」からご連絡ください。記事に関してお問い合わせいただけます。

参考

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

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.