
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create an instance with name as lab-1 in Project 1
/ 10
Update the default zone
/ 10
Create a configuration for Username 2 and name it as user2
/ 10
Restricting Username 2 to roles/viewer in Project 2
/ 10
Create a new role with permissions for the devops team
/ 10
Check binding to roles/iam.serviceAccountUser
/ 5
Bound Username 2 to devops role
/ 5
Create an instance with name as lab-2 in Project 1
/ 5
Check the created service account
/ 5
Check the binding for the service account to roles/iam.serviceAccountUser
/ 10
Check the binding for the service account to roles/compute.instanceAdmin
/ 10
Check lab-3 has the service account attached
/ 10
このラボでは、IAM と gcloud を理解できるように、以下の一般的な 3 つの領域を見ていきます。
このラボでは、CLI ツールの gcloud
を使用して、Cloud Identity and Access Management(IAM)のコマンド機能を設定および構成します。
このラボでは、次のことを行います。
gcloud
クライアントを使用する2 つのユーザー アカウントと 2 つのプロジェクトを使用して作業を開始します。
user1
は両方のプロジェクトの「owner」user2
は最初のプロジェクトのみの「viewer」最初のプロジェクトでは、Linux 仮想マシン(vm)が実行されています。
Google Cloud では、Cloud Identity and Access Management(IAM)を利用できます。誰(ID)がどのリソースにどのようなアクセスが可能か(ロール)を定義することで、アクセス制御を管理できます。
IAM では、リソースに対するアクセス権を直接エンドユーザーに付与することはありません。複数の権限をロールにまとめて、認証されたプリンシパルに付与します。これまで、IAM ではプリンシパルをメンバーと呼んでいました。一部の API では、まだこの用語が使用されています。
Cloud IAM では、プリンシパルに対してアクセス権を付与します。プリンシパルには次のタイプがあります。
これらの ID タイプの詳細については、ID に関するコンセプトのガイドをご覧ください。
このラボでは、Google アカウント、サービス アカウント、Cloud Identity ドメイン グループを使用します。
ロールとは、一連の権限のことです。ユーザーには権限を直接割り当てるのではなく、ロールを付与します。ロールをユーザーに付与すると、そのロールに含まれているすべての権限がユーザーに付与されます。
ロールの詳細については、ロールのガイドをご覧ください。
gcloud CLI は Cloud SDK の一部です。gcloud コマンドライン ツールを使用するには、システムに SDK をダウンロードしてインストールし、初期化する必要があります。このツールを使用すると、コマンドラインからだけでなく、スクリプトやその他の自動化機能からも、多くの一般的なプラットフォーム タスクを実行できます。
gcloud の詳細については、gcloud CLI の概要のガイドをご覧ください。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
このラボには、centos-clean という Compute Engine インスタンスがすでに設定され、gcloud
がまだインストールされていない環境をシミュレートするようになっています。Google Cloud コンソールを使用してこのインスタンスに接続します。
ナビゲーション メニュー > [Compute Engine] > [VM インスタンス] に移動して、コンピューティング インスタンスのリストを開きます。
centos-clean という名前のコンピューティング インスタンスがある行で、[SSH] をクリックします。
gcloud
が正常にインストールされたことを確認します。SSH セッション内で、以下を実行します。gcloud
コマンドライン ツールがインストールされていることを確認したら、コンピューティング インスタンスを作成して、いくつか変更を加えます。
[Do you want to continue (Y/n)?] プロンプトが表示されたら、Eenter キーを押します。
新しいタブに表示されているリンクに移動します。
アクティブなユーザー名(
[Enter the following verification code in gcloud CLI on the machine you want to log into] プロンプトが表示されたら、コピーボタンをクリックして SSH セッションに戻り、コピーしたコードを [Enter authorization code:] プロンプトに貼り付けます。
SSH セッションで、リージョンとゾーンを設定します。
すべてを正しく設定すれば、インスタンスが作成されます。
ですが、サイズはどのくらいで、どこに作成され、どのようなイメージが使用されているのでしょうか。
サービスが使用するデフォルトは数多くあります。一部は、gcloud
構成で制御できます。たとえば、インスタンスのロケーションはゾーン設定で制御します。
compute
セクション、core
セクション、active configuration
が表示されるようになります。これらはそれぞれ変更できますが、このラボではゾーンのみを変更します。VM が作成されたゾーンを確認してください。
自分と同じリージョンにある他のゾーンを 1 つ特定します。たとえば、現在のゾーンが us-west2-a
であれば、us-west2-b
を選択できます。
現在のゾーンを同じリージョンの別のゾーンに変更します。SSH セッション内で以下を実行し、ZONE
をその選択したゾーンに置き換えます。
指定した変更が指定したゾーンに反映されます。
gcloud config set
コマンドを使用して、他の設定を変更できます。こうした変更は永続的です。つまり、ホーム ディレクトリに書き込まれます。
デフォルトの構成は、~/.config/gcloud/configurations/config_default に保存されます。
インスタンスを作成するときにデフォルト以外のゾーンを使用する場合は、--zone switch を使用できます。たとえば、gcloud compute instances create lab-1 --zone us-central1-f
とします。
構成はテキストとして保存されているだけなので、バックアップやコピーが可能です。
現在設定されているアカウントは 1 つです。さまざまなチームでの業務やさまざまなアカウントへのアクセスが必要になる状況では、gcloud config
でそうした状況を管理することもできます。
次のタスクでは、構成をもう一つ作成し、両方の構成を切り替える方法を学びます。
このラボでは、ログオンに使用できる Google アカウントをもう一つ作成します。このアカウントは、読み取り専用(viewer)で最初のプロジェクトにアクセスできます。そのユーザー用に新しい構成を作成します。
gcloud
構成を開始します。SSH セッション内で、以下を実行します。オプション 2 の [Create a new configuration] を選択します。
構成名として「user2」と入力します。
新しいアカウントでログインします。オプション 3 を選択して、指定されたもう一方のユーザー名でログインします。
[Do you want to continue (Y/n)?] プロンプトが表示されたら、Eenter キーを押します。
新しいタブに表示されているリンクに移動します。
[Use another account] をクリックします。
2 つ目のユーザー アカウント(
ラボを起動したのと同じパスワードをコピーして、[enter your password] プロンプトに貼り付けます。
[I understand] をクリックします。
[Allow] をクリックします。
これで、Cloud SDK に Google アカウントと同じアクセス権を付与することに同意したことになります。
[Enter the following verification code in gcloud CLI on the machine you want to log into] プロンプトが表示されたら、コピーボタンをクリックして SSH セッションに戻り、コピーしたコードを [Enter authorization code:] プロンプトに貼り付けます。
[Pick cloud project to use:] では、現在のプロジェクト(
初期化が完了し、ゾーンとリージョンが設定されます。
この新しいアカウントにはプロジェクトに対する viewer のみの権限が付与されているため、なんらかのリソースを表示し、作成を試みることで、このアカウントを本当に使用していることをテストできます。
2 つ目のユーザー アカウントには viewer 権限が付与されているため、centos-clean
インスタンスと lab-1
インスタンスがリストに表示されるはずです。
2 つ目のユーザー アカウントには viewer 権限のみが付与されているため、インスタンスの作成は許可されず、このコマンドは失敗します。失敗するまでに少し時間がかかります。
元のユーザー アカウント認証情報を使用している状態に戻ります。後で、ロールと権限について学習する際に、この 2 つのアカウントを切り替えることになります。
このプロジェクトでは 2 つのユーザー アカウントを使用します。最初のユーザーは、両方のプロジェクトを完全に制御できるので、管理者アカウントと考えることができます。2 人目のユーザーは、2 つのプロジェクトに対して viewer のみの権限を持っています。2 人目のユーザーを DevOps ユーザーと呼ぶことにします。そのユーザー ID は、一般的な DevOps レベルのユーザーを表します。
次に、gcloud
を使用して、DevOps ユーザー用に 1 つのプロジェクトへのアクセスを構成します。具体的には、そのプロジェクトに対して、バケットとインスタンスの作成を許可するカスタムロールを作成します。
ロールのリストが返されます。コマンドに grep "name:"
を追加すると、返されるデータがロール名だけになり、データ量が減ります。
返されたロールのいずれかを調べて、そのロールに割り当てられた権限を確認します。権限を表示するには、gcloud iam roles describe
を使用します。ここでは、roles/compute.instanceAdmin という簡単なロールを見てみてください。
compute.instanceAdmin
事前定義ロールを確認します。SSH セッション内で、以下を実行します。roles/compute.instanceAdmin には数多くの権限がありますが、後で少なくともこれらの権限が必要になります。
ロールの詳細なリストと割り当てられた権限をレビューするには、IAM 権限のリファレンスのガイドをご覧ください。
これで、ロールに権限が含まれていることを理解しました。では、ロール(および関連付けられているすべての権限)をユーザー アカウントに付与するにはどうすればよいでしょうか。
ロールをアタッチするには、次の 2 つの方法があります。
次は、「viewer」という基本ロールを 2 つ目のプロジェクトの 2 人目のユーザーにアタッチします。
gcloud
構成を 2 人目のユーザー(user2)に戻します。SSH セッション内で、以下を実行します。user2
に戻りました。
PROJECTID2
を設定します。SSH セッション内で、以下を実行します。bashrc
ファイルを追加するため、十分に留意してください。WARNING: You do not appear to have access to project [your 2nd project id] or it does not exist.
という警告が返されます。
つまり、user2 には PROJECTID2 プロジェクトへのアクセス権がありません。この点については、次のセクションで修正します。
jq
をインストールします。次に、2 人目のユーザー名に USERID2
という値を設定し、2 つ目のプロジェクトの 2 人目のユーザーに viewer のロールをバインドします。
コマンドを実行すると、次のようなテキストが表示されます(上にスクロールすることが必要になる場合があります)。
今回はエラー メッセージが表示されないはずです。
このプロジェクトではインスタンスが 0 個だと表示されます。
user2 にはこのプロジェクトに対して viewer 権限のみが付与されているため、このコマンドは失敗します。
元のユーザー アカウントの認証情報を使用している状態に戻ります。
次に、DevOps チームに必要な権限セットを付与した新しいロールを作成します。
devops
という名前で作成します。SSH セッション内で、以下を実行します。このコマンドは、インスタンスを作成および管理する権限があるカスタムロールを devops
という名前でプロジェクトに作成します。
ロールのフルネームはリストで確認できます。なお、ロールはプロジェクト内にあるため、パスが projects/PROJECT/roles/ROLENAME
というパターンになることに留意してください。
ロールを作成したので、次はプロジェクトにユーザーとロールをバインドする必要があります。gcloud projects add-iam-policy-binding
を使用して、バインドを実行します。このコマンドを簡単に実行できるように、まず、プロジェクト ID とユーザー アカウントの 2 つの環境変数を設定します。
iam.serviceAccountUser
というロールを 2 人目のユーザーにバインドします。SSH セッション内で、以下を実行します。アタッチされたサービス アカウントでインスタンスを作成できる権限が必要です。ロール iam.serviceAccountUser
にはその権限があるため、この事前定義ロールを使用します。
devops
を 2 人目のユーザーにバインドします。2 つ目のユーザー アカウントは、このページの左側で確認できます。2 つ目のユーザー アカウントに USERID を設定していることを確認してください。SSH セッション内で、以下を実行します。
コマンドを実行すると、次のようなテキストが表示されます(上にスクロールすることが必要になる場合があります)。
user2 に戻りました。
user2 のインスタンスが正常に作成されます。
この最後の変更の後、環境は以下のようになります。
ここまでは、gcloud
を認証して使用し、ロールに応じて Google Cloud サービスにアクセスする方法を見てきました。次は、一般的なアプローチを見ていきます。
アプリケーションからアプリケーション プログラミング インターフェース(API)を使用して、Cloud Storage バケットを読み書きできます。新しいサーバーを起動するたびに認証すると、手間がかかるうえ、クラウドを使用する意義が損なわれます。このため、サービス アカウントを使用します。
サービス アカウントは、個々のエンドユーザーではなく、アプリケーションや仮想マシン(VM)に属している特別な Google アカウントです。アプリケーションはサービス アカウントを使用してサービスの Google API を呼び出します。ユーザーは直接的には関与しません。
サービス アカウントの詳細については、サービス アカウントのガイドをご覧ください。
ここからは、サービス アカウントを作成してコンピューティング インスタンスで使用します。その後、必要なアクセスをそのサービス アカウントで許可できることを確認します。
user2
にはサービス アカウントを設定して構成する権限はありません。SSH セッション内で、以下を実行します。PROJECTID2
に設定します。SSH セッション内で、以下を実行します。適切なプロジェクトをターゲティングしていることを確認してください。
SA
というローカル変数に代入します。SSH セッション内で、以下を実行します。このコマンドは、SA ローカル変数をサービス アカウントのメールアドレスに設定するため、かなり便利です。
iam.serviceAccountUser
というロールを付与します。SSH セッション内で、以下を実行します。このロールが付与されたサービス アカウントでは、コンピューティング インスタンスにサービス アカウントを割り当てることができます。
compute.instanceAdmin
というロールを付与します。SSH セッション内で、以下を実行します。このロールが付与されたサービス アカウントでは、コンピューティング インスタンスを管理できます。
アクセス スコープは、インスタンスの権限を指定する従来からの方法です。アクセス スコープはセキュリティ メカニズムではなく、gcloud
ツールまたはクライアント ライブラリからのリクエストで使用されるデフォルトの OAuth スコープを定義します。これは、gRPC や SignBlob API など、OAuth を介して認証されないリクエストには影響しません。
サービス アカウントとして実行するインスタンスの構成時にアクセス スコープを設定する必要があります。
インスタンスに完全な cloud-platform アクセス スコープを設定し、サービス アカウントに IAM ロールを付与してサービス アカウントの API へのアクセス権を制限することがベスト プラクティスとなります。
アクセス スコープはインスタンス単位で適用されます。つまり、インスタンスを作成するときに設定し、インスタンスの存続する間だけ有効になります。
サービス アカウントが属するプロジェクトで関連 API が無効になっている場合、アクセス スコープは適用されません。たとえば、仮想マシン インスタンスに Cloud Storage のアクセス スコープを付与すると、インスタンスはプロジェクトで Cloud Storage API が有効になっている場合にのみ Cloud Storage API を呼び出すことができます。
gcloud compute ssh
を使用して、新規に作成したインスタンスに接続します。SSH セッション内で、以下を実行します。続行するかどうかを尋ねられたら、Enter キーを押します。
Enter キーを 2 回押して、パスワードの作成をスキップします。
gcloud
構成が含まれています。SSH セッション内で、以下を実行します。この構成でサービス アカウントが利用できるようになります。
Enter キーを押すと、この VM でデフォルトのゾーンが使用されます。
サービス アカウントに権限が付与されているため、インスタンスのリストが表示されます。
このラボでは、Cloud SDK ツール gcloud
を使用して以下のタスクを完了しました。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 4 月 10 日
ラボの最終テスト日: 2024 年 4 月 10 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください