🎃

AWSの請求情報をルートアカウント以外で確認する方法

2024/06/26に公開

はじめに

詳細な手順はガイドに記載されています。
https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_billing.html

新しく作成したAWSアカウントにおいて、IAMユーザで請求周りのページにアクセスできなくなっており、
ルートアカウントで設定変更をする必要があったので、詳細な手順を画面イメージと合わせて残しておきます。

ルートアカウントの操作

ステップ 1: テスト AWS アカウントで請求情報への IAM アクセスを有効にする

  1. アカウントページを開く
    https://us-east-1.console.aws.amazon.com/billing/home#/account

  2. IAM ユーザーおよびロールによる請求情報へのアクセスの有効化
    アカウントページ下部に「IAM ユーザーとロールによる請求情報へのアクセス」があります。

最初は画像のように「無効化済み」となっています。
「編集」ボタンをクリックし、「IAM アクセスをアクティブ化」にチェックを付け、「更新」ボタンクリック

「有効化済み」に代わっていればOKです。

※この有効化を行っていないと、ステップ2で権限をいくら付与しても、IAMユーザではアクセス許可がないと言われ表示ができません。

ステップ2: ユーザーにポリシーをアタッチする

ユーザ、グループの作成については割愛します。
ここでは、既存のユーザに対して権限を追加します。

  1. IAMのページを開く
    https://us-east-1.console.aws.amazon.com/iam/home#/users

  2. 権限を付与したいユーザを選択し、「許可ポリシー」にて「許可を追加」をクリック

  3. Billingポリシーを追加
    「許可のオプション」で「ポリシーを直接アタッチする」を選択し、
    「許可ポリシー」はBilling にチェックを付けて「次へ」

  4. Billingポリシーが追加されていることを確認し、「許可を追加」ボタンをクリック

許可ポリシーの欄にBillingが追加されていればOKです。

コンソールでのアクセス確認

「請求とコスト管理」の「請求書」ページを開きます。
https://us-east-1.console.aws.amazon.com/billing/home#/bills

以下のようにページが表示されれば適切に権限が付与できています。

Billingポリシーについて

今回は簡単にポリシーを設定するため、元からあるポリシーを適用しましたが、もっと細かに操作できることを制限したい場合は、アクションを絞ったカスタムポリシーを用意してアタッチする必要があります。

更新や削除は出来ずに見るだけにしたい場合は、「AWSBillingReadOnlyAccess」ポリシーでも「請求とコスト管理」の様々なページを見ることができました。
また、AdminstratorAccessやPowerUserAccessなど、すでに強いポリシーを付与されている場合は、Billingポリシーを追加しなくても「請求とコスト管理」の操作は可能です。

以下Billingポリシーが許可されているアクションです。
「請求とコスト管理」のメニューにある操作は一通り参照だけでなく更新や削除等もできる権限です。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "account:GetAccountInformation",
                "aws-portal:*Billing",
                "aws-portal:*PaymentMethods",
                "aws-portal:*Usage",
                "billing:GetBillingData",
                "billing:GetBillingDetails",
                "billing:GetBillingNotifications",
                "billing:GetBillingPreferences",
                "billing:GetContractInformation",
                "billing:GetCredits",
                "billing:GetIAMAccessPreference",
                "billing:GetSellerOfRecord",
                "billing:ListBillingViews",
                "billing:PutContractInformation",
                "billing:RedeemCredits",
                "billing:UpdateBillingPreferences",
                "billing:UpdateIAMAccessPreference",
                "budgets:CreateBudgetAction",
                "budgets:DeleteBudgetAction",
                "budgets:DescribeBudgetActionsForBudget",
                "budgets:DescribeBudgetAction",
                "budgets:DescribeBudgetActionsForAccount",
                "budgets:DescribeBudgetActionHistories",
                "budgets:ExecuteBudgetAction",
                "budgets:ModifyBudget",
                "budgets:UpdateBudgetAction",
                "budgets:ViewBudget",
                "ce:CreateCostCategoryDefinition",
                "ce:CreateNotificationSubscription",
                "ce:CreateReport",
                "ce:DeleteCostCategoryDefinition",
                "ce:DeleteNotificationSubscription",
                "ce:DeleteReport",
                "ce:DescribeCostCategoryDefinition",
                "ce:GetCostAndUsage",
                "ce:ListCostAllocationTags",
                "ce:ListCostCategoryDefinitions",
                "ce:ListTagsForResource",
                "ce:TagResource",
                "ce:UpdateCostAllocationTagsStatus",
                "ce:UpdateNotificationSubscription",
                "ce:UpdatePreferences",
                "ce:UpdateReport",
                "ce:UpdateCostCategoryDefinition",
                "ce:UntagResource",
                "ce:StartCostAllocationTagBackfill",
                "ce:ListCostAllocationTagBackfillHistory",
                "ce:GetTags",
                "ce:GetDimensionValues",
                "consolidatedbilling:GetAccountBillingRole",
                "consolidatedbilling:ListLinkedAccounts",
                "cur:DeleteReportDefinition",
                "cur:DescribeReportDefinitions",
                "cur:GetClassicReport",
                "cur:GetClassicReportPreferences",
                "cur:GetUsageReport",
                "cur:ModifyReportDefinition",
                "cur:PutClassicReportPreferences",
                "cur:PutReportDefinition",
                "cur:ValidateReportDestination",
                "freetier:GetFreeTierAlertPreference",
                "freetier:GetFreeTierUsage",
                "freetier:PutFreeTierAlertPreference",
                "invoicing:GetInvoiceEmailDeliveryPreferences",
                "invoicing:GetInvoicePDF",
                "invoicing:ListInvoiceSummaries",
                "invoicing:PutInvoiceEmailDeliveryPreferences",
                "payments:CreatePaymentInstrument",
                "payments:DeletePaymentInstrument",
                "payments:GetPaymentInstrument",
                "payments:GetPaymentStatus",
                "payments:ListPaymentPreferences",
                "payments:ListTagsForResource",
                "payments:ListPaymentInstruments",
                "payments:MakePayment",
                "payments:TagResource",
                "payments:UpdatePaymentPreferences",
                "payments:UpdatePaymentInstrument",
                "payments:UntagResource",
                "pricing:DescribeServices",
                "purchase-orders:AddPurchaseOrder",
                "purchase-orders:DeletePurchaseOrder",
                "purchase-orders:GetPurchaseOrder",
                "purchase-orders:ListPurchaseOrderInvoices",
                "purchase-orders:ListPurchaseOrders",
                "purchase-orders:ListTagsForResource",
                "purchase-orders:ModifyPurchaseOrders",
                "purchase-orders:TagResource",
                "purchase-orders:UntagResource",
                "purchase-orders:UpdatePurchaseOrder",
                "purchase-orders:UpdatePurchaseOrderStatus",
                "purchase-orders:ViewPurchaseOrders",
                "support:CreateCase",
                "support:AddAttachmentsToSet",
                "sustainability:GetCarbonFootprintSummary",
                "tax:BatchPutTaxRegistration",
                "tax:DeleteTaxRegistration",
                "tax:GetExemptions",
                "tax:GetTaxInheritance",
                "tax:GetTaxInterview",
                "tax:GetTaxRegistration",
                "tax:GetTaxRegistrationDocument",
                "tax:ListTaxRegistrations",
                "tax:PutTaxInheritance",
                "tax:PutTaxInterview",
                "tax:PutTaxRegistration",
                "tax:UpdateExemptions"
            ],
            "Resource": "*"
        }
    ]
}

Discussion