アマゾンの奥地に消えた!? awsbillingconsoleというAWSサービス名前空間についての現状を確認してみた

以前作成したIAMポリシーで見つけた「awsbillingconsole」、確認しようとしても現時点でAWSドキュメントなど公式情報が見つかりません。しかしAWS管理ポリシーの旧バージョンなどを確認すると、たしかに存在はしていました。
2022.01.29

はじめに

清水です。先日ふとしたことでAWSサービス名前空間(具体的にはIAMポリシーのActionへの記載項目)で「awsbillingconsole」というものを見つけました。これはどんな操作に対する権限だったかな、とGoogle検索などして調べてみましたが、AWSドキュメントなど公式情報が一切見つかりません。

本エントリでは、このAWSドキュメントなど公式情報から現時点で消えてしまったと思われる「awsbillingconsole」というAWSサービス名前空間についての現状、本当に存在していたという痕跡や過去にどのような使われ方をしていたかなどを、わかる範囲で確認してみたのでまとめてみます。

過去に存在していたとするAWSドキュメントのURLをWebアーカイブで遡って確認してみると、たしかに存在した痕跡が確認できました。またIAMポリシーのバージョン機能を確認してみたところ、過去にAWS管理ポリシーで使用されていた期間が存在していたことが確認できました。

なお、AWSサービス名前空間 (AWS Service Namespace)はAWSサービスを一意に特定するための用いられる名前空間です。ARNやIAMのポリシーステートメントなどで使用する名称ですね。詳細については以下エントリをご参照ください。

本エントリで扱う「awsbillingconsole」については、厳密にはIAMのポリシーステートメントでのみ登場を確認したもので正式に「AWSサービス名前空間」と呼べるかはわかりませんが、便宜上こちらの表現を使用しています。

awsbillingconsoleとの遭遇

少し前に作成していたIAMポリシーを確認する機会がありました。特定のIAMにインラインポリシーで設定していたものです。インラインポリシーの名称は「DenyBillingAccess」、つまり請求関連を参照できないようにするポリシーでした。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "aws-portal:*Billing",
                "awsbillingconsole:*Billing",
                "aws-portal:*Usage",
                "awsbillingconsole:*Usage",
                "aws-portal:*PaymentMethods",
                "awsbillingconsole:*PaymentMethods",
                "budgets:ViewBudget",
                "budgets:ModifyBudget",
                "cur:*"
            ],
            "Resource": "*",
            "Effect": "Deny"
        }
    ]
}

さて、この中でActionの項目にある「awsbillingconsole」というAWSサービス名前空間が気になりました。他のサービス名前空間についてはWeb検索するとAWS公式ドキュメン内での記載が確認できるのですが、「awsbillingconsole」についてはAWS公式ドキュメントの情報(一次情報に該当するもの)がなに一つ出てきません。

awsbillingconsoleをWeb検索で調べてみる

実際にGoogleで「awsbillingconsole」を検索してみましょう。完全一致検索を行うためダブルクオーテーション"で文字列を囲みます。

https://www.google.com/search?q=%22awsbillingconsole%22

先頭に現れるのはDevelopersIOの記事ですね([小ネタ]AWS OrganizationsのSCPで特定リージョンのみ使用できるようにする | DevelopersIO【SAP試験対策】IAMの勉強であやふやな理解だったポイントをしっかり整理する | DevelopersIO)。そしてざっと見たところ、AWSのユーザガイドやAPIリファレンスなど、AWS公式ドキュメントは検索結果に現れていません。

サイトドメインを指定した検索でも確認してみましょう。検索ワード「"awsbillingconsole"」に続けて、「site:docs.aws.amazon.com」や「site:amazon.com」をつけてみます。AWS公式ドキュメントであれば前者「site:docs.aws.amazon.com」のサイト指定で何かしら情報が得られるはずです。ドキュメントでなくても、AWS公式ページに情報があれば後者「site:amazon.com」で情報が得られるかと思います。

https://www.google.com/search?q=%22awsbillingconsole%22+site%3Adocs.aws.amazon.com

https://www.google.com/search?q=%22awsbillingconsole%22+site%3Aamazon.com

情報が見つかりませんね。ところでこの「情報が見つからない」Google検索結果に現れるマスコット?、クリックすると実際に釣りをしてくれます。釣り上げるものはいつも同じものではなく、まれにあたり?が出るようですよ。ちょっと楽しくなりますよね。

https://www.google.com/search?q=%22awsbillingconsole%22+site%3Aamazon.com

いや楽しくなっている場合ではないんです。この「awsbillingconsole」、AWS公式ドキュメントでは一切確認できない、という結果になってしまいました。僕らはありもしないAWSサービス名前空間をでっち上げて、何かをコントロールしようとしていたのでしょうか。

awsbillingconsoleをWebアーカイブから調べてみる

「awsbillingconsole」がAWS公式ドキュメントで一切確認できない状況ですが、Google検索結果から辿れるDevelopersIOのブログエントリなどを確認する限り、たしかに以前は「awsbillingconsole」が存在していたはずです。例えば以下のエントリでは、AWS OrganizationsのユーザガイドのサンプルからSCPを作成した、となっています。

[小ネタ]AWS OrganizationsのSCPで特定リージョンのみ使用できるようにする | DevelopersIO

ここで参照しているAWS Organizationsのユーザガイドの該当ベージは以下となります。

先ほどのサイト名を指定したGoogle検索の結果の通り、現時点でこちらのページを検索しても「awsbillingconsole」は現れません。こんなときはInternet Archive Wayback Machineを使って過去のアーカイブページを確認してみましょう。URL「https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html」に対して表示できる最も古い2020/09/21の時点のアーカイブを表示させ、「awsbillingconsole」で検索してみます。

