チェックポイント
Create a custom role using a YAML file
/ 20
Create a custom role using flags
/ 20
Update a custom role using a YAML file
/ 15
Update a custom role using flags
/ 15
Disabling a custom role
/ 15
Undeleting a custom role
/ 15
IAM カスタムロール
GSP190
概要
Cloud IAM には高度に自動化され、少ない手間でリソースの権限を管理するための適切なツールが用意されています。ユーザーに権限を直接付与する代わりに、権限を組み合わせたロールを割り当てます。これにより、社内の職務権限をグループやロールにマッピングできます。ユーザーは自分の業務の遂行に必要なアクセス権のみを付与され、管理者はユーザー グループ全体に対してデフォルトの権限を簡単に付与できます。
Cloud IAM では、次の 2 種類のロールがあります。
- 事前定義されたロール
- カスタムロール
事前定義ロールは、Google によって作成、管理されます。その権限は、Google Cloud に新しい機能やサービスが追加された場合など、必要に応じて自動的に更新されます。
カスタムロールはユーザー定義であり、特定のニーズに合わせて 1 つ以上のサポートされている権限をバンドルできます。カスタムロールは Google によって管理されません。Google Cloud が新しい権限、機能、サービスを追加しても、カスタムロールは自動的に更新されません。カスタムロールは、使用可能な Cloud IAM 権限を組み合わせて作成します。権限により、ユーザーは Google Cloud のリソースに特定の操作を行うことができるようになります。
学習内容
このラボでは、カスタムロールを作成、更新、削除、復元します。
前提条件
この学習機会を最大限活かすためには、IAM ロールについての前知識を持っていることを推奨します。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
プロジェクトのリージョンを設定する
次のコマンドを実行して、プロジェクトのリージョンを設定します。
IAM カスタムロールの概要
Cloud IAM では、Cloud IAM のロールをカスタマイズすることもできます。ここでは、1 つ以上の権限を持つカスタムの Cloud IAM のロールを作成してユーザーに付与できます。Cloud IAM には、カスタムロールを作成して管理するための UI と API が用意されています。
重要なポイント: カスタムロールを使用すると、組織内のユーザー アカウントとサービス アカウントに目的の職務を遂行するために必要な権限のみを付与し、最小権限の原則を適用できます。
カスタムロールは、使用可能な Cloud IAM 権限を組み合わせて作成します。権限により、ユーザーは Google Cloud のリソースに特定の操作を行うことができるようになります。
Cloud IAM の環境では、権限が次の形式で表されます。
たとえば、compute.instances.list
権限を持つユーザーは所有する Compute Engine インスタンスを一覧表示でき、compute.instances.stop
権限を持つユーザーは VM を停止できます。
権限は通常は REST メソッドと 1 対 1 で対応しています(そうでない場合もあります)。つまり、Google Cloud の各サービスには、各 REST メソッドに対して関連付けられている権限があります。メソッドを呼び出すには、呼び出し元にその権限が必要です。たとえば、topic.publish()
の呼び出し元には pubsub.topics.publish
権限が必要です。
カスタムロールは、ポリシーの対象となるロールやリソースを所有するプロジェクトまたは組織のポリシーでのみ権限を付与できます。あるプロジェクトまたは組織のカスタムロールを、別のプロジェクトまたは組織が所有するリソースに対して付与することはできません。
必要な権限とロール
カスタムロールを作成するには、呼び出し元に iam.roles.create
権限が必要です。
オーナー以外のユーザー(組織管理者を含む)には、「組織のロールの管理者」のロール(roles/iam.organizationRoleAdmin)または「IAM ロールの管理者」のロール(roles/iam.roleAdmin)のいずれかを割り当てる必要があります。IAM セキュリティ審査担当者のロール(roles/iam.securityReviewer)を使用すると、カスタムロールを表示できますが管理はできません。
カスタムロールのユーザー インターフェースは、Cloud コンソールの IAM ロールにあります。これは、カスタムロールを作成または管理する権限を持つユーザーのみが使用できます。デフォルトでは、プロジェクト オーナーのみが新しいロールを作成できます。プロジェクト オーナーは、同じプロジェクトの他のユーザーに IAM ロールの管理者ロールを付与することで、この機能へのアクセスを制御できます。組織の場合は、組織管理者のみが組織のロールの管理者ロールを付与できます。
カスタムロールを作成する準備
カスタムロールを作成する前に、次を確認しておくことをおすすめします。
- リソースに適用できる権限の種類
- リソースに付与できるロールの種類
- ロール メタデータの内容
タスク 1. リソースで使用可能な権限の表示
カスタムロールを作成する前に、リソースに適用できる権限を確認しておくことをおすすめします。リソースとその下位にあるリソースに適用可能な権限を確認するには、gcloud コマンドライン ツール、Cloud コンソールまたは IAM API を使用します。たとえば、組織と組織内のプロジェクトに適用できるすべての権限を確認できます。
- 以下のコマンドを実行して、プロジェクトで利用可能な権限の一覧を確認します。
出力:
タスク 2. ロール メタデータを取得する
カスタムロールを作成する前に、事前定義済みのロールとカスタムロールの両方のメタデータを取得しておくことをおすすめします。ロール メタデータには、そのロールの ID と権限が含まれます。メタデータを表示するには、Cloud コンソールまたは IAM API を使用します。
- ロール メタデータを表示するには、以下のコマンドを使用します。
[ROLE_NAME]
はロール(roles/viewer
やroles/editor
など)に置き換えます。
roles/viewer の出力例:
タスク 3. リソースに対して付与可能なロールの表示
特定のリソースに適用できるすべてのロールのリストを返すには、gcloud iam list-grantable-roles
コマンドを使用します。
- 次の
gcloud
コマンドを実行して、プロジェクトから付与できるロールを一覧表示します。
出力は次のようになります。
タスク 4. カスタムロールを作成する
カスタムロールを作成するには、呼び出し元に iam.roles.create
権限が必要です。デフォルトでは、プロジェクトや組織のオーナーがこの権限を持ち、カスタムロールを作成して管理できます。
オーナー以外のユーザー(組織の管理者など)には、「組織のロールの管理者」または「IAM ロールの管理者」のロールのいずれかを割り当てる必要があります。
新しいカスタムロールを次の 2 つの方法で作成するには、gcloud iam roles create
コマンドを使用します。
- ロール定義が含まれる YAML ファイルを使用する
- フラグを使用して、ロール定義を指定する
カスタムロールを作成する際には、--organization [ORGANIZATION-ID]
フラグまたは --project [PROJECT-ID]
フラグを使用して、組織レベルまたはプロジェクト レベルのどちらに適用するかを指定する必要があります。下の各例では、プロジェクト レベルでカスタムロールを作成します。
次のセクションでは、プロジェクト レベルでカスタムロールを作成します。
YAML ファイルを使用してカスタムロールを作成する
カスタムロール定義が含まれる YAML ファイルを作成します。このファイルは次のような構造にする必要があります。
各プレースホルダ値の詳細は、以下のとおりです。
-
[ROLE-TITLE]
はロールのわかりやすいタイトルです。例: Role Viewer。 -
[ROLE_DESCRIPTION]
は、ロールについての短い説明です。例: My custom role description。 -
[LAUNCH-STAGE]
はリリースのライフサイクルにおけるロールの段階を示します。例: ALPHA、BETA、GA。 -
[includedPermissions]
はカスタムロールに含める権限(複数可)のリストを指定します。例: iam.roles.get。
- 次に、以下を実行してロール定義の YAML ファイルを作成します。
- このカスタムロールの定義を YAML ファイルに追加します。
-
次に、CTRL+X、Y、ENTER の順にキーを押してファイルを保存して閉じます。
-
次の
gcloud
コマンドを実行します。
ロールが正常に作成された場合、次のレスポンスが返されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
フラグを使用してカスタムロールを作成する
次に、フラグを使用する方法で新しいカスタムロールを作成します。フラグは YAML ファイルと同様の形式なので、コマンドの構築は確認できます。
- 次のようにフラグを指定して
gcloud
コマンドを実行し、新しいロールを作成します。
出力例:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 5. カスタムロールを一覧表示する
- プロジェクト レベルまたは組織レベルのカスタムロールを指定して、次の
gcloud
コマンドを実行してカスタムロールを一覧表示します。
出力例:
削除されたロールを一覧表示するには、--show-deleted
フラグを使用することもできます。
- 事前定義済みのロールを一覧表示するには、次の
gcloud
コマンドを実行します。
タスク 6. 既存のカスタムロールを更新する
カスタムロールなどのリソースのメタデータの更新では、一般にリソースの現在の状態の読み取り、ローカルでのデータの更新、変更されたデータの送信と書き込みが行われます。このような処理では、2 つ以上の独立したプロセスが一連の操作を同時に試行する場合に競合が発生することがあります。
たとえば、プロジェクトの 2 人のオーナーが、1 つのロールに対して相反する変更を同時に行うと、一部の変更が失敗する可能性があります。
Cloud IAM では、カスタムロールの etag
プロパティを使用してこの問題を解決します。このプロパティは、カスタムロールが最後のリクエスト以降に変更されているかどうかを確認するために使用されます。etag 値を使用して Cloud IAM にリクエストを出すと、Cloud IAM はリクエスト内の etag 値と、カスタムロールに関連付けられている既存の etag 値を比較します。etag 値が一致した場合にのみ変更が書き込まれます。
次の 2 通りの方法で新しいカスタムロールを更新するには、gcloud iam roles update
コマンドを使用します。
- 更新されたロール定義を含む YAML ファイル
- 更新されたロール定義を指定するフラグ
カスタムロールを更新する際には、--organization [ORGANIZATION-ID]
フラグまたは --project [PROJECT-ID]
フラグを使用して、組織レベルまたはプロジェクト レベルのどちらに適用するかを指定する必要があります。下の各例では、プロジェクト レベルでカスタムロールを作成します。
describe
コマンドはロールの定義を返し、その定義にはロールの現在のバージョンを一意に特定する etag 値が含まれます。ロールの同時変更が上書きされないように、更新されたロール定義に etag 値を指定する必要があります。
YAML ファイルを使用してカスタムロールを更新する
- 次の
gcloud
コマンドを実行してロールの最新の定義を取得します。[ROLE_ID]
は editor に置き換えます。
describe
コマンドは次の出力を返します。
-
出力をコピーして、次の手順で新しい YAML ファイルを作成します。
-
エディタで
new-role-definition.yaml
ファイルを作成します。
- 最後のコマンドの出力を貼り付けて、
includedPermissions
に以下の 2 つの権限を追加します。
完了すると、YAML ファイルは次のようになります。
-
CTRL+X、Y、ENTER の順にキーを押して、ファイルを保存して閉じます。
-
次に
update
コマンドを使ってロールを更新します。[ROLE_ID]
を editor に置き換えて、次のgcloud
コマンドを実行します。
ロールが正常に更新された場合、次のレスポンスが返されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
フラグを使用して、カスタムロールを更新する
ロール定義の各部分は、対応するフラグを使用して更新できます。利用可能なすべてのフラグの一覧については、SDK リファレンス ドキュメント gcloud iam roles update をご覧ください。
次のフラグを使用して、権限を追加または削除します。
-
--add-permissions:
権限(複数の場合はカンマで区切る)をロールに追加します。 -
--remove-permissions:
権限(複数の場合はカンマで区切る)をロールから削除します。
または、--permissions [PERMISSIONS]
フラグを使用して新しい権限を指定することもできます。権限のカンマ区切りのリストを指定すると、既存の権限のリストが置き換えられます。
- 次のようにフラグを指定して
gcloud
コマンドを実行し、viewer ロールに権限を追加します。
ロールが正常に更新された場合、次のレスポンスが返されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 7. カスタムロールを無効にする
ロールを無効にすると、そのロールに関連するポリシー バインディングはすべて無効になります。つまり、ユーザーにロールを付与しても、そのロールの権限は付与されません。
既存のカスタムロールを無効にする最も簡単な方法は、--stage
フラグを使用してロールを DISABLED に設定する方法です。
- 次の
gcloud
コマンドを実行して viewer ロールを無効にします。
ロールが正常に更新された場合、次のレスポンスが返されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 8. カスタムロールを削除する
- カスタムロールを削除するには、
gcloud iam roles delete
コマンドを使用します。削除されたロールは無効になり、新しい IAM ポリシー バインディングの作成に使用できなくなります。
出力例:
ロールが削除された後、既存のバインディングは残りますが無効になります。7 日以内であれば、ロールの削除を取り消すことができます。7 日間後にロールの完全削除プロセスが開始され、そのプロセスが 30 日間続きます。37 日後に、ロール ID は再び使用可能になります。
タスク 9. カスタムロールの復元
- 7 日以内ならば、ロールを復元できます。削除されたロールは DISABLED 状態にあります。再び利用できるようにするには、
--stage
フラグを更新します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
お疲れさまでした
このラボでは、IAM でカスタムロールを作成し、管理しました。
次のステップと詳細情報
IAM の詳細については、IAM の記事 Cloud Identity and Access Management をご覧ください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 4 月 15 日
ラボの最終テスト日: 2023 年 7 月 13 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。