みなさん、こんにちは。AWS CLI が好きな AWS サポート課の市野です。
AWS re:Invent 2025 から無事帰国しすでに通常業務に戻っていますが、今日ちょっとした気づきがあったのでご紹介です。
そもそもは、メンバーアカウントの root ユーザーの取り扱いの模索での気づき
長く AWS を活用されている方だと、root ユーザーでしか行えないこと、IAM エンティティでも行えることの違いをなんとなく把握されているかと思います。
ただ、昨今の AWS のトレンドとして root ユーザーへの依存からの脱却が始まっていると感じています。
特に AWS Organizations のメンバーアカウントに対しては、従来 root ユーザーでしか行えなかったアクションを、管理アカウントから操作可能にしつつあります。
これらのアップデートは、マルチアカウント時代に多くのアカウントが発生してしまうことで root ユーザーの管理が煩雑になることからの解放をめざしている風潮であると捉えています。
そして、2025年6月の re:Inforce 期間中の以下のニュースでの言及で、AWS Organizations を利用している場合、メンバーアカウントの root ユーザーの認証情報を削除して管理の負荷を軽減しつつセキュリティの強化に寄与するとする方針になっていると認識しています。
Today AWS Identity and Access Management (IAM) announced comprehensive multi-factor authentication (MFA) requirements for root users across all account types, with the expansion to member accounts.
〜中略〜
For AWS Organizations customers, we recommend centralizing access account management through the management account and removing root user credentials from member accounts, which represents an even stronger security posture.
(機械翻訳による和訳)
本日、AWS Identity and Access Management (IAM) は、すべてのアカウントタイプにおけるルートユーザーに対する包括的な多要素認証 (MFA) 要件を発表し、メンバーアカウントにも適用範囲を拡大しました。
〜中略〜
AWS Organizations のお客様には、管理アカウントを通じてアクセスアカウント管理を一元化し、メンバーアカウントからルートユーザーの認証情報を削除することをお勧めします。これにより、セキュリティ体制がさらに強化されます。
請求の情報およびツールへのアクセス許可について
このような風潮を受け、弊社からご提供する AWS 請求代行サービスのアカウント群でもメンバーアカウントに関してはベストプラクティスに添えないか模索をしています。
その中で、請求情報に対しては IAM ユーザー・ロールでのアクセスがデフォルトではできない仕様ではなかったか?ということがチーム内で話題になりました。
具体的には、以下に記載のあるとおり、デフォルトでは IAM ユーザーは請求コンソールにアクセスができないとあり、その認識の部分です。
Granting access to your billing information and tools
By default, IAM users don't have access to the AWS Billing and Cost Management console.
ちょっとした違和感
会社で利用しているアカウント以外の、私が個人的に使用しているアカウントでは AWS Organizaions を利用している組織、AWS Control Tower を利用している組織などのいくつかの組織として利用しています。
それらで発行しているメンバーアカウントに対して請求コンソールへのアクセス許可を毎回していないにも関わらず、そのメンバーアカウントで請求情報にアクセスできているよな、という思いがよぎりました。
管理アカウントから発行したメンバーアカウントでは請求情報への IAM アクセスが最初からできる
調べてみたところ、CreateAccount API では IamUserAccessToBilling というパラメータが存在していることを知りました。
ドキュメントによると Allow あるいは Deny の値をとりますが、Required が No と記載されています。
また、AWS マネジメントコンソールの AWS Organizations での「AWS アカウントの追加」1 でも、AWS Control Tower の Account Factory 2 からの発行でも IamUserAccessToBilling に関する入力項目がないことが確認できました。
そのため マネジメントコンソールでの操作で、AWS Organizations あるいは AWS Control Tower の機能でメンバーアカウントを払い出している場合は、暗黙で IamUserAccessToBilling を Allow として発行している ことになります。
If set to
ALLOW, the new account enables IAM users to access account billing information if they have the required permissions. If set toDENY, only the root user of the new account can access account billing information. For more information, see About IAM access to the Billing and Cost Management console in the AWS Billing and Cost Management User Guide.If you don't specify this parameter, the value defaults to
ALLOW, and IAM users and roles with the required permissions can access billing information for the new account.Type: String
Valid Values:
ALLOW | DENYRequired: No
ただしすぐさま請求情報が閲覧できるわけではない
請求情報への IAM アクセスの制限はガードレールのような働きをします。
そのためこのガードレールが外れていたとしても、IAM エンティティに billing などの API アクションに対する許可がなければ引き続き請求情報にはアクセスができないので、ポリシー設計をちゃんとしていれば安心です。
ただ、アカウント発行後、デフォルトで請求情報への IAM アクセスが制限されている、と思い込んでいた場合、かつポリシー設計が甘い場合、意図せず請求情報の閲覧を許している可能性がある点が考えられます。
請求情報への IAM アクセスの無効化は再有効化は管理アカウントからはできない
IamUserAccessToBilling の Allow はあくまでも CreateAccount の実行時のパラメータとしか存在しておらず、Update のようなアクションで無効化/再有効化を行うことはできないことを確認しています。
それらをしたい場合は root ユーザーの利用の必要があり、root ユーザーへの依存性が残っていることになります。
おわりに
すごく小ネタではありますが、アカウントの発行方式により、請求情報への IAM アクセスの挙動や制御に若干の差がある点に気づきがありました。
もしかしたら気付かずに意図せず請求情報の閲覧を許している可能性があるな、と思われましたので、本記事がどなたかのお役に立てば幸いです。
ではまた。
市野 和明 (記事一覧)
マネージドサービス部・AWS サポート課
お客様から寄せられたご質問や技術検証を通じて得られた気づきを投稿していきます。
情シスだった前職までの経験で、UI がコロコロ変わる AWS においては GUI で手順を残していると画面構成が変わってしまって後々まごつくことが多かった経験から、極力変わりにくい AWS CLI での記事が多めです。
X(Twitter):@kazzpapa3(AWS Community Builder)