Example service control policies - AWS Organizations (Internet Archive Wayback Machine)

ありました!たしかに「awsbillingconsole」がAWS公式ドキュメントに記載されていたタイミングは存在していたのです。

IAMポリシーの旧バージョンでawsbillingconsoleを確認してみる

現在は確認できませんが、たしかにAWS公式ドキュメントにAWSサービス名前空間「awsbillingconsole」が存在していた時期があったことが確認できました。ここで、「かつて存在していたのであれば、もしやあそこに情報が残っているのではないか、、。」というAWSリソースが思い浮かびました。IAMポリシーです。AWS管理ポリシーのなかで「awsbillingconsole」を使用している(していた)ものがあれば、そのポリシーの以前のバージョンを確認することで、なにか情報が得られるのではないかと思いました。

IAMのマネジメントコンソール、ポリシーの画面から安直ですが「billing」で検索をしてみます。以下2つのポリシーが見つかりました。

Billingポリシーのほうを確認してみましょう。「ポリシーのバージョン」の項目を確認すると、最大履歴の5つ(2016-11-11作成のVersion 1から最新の2020-10-06作成のVersion 5)が確認できます。(なおこのバージョンについてもあくまで現時点でのもので、ポリシーが更新されるたびに5つより古いバージョンは破棄され、また作成日時に対するバージョンの値も変わっていきます。)

この「ポリシーのバージョン」で、これまでのポリシー内容、変更履歴を確認していきましょう。以下にそれぞれのバージョンのポリシー内容(JSON形式)をコピペしたものをまとめます。(なおインデントでズレが生じている箇所がありますが、これはそのままコピペしたためです。おそらくもともとの段階でタブとスペースが混在してしまっている状態かと思われます。)

現在確認できる一番古いバージョンVersion 1 (2016-11-11 02:33 UTC+0900)では「awsbillingconsole」は確認できませんが、Version 2 (2018-02-07 08:46 UTC+0900)で登場しました。Version 3 (2020-04-25 03:12 UTC+0900)でまだ残っていることが確認できますが、Version 4 (2020-08-28 05:09 UTC+0900)でなくなってしまっています。Version 5 (2020-10-06 05:37 UTC+0900)は登場していないので省略しています。

つまり、AWS管理ポリシー「Billing」では、2018-02-07から2020-08-28の間、「awsbillingconsole」が使われていた(登場していた)ということになります。公式ドキュメント以外でも、実際に使用されていた痕跡が確認できました。

Version 1 (2016-11-11 02:33 UTC+0900)

{
	"Version": "2012-10-17",
	"Statement": [{
		"Effect": "Allow",
		"Action": [
			"aws-portal:*Billing",
			"aws-portal:*Usage",
			"aws-portal:*PaymentMethods",
			"budgets:ViewBudget",
			"budgets:ModifyBudget"
		],
		"Resource": "*"
	}]

}

Version 2 (2018-02-07 08:46 UTC+0900)

{
	"Version": "2012-10-17",
	"Statement": [{
		"Effect": "Allow",
		"Action": [
			"aws-portal:*Billing",
                        "awsbillingconsole:*Billing",
			"aws-portal:*Usage",
                        "awsbillingconsole:*Usage",
			"aws-portal:*PaymentMethods",
                        "awsbillingconsole:*PaymentMethods",
			"budgets:ViewBudget",
			"budgets:ModifyBudget",
                        "cur:*"
		],
		"Resource": "*"
	}]

}

Version 3 (2020-04-25 03:12 UTC+0900)

{
	"Version": "2012-10-17",
	"Statement": [{
		"Effect": "Allow",
		"Action": [
			"aws-portal:*Billing",
                        "awsbillingconsole:*Billing",
			"aws-portal:*Usage",
                        "awsbillingconsole:*Usage",
			"aws-portal:*PaymentMethods",
                        "awsbillingconsole:*PaymentMethods",
			"budgets:ViewBudget",
			"budgets:ModifyBudget",
                        "cur:*",
                        "purchase-orders:*PurchaseOrders"
		],
		"Resource": "*"
	}]

}

Version 4 (2020-08-28 05:09 UTC+0900)

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "aws-portal:*Billing",
      "aws-portal:*Usage",
      "aws-portal:*PaymentMethods",
      "budgets:ViewBudget",
      "budgets:ModifyBudget",
      "cur:*",
      "purchase-orders:*PurchaseOrders"
    ],
    "Resource": "*"
  }]
}

まとめ

以前作成したIAMポリシーで見つけた「awsbillingconsole」というAWSサービス名前空間について、AWS公式ドキュメントでは現時点で情報がありませんが、過去にはドキュメントにも記載があったもので、またIAMポリシーのバージョン履歴から少なくとも2018-02-07から2020-08-28の間にAWS管理ポリシー「Billing」で使用されていたものであったことが確認できました。

AWS管理ポリシーから消えているということで、2020年のどこかの請求まわりのアップデートでこの権限設定(サービス名前空間)が不要になった、と考えるべきなのかなと思います。(このアップデートにつながる情報まで追えればよかったのですが、現在のところは情報を確認できていません。)

ということで、現在としては「awsbillingconsole」は公式ドキュメントから一切なくなっており、新たに意識する必要のないAWSサービス名前空間かなと思います。ただ過去の資料やWebで公開されているブログエントリなどを参照した際などには、まだ「awsbillingconsole」を見つけることがあるかと思います。そんなときには、今は存在しないが昔は存在していたAWSサービス名前空間、と認識するのがよいのかなと思いました。