AdministratorAccessなのに請求情報が見れない話

--

はじめに

IAM Identity Center(旧AWS SSO)をセットアップして、AdministratorAccessの許可セットでサインイン。Cost Explorerを開いたら「アクセス権限がありません」。ほかのことはできるのにコストだけが見られない…という状況にハマったのでまとめます。

コンソールの「コストと使用状況」ウィジェットが当月・費用の内訳・予測される月末すべて「アクセス拒否」になっている画面

TL;DR

AWSはデフォルトで、すべてのIAMロール(SSOの許可セットも、AdministratorAccessも含む)に対して請求・コスト管理コンソールをブロックしています。アカウントのルートユーザーが以下の設定を有効化する必要があります。

アカウント設定 → 「IAMユーザー/ロールによる請求情報へのアクセス」 → 編集 → IAMアクセスのアクティブ化

どんなポリシーをアタッチしてもこの設定の代わりにはなりません。

これは公式ドキュメントに明記された仕様です。いわく「IAMユーザーおよびロールは、デフォルトでは請求・コスト管理コンソールにアクセスできない。請求系の機能へのアクセスを許可するIAMポリシーを持っていても同様」。アクセスを許可できるのはルートユーザーのActivate IAM Access設定だけです。請求ページの評価は実質こうなっています。

  • アカウントレベルの請求アクセス有効化 (ルートアカウントの設定、デフォルトOFF)
  • IAMポリシーが請求アクションを許可

許可セットの実体はIAMロールなので、SSO経由でも1つ目の設定によりブロックされます。

解決方法

  1. AWSサインインページルートユーザーでAWSコンソールにサインインする。

  2. 右上のアカウント名 → 「アカウント」でアカウント設定を開く

  3. IAMユーザー/ロールによる請求情報へのアクセス」までスクロール → 編集 → 「IAMアクセスのアクティブ化」にチェックして保存。デフォルトではこの通り「無効化済み」

    アカウント設定の「IAMユーザーおよびロールによる請求情報へのアクセス」が無効化済みになっている画面

  4. ルートからサインアウトし、いつも通りSSOポータルからサインインし直す

  5. Cost Explorerが開けるようになっている。

原因の切り分けはCLIでわかります。この設定が制御するのはコンソールだけで、Cost ExplorerなどのSDK/APIは対象外と公式ドキュメントに明記されています。つまりスイッチがOFFでも、権限のあるロールならAPIは通ります。

aws sso login
aws ce get-cost-and-usage \
  --time-period Start=2026-08-01,End=2026-08-24 \
  --granularity MONTHLY \
  --metrics UnblendedCost

aws ce get-cost-and-usageの実行結果。コンソールでは拒否されるのにUnblendedCostの金額がJSONで返ってきている

コンソールで拒否されるのにこれが数字を返すなら、まさにこのスイッチが原因です(コンソールだけがブロックされている状態)。逆に AccessDeniedException が返るなら、スイッチではなくIAMポリシー側に ce:* などの許可が足りていません。

まとめ

ルートユーザーには「IAMユーザー/ロールに請求情報を見せるかどうか」を決めるアカウントレベルの設定が存在することがわかりました。AdministratorAccessでも、このスイッチがOFFのままでは請求情報は見られないようです。CLIだと見られるのは面白いですね。

参考