Google Cloud:カスタムロールの作成方法を解説

2023.02.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

過去類似記事

Google Cloud:IAMのイメージについてざっくりまとめてみた
Google Cloud:Cloud Billingと組織の概要についてざっくりまとめてみた
Google Cloud:IdPとアカウント周りについてまとめた

# AKIBA.SaaS「Google Cloud:組織作成の基礎」というテーマで登壇しました

手順

1.Google Cloud-ロールの復習

2.カスタムロール/権限の確認

3.カスタムロールを作成

4.権限を付与

まとめ

1.Google Cloud-ロールの復習

今回はカスタムロールを作成していくのですが、Googleには3つのロールがあることを認識しておく必要があります。
基本ロール・・・オーナー、編集者、閲覧者の3つで構成されていて運用環境では使用しない。
事前定義ロール・・・運用環境や検証環境など全てで使用を推奨。
カスタムロール・・・事前定義ロールに無く、さらに厳しくロールを管理するために使用。

※簡単な説明なため、詳細を知りたい方は公式のドキュメントを参考にしてください。

ロールについて
基本ロールの定義
事前定義ロール
カスタムロール

基本的には事前定義ロールの使用が推奨されていますが、今回は検証のためにCUD(確約利用割引)全般を操作できるカスタムロールを作成し、付与するまでの流れを解説します。
チュートリアルやさまざまな権限が記載されているサイトを見ながら行っていきます。

2.カスタムロール/権限の確認

⏬今回の参考にしたドキュメント
カスタムロールの作成と管理

カスタムロールには組織または個別のプロジェクトごとに範囲を絞って付与することが可能です。
(ちなみにフォルダレベルでカスタムロールを定義することはできません)
そして、カスタムロールでサポートされている権限でのみ作成することが可能で、組織単位、またはプロジェクト単位で付与するかによっても変わってきます。
下記コマンドでプロジェクトや組織内のカスタムロールで使用可能な権限のリストを取得できます。
gcloud iam list-testable-permissionsに続けて組織IDプロジェクトIDを指定します。

gcloud iam list-testable-permissions

プロジェクト指定の場合

//cloudresourcemanager.googleapis.com/projects/プロジェクトID

組織指定の場合

//cloudresourcemanager.googleapis.com/organizations/組織ID

ただ、結果がかなり多く表示されてしますので、必要な権限が決まっていれば下記の公式ドキュメントから探すが早いかもしれません。(今回は結果を絞るコマンドは抜きで)

カスタムロールでの権限のサポートレベル

今回はここでcompute.commitments.配下に含まれている権限を調べました。
SUPPORTEDとというパラメータであれば、カスタムロールで使用可能であるということです。

下記、サポート概要の説明です。(公式から引用)

権限を確認出来たので、実際にCloud Shellからカスタムロールを作成していきます。

3.カスタムロールを作成

右上のCloud Shellのアイコンをクリックし起動させます。(一応わかりやすいように画像も)

今回使用するのは、gcloudコマンドです。
ちなみにカスタムロールを作成するには、ユーザーにiam.roles.createの権限が必要です。
オーナーロール組織ロールの管理者ロール(roles/iam.organizationRoleAdmin)、
またはIAMロールの管理者ロール(roles/iam.roleAdmin)、のいずれかを割り当てれば上記の権限と共にカスタムロール周りの操作が可能となります。

また、作成方法にはYAMLファイルに記述する方法とそのままCloud Shellにベタ打ちする方法がありますが、今回は後述のCloud Shellに直接記述していきます。
下記のようにロールを定義しました。

gcloud iam roles create customcudroles(ロールの名前)

--project=muroi-project(プロジェクトID)

--title=cudrolestitle(ロールのタイトル名)

--description=cudroles(ロールの説明)

--permissions="compute.commitments.get,compute.commitments.create,compute.commitments.list,

compute.commitments.update,compute.commitments.updateReservations"(ロールに付与する権限)

--stage=ga(現在のリリースの状態)

--stageのリリース状況については、テストとデプロイを参照してください。
また、permissions=はcompute.commitments.*を指定してもエラーが出てしまったため、*配下の権限を直接ベタ打ちで追加しました。
(もしかしたらまとめて付与できる方法があるかも知れませんが)

コマンドの実行が成功したら、下記のように先ほど指定したロールの名前などが出てきます。
(公式から引用のため、上で記述したロールの名前などとは相違ありますが参考までに)

4.権限を付与

ここからはGUIで操作しようと思います。
[IAMと管理]→[IAM]→[アクセス権を付与]を選択します。
プリンシパルに付与したいユーザーまたはグループを指定します。
ロールは先ほど作成したカスタムロールを選択します。
作成をしたら完了です。

これで指定したユーザーにカスタムロールを付与することが出来ました。

まとめ

今回は訳あってCUD(確約利用割引)のカスタムロールを確認したいがために、実際の操作の記録も兼ねてと思いブログにしました。
カスタムロールは便利ですが、たくさん作成してしまうと管理が煩雑になるので、極力事前定義ロールを使用して権限の付与を行うことが推奨されています。
もし、カスタムロールを作りすぎて、誰に何の目的でカスタムロールを付与したのわからず、放置していると思わぬセキュリティリスクになり得ます。
もしそのような事態が懸念される場合は、IAM Reccomender機能などを使い、定期的に権限の棚卸しをするのもいいかと思います。
ちなみにAzureではたしか、アクセスレビューなるもので権限の棚卸ができた気がします。(Azure AD P2の機能が必要だったかも、、、)

最後に一言

食事の前の運動で痩せる

簡潔に箇条書きで書きます。
・食事の前に筋トレを行う(30min~60min)
・その後できるならランニング、自転車などの有酸素運動を行う(10min~30min)
・上記の運動により体内のエネルギーが枯渇する(主にグリコーゲンという貯蔵エネルギーが消費され、なくなる)
・摂取した糖質やタンパク質は新しいグリコーゲンとして、体内に蓄積される=脂肪になる前にグリコーゲンになるから太らない
メカニズムは大雑把に理解するだけで、OKです!!! あとは、実践あるのみです?