はじめに
AWS個人アカウントを整理しており、不要なリソースの削除と新規ユーザを作成しました。
そこではじめて気づいたのですが、コスト関連の権限がなく閲覧できない状況になっていました。
案件でもコスト関連は閲覧できないのが当たり前の状況だった為あまり意識をしておらず、またIAMユーザにはAdmin権限を与えておりコストも確認できるだろうと高をくくっていました。
今後忘れないように、コストが確認できない理由と対応した手順を書き綴って行こうかなと思います。
構成
以下の流れで書き綴っていきます。
- 結論
- なぜ管理者権限である「AdministratorAccess」ポリシーでコスト確認できないのか
- 対応手順
- 検証
1. 結論
AWSデフォルトの仕様により、IAMユーザとロールはコスト関連にアクセスできない仕様となっているためです。
対応としては、ルートユーザでログインし、設定を行う必要があります。
2. なぜ管理者権限である「AdministratorAccess」ポリシーでコスト確認できないのか
調査をしていると、AWS公式ドキュメントにて以下記載を見つけました。
請求コンソールへのアクセス権の付与
AWS アカウント内の IAM ユーザーとロールは、デフォルトでは Billing and Cost Management コンソールにアクセスできません。これは、IAM ユーザーまたはロールに、特定の請求機能へのアクセス権を付与する IAM ポリシーがある場合でも当てはまります。アクセスを許可するには、AWS アカウントルートユーザーが先に IAM アクセスをアクティブ化しておく必要があります。
上記のことから、デフォルト設定のままでは、例え「AdministratorAccess」ポリシーを持っているIAMユーザであろうと、コスト関連にはアクセスできないということがわかりました。
自分なりの解釈
なぜ、Admin権限である「AdministratorAccess」ポリシーでも、コスト関連が閲覧できないようになっているのか考えました。
コスト関連では請求先情報が記載していたり、SP購入などが出来ます。
そのため、ルートユーザ(本当の意味での管理者)以外が閲覧できてしまうと、悪意を持った者でもそうでない者でも情報の抜き取りや不要なリソースの購入などを行える可能性がある為だと解釈しております。
また、IAMユーザはAWS上のリソース作成や管理などを行うためのリソースであり、使用者もそのロール(職種)であり、コスト管理者とはロールが違うため責任分界点を明確に分けていると考えています。
3. 対応手順
対応手順は、公式ドキュメントの請求コンソールへのアクセス権の付与の説明のすぐ下に記載がありました。
-
ルートユーザー認証情報 (AWS アカウントの作成に使用した E メールアドレスとパスワード) で AWS マネジメントコンソール にサインインします。
-
ナビゲーションバーでアカウント名を選択してから、[アカウント] を選択します。
-
ページを下にスクロールして、[請求情報への IAM ユーザーとロールのアクセス] セクションが見つかったら、[編集] を選択します。
-
[IAM アクセスをアクティブ化] チェックボックスをオンにして、Billing and Cost Management コンソールページへのアクセスをアクティベートします。
-
[更新] を選択します。
このページには、[IAM ユーザーとロールの請求情報へのアクセスがアクティブ化されています] というメッセージが表示されます。重要
IAM アクセスをアクティブ化するだけでは、Billing and Cost Management コンソールページを表示できるアクセス許可がユーザーとロールに付与されません。また、Billing and Cost Management コンソールへのアクセスを許可するには、必要な ID ベースのポリシーを IAM ロールにアタッチする必要があります。ロールは、ユーザーが必要なときに引き受けることができる一時的な認証情報を提供します。 -
AWS マネジメントコンソールを使用して、Billing and Cost Management にアクセスするためにユーザーが引き受けることができるロールを作成します。
-
ロールの [アクセス許可の追加] ページで、アクセス許可を追加して、自分の AWS アカウントの請求リソースに関する詳細をリストします。
AWS マネージドポリシー請求は、Billing and Cost Management コンソールを表示および編集するためのアクセス許可をユーザーに付与します。これには、アカウントの使用状況の閲覧、予算および支払い方法の修正が含まれます。IAM ロールにアタッチしてアカウントの請求情報へのアクセスを制御できるポリシーのその他の例については、「Billing and Cost Management ユーザーガイド」の「AWS 請求ポリシーの例」を参照してください。
4. 検証
実際に確認した手順で、対応できるのか検証していきます。
1. ルートユーザでのログイン
まずルートユーザでのログインを行います。
以下画面でアカウント作成時に、設定したメールアドレスを入力、次画面でパスワードを入力しログインしていきます。
メールアドレス入力)

パスワード入力)

2. コスト関連への「IAMアクセスをアクティブ化」
ルートユーザでコンソールにログイン出来たら、ナビゲーションバーを押下し、「アカウント」を押下します。

アカウントコンソールを下に行くと、「IAM ユーザーおよびロールによる請求情報へのアクセス」欄があるので、「編集」を押下します。

「IAM アクセスをアクティブ化」にチェックを入れ、「更新」を押下します。

有効化したのが、確認出来ました。

3. IAMユーザで閲覧できるか確認
IAMユーザが存在しなかったり、「Billing and Cost Management」へのアクセス権限を持たないユーザで閲覧したい場合は、IAMユーザ・ポリシーを先に作成・設定してください。
ルートユーザをログアウトし、事前に作成していた「AdministratorAccess」ポリシーを持つIAMユーザでログインしなおします。
コンソールのホーム画面でも閲覧できるようになったことが確認できますが、「Billing and Cost Management」へアクセスしてみます。

無事アクセスすることが出来ました。

まとめ
コスト関連は個人情報や、業務ではお客様情報が記載されているので、慎重に設定していきたいなと感じました。
今回は個人アカウントの為、管理者ユーザでは閲覧できるようにしましたが、今後の運用ではより業務に近しくなるようIAMユーザやロールの整備をしていこうと思います。
同じように、困っている方の助けになれば幸いです。


