
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Initialize Google Cloud SDK
/ 10
Create an instance with name as lab-1 in Project 1
/ 5
Update the default zone
/ 5
Create a configuration for Username 2 and name it as user2
/ 10
Restricting Username 2 to roles/viewer in Project 2
/ 5
Create a new role with permissions for the devops team
/ 10
Check binding to roles/iam.serviceAccountUser
/ 5
Bound Username 2 to devops role
/ 10
Create an instance with name as lab-2 in Project 2
/ 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
クラウドの専門家がクラウド環境をセットアップする際の最も基本的な懸念事項の一つは、最小権限の原則に従ってリソースへのアクセスをどのように構成するかという点です。主な課題は次のとおりです。
このラボでは、Google Cloud における Identity and Access Management(IAM)の基礎について詳しく見ていきます。最小権限の原則を遵守しながら、クラウド リソースへのアクセスを戦略的に構成する方法を学びます。コマンドライン ツールを使用したユーザー権限の管理、必要なアクセス権のみの付与、アプリケーションとサービスに対する安全な認証メカニズムの設定について、重点的に説明します。
Azure IAM に精通している場合は、このラボでこれらのコンセプトを Google Cloud 環境に置き換えて理解することができます。ロールと権限に対する Google Cloud IAM 独自のアプローチについて学びます。このラボでは、gcloud コマンドライン ツールを使用した実際の操作のうち、ツールのインストール、IAM の構成、複数の構成とサービス アカウントの管理を中心として行います。
このラボでは、次の方法について学びます。
gcloud
クライアントをインストールして構成する2 つのユーザー アカウントと 2 つのプロジェクトを使用して作業を開始します。user1
は両方のプロジェクトの「owner」、user2
は最初のプロジェクトのみの「viewer」です。最初のプロジェクトでは、Linux 仮想マシン(vm)が実行されています。
Google Cloud では、Cloud Identity and Access Management(IAM)を利用できます。誰(ID)がどのリソースにどのようなアクセスが可能か(ロール)を定義することで、アクセス制御を管理できます。
Cloud IAM を使用すると、特定の Google Cloud リソースへのアクセス権をきめ細かく付与し、その他のリソースへの不正なアクセスを防ぐことができます。Cloud IAM では最小権限のセキュリティ原則を導入して、リソースに対する必要なアクセス権のみを付与できます。
Cloud IAM では、メンバーに対してアクセス権を付与します。メンバーには次のタイプがあります。
これらの ID タイプの詳細については、ID に関するコンセプトのガイドをご覧ください。
このラボでは、Google アカウント、サービス アカウント、Cloud Identity ドメイン グループを使用します。
ロールとは、一連の権限のことです。ユーザーには権限を直接割り当てるのではなく、ロールを付与します。ロールをユーザーに付与すると、そのロールに含まれているすべての権限がユーザーに付与されます。
Cloud IAM には、次の 3 種類のロールがあります。
基本ロール: Cloud コンソールで以前から使用されているロールは引き続き使用できます。基本ロールには、オーナー、編集者、閲覧者のロールがあります。
事前定義済みのロール: 基本のロールより詳細なアクセス制御が可能な Cloud IAM のロールです。たとえば、事前定義済みのロール Pub/Sub パブリッシャー(roles/pubsub.publisher)は、単に Cloud Pub/Sub トピックにメッセージをパブリッシュするだけのアクセス権を提供します。
カスタムロール: 事前定義ロールがニーズを満たしていない場合に、組織のニーズに応じて権限を調整するために作成するロールです。
ロールの詳細については、ロールのガイドをご覧ください。
gcloud CLI は Cloud SDK の一部です。gcloud コマンドライン ツールを使用するには、システムに SDK をダウンロードしてインストールし、初期化する必要があります。このツールを使用すると、コマンドラインからだけでなく、スクリプトやその他の自動化機能からも、多くの一般的なプラットフォーム タスクを実行できます。
デフォルトでは、リリースレベルが一般提供とプレビューの gcloud CLI コマンドのみがインストールされます。その他の機能は、SDK コンポーネントの alpha と beta で利用できます。これらのコンポーネントを使用すると、一般提供前のリリースレベルで、Cloud Bigtable、Google Cloud Dataflow、Cloud Platform の他の機能を gcloud CLI を使用して操作できるようになります。
gcloud の詳細については、gcloud CLI の概要のガイドをご覧ください。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
最初に、既存の Google Cloud コンピューティング インスタンスに接続し、gcloud SDK をダウンロードおよびインストールし、構成します。
gcloud SDK には、環境の管理を可能にするユーティリティが多数用意されています。まず、ユーティリティにアクションを実行する権限を付与するために認証を構成します。認証プロセスは、使用する ID によって異なります。この例では、ラボで提供された ID(ユーザー アカウント)を使用します。認証が完了したら、環境を構成して、操作するプロジェクトを定義する必要があります。
Cloud SDK ツールの承認について詳しくは、gcloud CLI を承認するをご覧ください。
このラボには、centos-clean という Compute Engine インスタンスがすでに設定されており、gcloud
がインストールされている環境をシミュレートするようになっています。Cloud コンソールを使用してこのインスタンスに接続します。
ナビゲーション メニュー > [Compute Engine] > [VM インスタンス] に移動して、コンピューティング インスタンスのリストを開きます。
centos-clean という名前のコンピューティング インスタンスがある行で、[SSH] をクリックします。
gcloud
がまだインストールされていない場合は、まず確認します。SSH セッション内で、以下を実行します。gcloud
環境の構成を開始します。SSH セッション内で、以下を実行します。さまざまなプロンプトが表示されます。
[You must log in to continue.] と [Do you want to continue (Y/n)?] が表示されたら、Enter キーを押します。
新しいタブで、プロンプト [Go to the following link in your browser:] の下のリンクに移動します。
このラボの認証情報を使用して、gcloud
環境を認証します。通常は、Compute Engine インスタンスを使用する場合はサービス アカウントを使用します。ここでは自分のワークステーション環境をシミュレートしているため、この提案は無視して続行します。サービス アカウントの使用については、このラボの後半で説明します。
リンクをクリックすると、[Google アカウントでログイン] ウェブページが開きます。このラボ用に提供されたアカウントをクリックします(不明な場合は、このページの左上を確認してください)。
[許可] をクリックします。
これで、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:] と表示されたら、リストで現在のプロジェクト(ウェブコンソールの最上部にプロジェクト ID が表示されます)を見つけ、プロジェクトの番号を入力して、オプションのリストから選択します。
初期化が完了し、ゾーンとリージョンが設定されます。次のタスクで両方を変更します。
一部の Compute Engine リソースは、リージョン内やゾーン内に存在します。リージョンとは、リソースを実行できる特定の地理的なロケーションです。1 つのリージョンには 1 つ以上のゾーンがあります。
Cloud Shell で次の gcloud コマンドを実行して、ラボのデフォルトのリージョンとゾーンを設定します。
gcloud
コマンドライン ツールをインストールして基本的な構成を済ませたら、コンピューティング インスタンスを作成して、いくつか変更を加えます。
ですが、サイズはどのくらいで、どこに作成され、どのような画像を使用するのでしょうか。
サービスが使用するデフォルトは数多くあります。一部は、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
とします。
構成はテキストとして保存されているだけなので、バックアップやコピーが可能です。
これで、gcloud
の構成が完了しました。
現在設定されているアカウントは 1 つです。さまざまなチームでの業務やさまざまなアカウントへのアクセスが必要になる状況では、gcloud config
でそうした状況を管理することもできます。
次のタスクでは、構成をもう一つ作成し、両方の構成を切り替える方法を学びます。
このラボでは、ログオンに使用できる Google アカウントをもう一つ作成します。このアカウントは、読み取り専用(viewer)で最初のプロジェクトにアクセスできます。そのユーザー用に新しい構成を作成します。
gcloud
構成を開始します。SSH セッション内で、以下を実行します。オプション 2 の [Create a new configuration] を選択します。
構成名として「user2」と入力します。
新しいアカウントでログインします。オプション 3 を選択して、指定されたもう一方のユーザー名でログインします。
[Do you want to continue (Y/n)?] プロンプトが表示されたら、Enter キーを押します。
新しいタブに表示されているリンクに移動します。
[Use another account] をクリックします。
このページ(左側)から 2 つ目のユーザー アカウントをコピーして、[email or phone] プロンプトに貼り付けます。
ラボを起動したのと同じパスワードをコピーして、[enter your password] プロンプトに貼り付けます。
[理解しました] をクリックします。
[許可] をクリックします。
これで、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:] では、現在のプロジェクト(ウェブコンソールの最上部にプロジェクト ID が表示されています)を特定し、そのプロジェクトに対応する番号を入力します。
初期化が完了し、ゾーンとリージョンが設定されます。
この新しいアカウントにはプロジェクトに対する 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
に戻りました。
bashrc
ファイルを追加するため、十分に留意してください。WARNING: You do not appear to have access to project [your 2nd project id] or it does not exist.
という警告が返されます。
N
」と入力して Enter キーを押します。つまり、PROJECTID2 プロジェクトへのアクセス権がありません。この点については、この後修正します。
2 人目のユーザーにアクセスを許可する権限を持つ 1 人目のユーザーに切り替える必要があります。
次に、2 人目のユーザー名に USERID2
という値を設定し、2 つ目のプロジェクトの 2 人目のユーザーに viewer のロールをバインドします。
まず、jq
をインストールします。
コマンドを実行すると、次のようなテキストが表示されます(上にスクロールすることが必要になる場合があります)。
今回はエラー メッセージが表示されないはずです。
このプロジェクトではインスタンスが 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
)を使用して、gcloud クライアントのインストールと構成、複数の IAM 構成の管理、適切な IAM 権限の割り当て、サービス アカウントの操作を完了しました。これらのタスクは、アクセス制御にコマンドライン ツールを使用する場合の Google Cloud IAM と Azure IAM の類似点を示すものです。どちらのインターフェースでも、アカウント / ロールのプロビジョニング、サービス アカウント / ロールの作成、ユーザーの切り替えを行うことができます。
ロールベース アクセス制御(RBAC)に関して、Azure IAM と Google Cloud IAM には類似点がありますが、違いもあります。ラボで確認した主な違いの一つは、サービス アカウントの作成プロセスです。Google Cloud では、アカウントを登録したり、サービス プリンシパル名を作成したりしません。Google Cloud のプロジェクトは、Azure のテナントのように機能します。gcloud コマンドライン ツールを使用して、複数のプロジェクトにわたってアカウントをプロビジョニングしました。これは、Azure CLI を使用して複数のテナントにわたってアクセスをプロビジョニングする方法と似ています。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 7 月 4 日
ラボの最終テスト日: 2024 年 7 月 4 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください