Google Cloud Platform Cloud Billing IAM を軽く説明

#Cloud Billing IAM とは
**Cloud Billing IAM**とは、**Google Cloud Platform(GCP)** の請求情報となる**請求先アカウント**に対する役割を制御します。
**請求先アカウント**には**クレジットカード情報等お支払い情報**が設定されています。お支払い情報は、GCP の使用を始める際に設定する必要になります。
**Cloud Billing IAM**は、**Cloud IAM** の設定画面ではなく、**お支払い**の画面で設定します。（一部はCloud IAM で設定します。）
コンシューマーが無料の**@gmail.com**からGCPを利用する場合は、特に意識することなく**自分（ユーザー）がプロジェクトオーナーであり、請求先アカウント管理者**となります。
[**G Suite**](https://gsuite.google.co.jp/intl/ja/) や [**Google Cloud Identity**](https://cloud.google.com/identity/) を使って複数ユーザーを管理する場合、**組織のアカウントの請求先アカウントを１つにまとめる、部署毎に請求先アカウントを設定する**といった使い方ができます。
また、[google Cloud パートナー](https://cloud.google.com/partners/directory/?hl=ja)数社がサービス提供しているクレジットカードの登録不要で日本円で支払いが可能となる **GCP支払代行サービス**は、請求先アカウントをサービス業者のものに変更し、GCPの Google への支払いを代行してもらうサービスです。

#疑問
プロジェクト作成時や請求先アカウント設定時において、**請求先アカウントの役割（権限）と Cloud I AM のプロジェクトの役割（権限）との関係**がいまいち**わかりにくい**ので、<font color="Red">軽く検証</font>しまとめました。

#役割（権限）について
本文の役割とは権限と同じ意味ですが、権限と言ったほうがわかりやすいので、以降は権限と記述します。

###Billing I AM の請求先アカウントの権限
[公式ドキュメント](https://cloud.google.com/billing/docs/how-to/billing-access?hl=ja&visit_id=636762963405513697-471218355&rd=1)にある通り、**請求先アカウント**には以下の権限があります。

|権限|説明|お支払い情報|請求先アカウント権限編集|
|:--|:--|:--:|:--:|
|請求先アカウント作成者|G Suite等組織の場合の請求先アカウントを作成する権限です。|-|-|
|請求先アカウント管理者|請求先アカウントのオーナー権限で請求先アカウントの作成以外はなんでもできます。|表示|可|
|請求先アカウント ユーザー|プロジェクトと請求先アカウントをリンクすることができる権限です。|非表示|不可|
|請求先アカウント閲覧者|利用額情報を閲覧できるだけの権限です。|表示|不可|
|プロジェクト支払い管理者|プロジェクトを請求先アカウントにリンクすることができます。この権限だけではプロジェクトを参照・閲覧はできません。|非表示|不可|

**お支払い情報の表示・非表示**は、**ダッシュボードの見込み課金額**や**お支払い画面**に**表示する権限があるか否か**という意味で記載しています。
**請求先アカウント権限編集**は、**請求先アカウントに権限を追加・削除できるか**ということを示しています。

**請求先アカウント**の設定は以下の場所から可能です。
![2018-10-28_22h28_09.png](https://qiita-image-store.s3.amazonaws.com/0/237667/01c831ba-9f25-0a0c-10b2-9f0b6e158069.png)

ちなみに、**プロジェクト支払い管理者** 権限は、**Cloud IAM** からの設定となります。

###Cloud IAM のプロジェクトの権限
こちらも[公式ドキュメント](https://cloud.google.com/iam/docs/understanding-roles?hl=JA)に説明があります通り、Cloud IAM のプロジェクト権限は以下の権限があります。

|権限|説明|
|:--|:--|
|プロジェクトのオーナー|プロジェクト内のすべてのリソースの権限を管理、プロジェクトの課金情報を設定します。|
|プロジェクトの編集者|既存のリソースの閲覧やデータの表示などの権限です。Cloud I AM の権限の変更はできません。|
|プロジェクトの閲覧者|既存のリソースの閲覧やデータの表示などの権限です。|

Cloud IAM の設定は以下の IAM 画面から可能です。ただし、**プロジェクトオーナー権限、Cloud IAM の役割がないと設定できません**。
![2018-10-28_21h51_15.png](https://qiita-image-store.s3.amazonaws.com/0/237667/c9b0d5af-6338-a184-4885-7aa2130f069f.png)


#請求先アカウントを紐付け可能な権限

##gcloudコマンドで紐付け
以下の gcloud コマンドを使用して、請求先アカウントに既存プロジェクトを紐付けて確認します。

gcloud コマンド：[gcloud alpha billing accounts projects link](https://cloud.google.com/sdk/gcloud/reference/alpha/billing/accounts/projects/link)

コマンド例：`gcloud alpha billing accounts projects link {プロジェクト名} --billing-account {請求先アカウントID}`

※もし、お試しされてエラーとなった場合は、上記 gcloud コマンドのリンクのNOTESをご参照ください。

###コマンド実行結果
上記コマンドを実行するユーザーに設定された **Billing IAM と IAM 権限の組み合わせ**で、**プロジェクトと請求先アカウントの紐付け可否**を確認しました。

|権限|請求先アカウント管理者|請求先アカウントユーザー|請求先アカウント閲覧者|なし|
|:--|:--:|:--:|:--:|:--:|
|**プロジェクトオーナー**|可能|可能|可能|不可|
|**プロジェクト編集者**|不可|不可|不可|不可|
|**プロジェクト閲覧者**|不可|不可|不可|不可|
|**プロジェクト参照者**|不可|不可|不可|不可|
|**プロジェクト支払い管理者**|可能|可能|可能|不可|
|**プロジェクト編集者＋プロジェクト支払い管理者**|可能|可能|可能|不可|
|**プロジェクト閲覧者＋プロジェクト支払い管理者**|可能|可能|可能|不可|
|**プロジェクト参照者＋プロジェクト支払い管理者**|可能|可能|可能|不可|


・プロジェクトオーナーはプロジェクト支払い管理者のスーパーセットなので、紐付けが可能です。編集者以下はプロジェクト支払い管理者と組み合わせれば紐付け可能となります。
・ユーザーにプロジェクト支払い管理者のみ設定の場合、コマンドの結果はエラーとなりますが、請求先アカウントの紐付けはできます。（プロジェクトを参照できないいためエラーとなる。）

##終わりに
本記事から、例えばプロジェクトの作成権限は与えたいが、請求情報は見せなくない、プロジェクトは変更できないが、請求情報の閲覧は可能といった設定などわかりやすくなったのではないでしょうか。（それでもわかりにくかったらすみません。）
会社業務で GCP を使用している場合以外、**請求先アカウント**をあまり意識されない方が多いと思いますが、**請求先アカウント権限とプロジェクト権限の関係の整理**に少しでもお役に立てば幸いです。

##参考リンク
・[請求アクセス制御の概要](https://cloud.google.com/billing/docs/how-to/billing-access?hl=ja&visit_id=636762963405513697-471218355&rd=1)
・[役割について](https://cloud.google.com/iam/docs/understanding-roles?hl=JA)