
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
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
Cloud IAM には高度に自動化され、少ない手間でリソースの権限を管理するための適切なツールが用意されています。ユーザーに権限を直接付与する代わりに、権限を組み合わせたロールを割り当てます。これにより、社内の職務権限をグループやロールにマッピングできます。ユーザーは自分の業務の遂行に必要なアクセス権のみを付与され、管理者はユーザー グループ全体に対してデフォルトの権限を簡単に付与できます。
Cloud IAM では、次の 2 種類のロールがあります。
事前定義ロールは、Google によって作成、管理されます。その権限は、Google Cloud に新しい機能やサービスが追加された場合など、必要に応じて自動的に更新されます。
カスタムロールはユーザー定義であり、特定のニーズに合わせて 1 つ以上のサポートされている権限をバンドルできます。カスタムロールは Google によって管理されません。Google Cloud が新しい権限、機能、サービスを追加しても、カスタムロールは自動的に更新されません。カスタムロールは、使用可能な Cloud IAM 権限を組み合わせて作成します。権限により、ユーザーは Google Cloud のリソースに特定の操作を行うことができるようになります。
このラボでは、カスタムロールを作成、更新、削除、復元します。
この学習機会を最大限活かすためには、IAM ロールについての前知識を持っていることを推奨します。
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] パネルでも [ユーザー名] を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] パネルでも [パスワード] を確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
[承認] をクリックします。
出力は次のようになります。
出力:
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
次のコマンドを実行して、プロジェクトのリージョンを設定します。
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 ロールの管理者ロールを付与することで、この機能へのアクセスを制御できます。組織の場合は、組織管理者のみが組織のロールの管理者ロールを付与できます。
カスタムロールを作成する前に、次を確認しておくことをおすすめします。
カスタムロールを作成する前に、リソースに適用できる権限を確認しておくことをおすすめします。リソースとその下位にあるリソースに適用可能な権限を確認するには、gcloud コマンドライン ツール、Cloud コンソールまたは IAM API を使用します。たとえば、組織と組織内のプロジェクトに適用できるすべての権限を確認できます。
出力:
カスタムロールを作成する前に、事前定義済みのロールとカスタムロールの両方のメタデータを取得しておくことをおすすめします。ロール メタデータには、そのロールの ID と権限が含まれます。メタデータを表示するには、Cloud コンソールまたは IAM API を使用します。
[ROLE_NAME]
はロール(roles/viewer
や roles/editor
など)に置き換えます。roles/viewer の出力例:
特定のリソースに適用できるすべてのロールのリストを返すには、gcloud iam list-grantable-roles
コマンドを使用します。
gcloud
コマンドを実行して、プロジェクトから付与できるロールを一覧表示します。出力は次のようになります。
カスタムロールを作成するには、呼び出し元に iam.roles.create
権限が必要です。デフォルトでは、プロジェクトや組織のオーナーがこの権限を持ち、カスタムロールを作成して管理できます。
オーナー以外のユーザー(組織の管理者など)には、「組織のロールの管理者」または「IAM ロールの管理者」のロールのいずれかを割り当てる必要があります。
新しいカスタムロールを次の 2 つの方法で作成するには、gcloud iam roles create
コマンドを使用します。
カスタムロールを作成する際には、--organization [ORGANIZATION-ID]
フラグまたは --project [PROJECT-ID]
フラグを使用して、組織レベルまたはプロジェクト レベルのどちらに適用するかを指定する必要があります。下の各例では、プロジェクト レベルでカスタムロールを作成します。
次のセクションでは、プロジェクト レベルでカスタムロールを作成します。
カスタムロール定義が含まれる YAML ファイルを作成します。このファイルは次のような構造にする必要があります。
各プレースホルダ値の詳細は、以下のとおりです。
[ROLE-TITLE]
はロールのわかりやすいタイトルです。例: Role Viewer。[ROLE_DESCRIPTION]
は、ロールについての短い説明です。例: My custom role description。[LAUNCH-STAGE]
はリリースのライフサイクルにおけるロールの段階を示します。例: ALPHA、BETA、GA。[includedPermissions]
はカスタムロールに含める権限(複数可)のリストを指定します。例: iam.roles.get。次に、CTRL+X、Y、ENTER の順にキーを押してファイルを保存して閉じます。
次の gcloud
コマンドを実行します。
ロールが正常に作成された場合、次のレスポンスが返されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
次に、フラグを使用する方法で新しいカスタムロールを作成します。フラグは YAML ファイルと同様の形式なので、コマンドの構築は確認できます。
gcloud
コマンドを実行し、新しいロールを作成します。出力例:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
gcloud
コマンドを実行してカスタムロールを一覧表示します。出力例:
削除されたロールを一覧表示するには、--show-deleted
フラグを使用することもできます。
gcloud
コマンドを実行します。カスタムロールなどのリソースのメタデータの更新では、一般にリソースの現在の状態の読み取り、ローカルでのデータの更新、変更されたデータの送信と書き込みが行われます。このような処理では、2 つ以上の独立したプロセスが一連の操作を同時に試行する場合に競合が発生することがあります。
たとえば、プロジェクトの 2 人のオーナーが、1 つのロールに対して相反する変更を同時に行うと、一部の変更が失敗する可能性があります。
Cloud IAM では、カスタムロールの etag
プロパティを使用してこの問題を解決します。このプロパティは、カスタムロールが最後のリクエスト以降に変更されているかどうかを確認するために使用されます。etag 値を使用して Cloud IAM にリクエストを出すと、Cloud IAM はリクエスト内の etag 値と、カスタムロールに関連付けられている既存の etag 値を比較します。etag 値が一致した場合にのみ変更が書き込まれます。
次の 2 通りの方法で新しいカスタムロールを更新するには、gcloud iam roles update
コマンドを使用します。
カスタムロールを更新する際には、--organization [ORGANIZATION-ID]
フラグまたは --project [PROJECT-ID]
フラグを使用して、組織レベルまたはプロジェクト レベルのどちらに適用するかを指定する必要があります。下の各例では、プロジェクト レベルでカスタムロールを作成します。
describe
コマンドはロールの定義を返し、その定義にはロールの現在のバージョンを一意に特定する etag 値が含まれます。ロールの同時変更が上書きされないように、更新されたロール定義に etag 値を指定する必要があります。
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 ロールに権限を追加します。ロールが正常に更新された場合、次のレスポンスが返されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
ロールを無効にすると、そのロールに関連するポリシー バインディングはすべて無効になります。つまり、ユーザーにロールを付与しても、そのロールの権限は付与されません。
既存のカスタムロールを無効にする最も簡単な方法は、--stage
フラグを使用してロールを DISABLED に設定する方法です。
gcloud
コマンドを実行して viewer ロールを無効にします。ロールが正常に更新された場合、次のレスポンスが返されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
gcloud iam roles delete
コマンドを使用します。削除されたロールは無効になり、新しい IAM ポリシー バインディングの作成に使用できなくなります。出力例:
ロールが削除された後、既存のバインディングは残りますが無効になります。7 日以内であれば、ロールの削除を取り消すことができます。7 日間後にロールの完全削除プロセスが開始され、そのプロセスが 30 日間続きます。37 日後に、ロール ID は再び使用可能になります。
--stage
フラグを更新します。[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このラボでは、IAM でカスタムロールを作成し、管理しました。
IAM の詳細については、IAM の記事 Cloud Identity and Access Management をご覧ください。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 4 月 15 日
ラボの最終テスト日: 2023 年 7 月 13 日
Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
One lab at a time
Confirm to end all existing labs and start this one