QuickSight が自動作成するカスタマー管理ポリシーは、サービスロール以外にアタッチするとサービスロール側でエラーになる
コーヒーが好きな emi です。
タイトルが答えなのですが、QuickSight の AWS サービスへのアクセス設定で 「以下のポリシーは QuickSight ロールにアタッチされていないか、現在にアタッチされています
」 というメッセージが表示された際の対処法を記載します。
事象
Athena 経由で S3 バケットのデータを可視化するため、以下のように QuickSight の管理画面から [セキュリティとアクセス許可] - [QuickSight の AWS サービスへのアクセス] - [管理] で、S3 バケットへのアクセスを許可しようとしました。
ちなみに IAM ロールは 「QuickSight で管理されるロール (デフォルト)」 を使用しています。
すると、以下のようなエラーが発生しました。
IAM ロールを更新できません。次の 1 つ以上の理由によるものである可能性があります:
• ロールは QuickSight サービスプリンシパルを明示的に信頼しません。
• 以下のポリシーは QuickSight ロールにアタッチされていないか、現在にアタッチされています:
○ arn:aws:iam::123456789012:policy/service-role/AWSQuickSightS3Policy
○ arn:aws:iam::123456789012:policy/service-role/AWSQuickSightRedshiftPolicy
○ arn:aws:iam::123456789012:policy/service-role/AWSQuickSightIAMPolicy
• 使用している認証情報に次のアクセス許可があることを確認します:
○ iam:CreateRole, iam:CreatePolicy, iam:CreateRolePolicy, iam:CreatePolicyVersion, iam:DeletePolicyVersion, iam:ListAttachedRolePolicies, iam:GetRole, iam:GetPolicy, iam:DetachRolePolicy, iam:GetPolicyVersion and iam:ListPolicyVersions
原因
さて、心当たりがあったのは 以下のポリシーは QuickSight ロールにアタッチされていないか、複数にアタッチされています:
の部分です。
- AWSQuickSightS3Policy
- AWSQuickSightRedshiftPolicy
- AWSQuickSightIAMPolicy
これら 3 つの IAM ポリシー(カスタマー管理ポリシー)は、QuickSight がデフォルトで利用するサービスロール 「aws-quicksight-service-role-v0」 にアタッチされているもので、AWS 側で自動作成されるものです。
私は、以下ブログの QuickSight に Athena フェデレーテッドクエリ用 Lambda へのアクセス権限を付与する で、これら 3 つの QuickSight が自動作成するカスタマー管理ポリシーを、自分が作成した IAM ロール 「quicksight-admin-role」 に付与していました。
これら 3 つの IAM ポリシーは AWS 側で自動作成されるとはいえ、カスタマー管理ポリシーなので、他の IAM ロールに付与しても大丈夫だろうと思ったのですが、どうやらダメみたいです。
対処
自分が作成した IAM ロール 「quicksight-admin-role」 から、3 つの IAM ポリシーを外します。
- AWSQuickSightS3Policy
- AWSQuickSightRedshiftPolicy
- AWSQuickSightIAMPolicy
その後、再度 S3 バケットへの許可を設定すると、問題なく設定できました。
おわりに
QuickSight 側で自動作成されるデフォルトのサービスロール 「aws-quicksight-service-role-v0」 をユーザーが手動で触ってはいけないのは認識していましたが、この IAM ロールに付与されているカスタマー管理ポリシーも使いまわさない方が良いものだったのですね。勉強になりました。
本記事への質問やご要望については画面下部のお問い合わせ「DevelopersIO について」からご連絡ください。記事に関してお問い合わせいただけます。
参考