概要
このラボでは、2 つの nginx ウェブサーバーを作成し、タグ付きのファイアウォール ルールを使用して、ウェブサーバーへの外部 HTTP アクセスを制御します。そして IAM のロールとサービス アカウントについて確認します。
目標
このラボでは、次のタスクの実行方法について学びます。
- nginx ウェブサーバーを作成する
- タグ付きのファイアウォール ルールを作成する
- IAM ロールでサービス アカウントを作成する
- ネットワーク管理者とセキュリティ管理者のロールの権限を確認する
設定と要件
各ラボでは、新しい Google Cloud プロジェクトとリソースセットを一定時間無料で利用できます。
-
Qwiklabs にシークレット ウィンドウでログインします。
-
ラボのアクセス時間(例: 1:15:00)に注意し、時間内に完了できるようにしてください。
一時停止機能はありません。必要な場合はやり直せますが、最初からになります。
-
準備ができたら、[ラボを開始] をクリックします。
-
ラボの認証情報(ユーザー名とパスワード)をメモしておきます。この情報は、Google Cloud Console にログインする際に使用します。
-
[Google Console を開く] をクリックします。
-
[別のアカウントを使用] をクリックし、このラボの認証情報をコピーしてプロンプトに貼り付けます。
他の認証情報を使用すると、エラーが発生したり、料金の請求が発生したりします。
-
利用規約に同意し、再設定用のリソースページをスキップします。
タスク 1. ウェブサーバーを作成する
default VPC ネットワーク内に 2 つのウェブサーバー(blue と green)を作成します。次に、ウェブサーバー上に nginx をインストールし、2 つのサーバーを区別できるようにスタートページを変更します。
blue サーバーを作成する
ネットワーク タグを指定して blue サーバーを作成します。
-
Google Cloud コンソールのナビゲーション メニュー(
)で、[Compute Engine] > [VM インスタンス] の順にクリックします。
-
[インスタンスを作成] をクリックします。
-
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ |
値(値を入力するか、指定されたオプションを選択) |
| 名前 |
blue |
| リージョン |
|
| ゾーン |
|
-
[詳細オプション] をクリックします。
-
[ネットワーキング] をクリックします。
-
[ネットワーク タグ] に「web-server」と入力します。
注: ネットワーク タグは、特定のファイアウォール ルールとネットワーク ルートが適用される VM インスタンスの識別に使用されます。次のタスクで、web-server タグが付いた VM インスタンスに HTTP アクセスを許可するファイアウォール ルールを作成します。
あるいは、[HTTP トラフィックを許可する] チェックボックスをオンにすることもできます。この場合、このインスタンスに http-server のタグが付けられ、「tcp:80」のタグ付きファイアウォール ルールが自動的に作成されます。
- [作成] をクリックします。
green サーバーを作成する
ネットワーク タグを指定せずに green サーバーを作成します。
-
[インスタンスを作成] をクリックします。
-
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ |
値(値を入力するか、指定されたオプションを選択) |
| 名前 |
green |
| リージョン |
|
| ゾーン |
|
-
[作成] をクリックします。
nginx をインストールしてスタートページをカスタマイズする
nginx を両方の VM インスタンスにインストールし、2 つのサーバーを区別できるようにスタートページを変更します。
-
blue の [SSH] をクリックし、ターミナルを起動して接続します。
- 次のコマンドを実行して、nginx をインストールします。
sudo apt-get install nginx-light -y
- 次のコマンドを実行して、nano エディタでスタートページを開きます。
sudo nano /var/www/html/index.nginx-debian.html
-
<h1>Welcome to nginx!</h1> 行を <h1>Welcome to the blue server!</h1> に置き換えます。
-
Ctrl+O、Enter、Ctrl+X キーの順に押します。
- 次のコマンドを実行して、変更を確認します。
cat /var/www/html/index.nginx-debian.html
出力に次の内容が含まれているはずです。
...
<h1>Welcome to the blue server!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
...
-
blue の SSH ターミナルを閉じます。
exit
green サーバーにも同じ手順を繰り返します。
-
green で [SSH] をクリックし、ターミナルを起動して接続します。
- 次のコマンドを実行して、nginx をインストールします。
sudo apt-get install nginx-light -y
- 次のコマンドを実行して、nano エディタでスタートページを開きます。
sudo nano /var/www/html/index.nginx-debian.html
-
<h1>Welcome to nginx!</h1> 行を <h1>Welcome to the green server!</h1> に置き換えます。
-
Ctrl+O、Enter、Ctrl+X キーの順に押します。
- 次のコマンドを実行して、変更を確認します。
cat /var/www/html/index.nginx-debian.html
出力に次の内容が含まれているはずです。
...
<h1>Welcome to the green server!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
...
-
green の SSH ターミナルを閉じます。
exit
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
ウェブサーバーを作成する
タスク 2. ファイアウォール ルールを作成する
タグ付きのファイアウォール ルールを作成して、HTTP 接続をテストします。
タグ付きのファイアウォール ルールを作成する
web-server ネットワーク タグが付いた VM インスタンスに適用されるファイアウォール ルールを作成します。
- Cloud Console のナビゲーション メニューで、[VPC ネットワーク] > [ファイアウォール] をクリックします。
-
default-allow-internal ファイアウォール ルールが存在しています。
注: default-allow-internal ファイアウォール ルールは、default ネットワーク内のすべてのプロトコルまたはポートへのトラフィックを許可します。ネットワーク タグ web-server を使用して、このネットワークの外部から blue サーバーへのトラフィックのみを許可するファイアウォール ルールを作成します。
-
[ファイアウォール ルールを作成] をクリックします。
-
次のように指定し、残りの設定はデフォルトのままにします。
| プロパティ |
値(値を入力するか、指定されたオプションを選択) |
| 名前 |
allow-http-web-server |
| ネットワーク |
default |
| ターゲット |
指定されたターゲットタグ |
| ターゲットタグ |
web-server |
| ソースフィルタ |
IPv4 範囲 |
| 送信元 IPv4 範囲 |
0.0.0.0/0 |
| プロトコルとポート |
指定したプロトコルとポート |
-
[tcp] にポート 80 を指定します。
注: すべてのネットワークを指定するために、[送信元 IPv4 範囲] には /0 を含めます。
- [作成] をクリックします。
test-vm を作成する
gcloud コマンドラインを使用して test-vm インスタンスを作成します。
- Google Cloud コンソールで、Cloud Shell をアクティブにするアイコン(
)をクリックします。
- プロンプトが表示されたら、[続行] をクリックします。
- 次のコマンドを実行して test-vm インスタンスを作成します。
gcloud compute instances create test-vm --machine-type=e2-medium --subnet=default --zone={{{ project_0.default_zone | "filled at lab start" }}}
出力は次のようになります(ゾーンは異なる場合があります)。
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
test-vm us-central1-a e2-medium 10.142.0.4 35.237.134.68 RUNNING
注: VM インスタンスは、Cloud コンソールまたは gcloud コマンドラインから簡単に作成できます。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
ファイアウォール ルールとインスタンスを作成する
HTTP 接続をテストする
test-vm から、blue と green の内部 IP アドレスと外部 IP アドレスに対して curl コマンドを実行します。
- Cloud Console のナビゲーション メニューで、[Compute Engine] > [VM インスタンス] の順にクリックします。
blue と green の内部 IP アドレスと外部 IP アドレスを確認します。
-
test-vm で [SSH] をクリックし、ターミナルを起動して接続します。
-
blue の内部 IP アドレスへの HTTP 接続をテストするために、blue の内部 IP を入力して次のコマンドを実行します。
curl <blue の内部 IP をこちらに入力>
Welcome to the blue server! ヘッダーが表示されます。
-
green の内部 IP アドレスへの HTTP 接続をテストするために、green の内部 IP を入力して次のコマンドを実行します。
curl <green の内部 IP をこちらに入力>
Welcome to the green server! ヘッダーが表示されます。
注: 内部 IP アドレスを使用して両方のサーバーに HTTP アクセスすることができました。test-vm はウェブサーバーと同じ VPC ネットワーク(default ネットワーク)上にあるため、「tcp:80」の接続は default-allow-internal ファイアウォール ルールによって許可されます。
-
blue の外部 IP アドレスへの HTTP 接続をテストするために、blue の外部 IP を入力して次のコマンドを実行します。
curl <blue の外部 IP をこちらに入力>
Welcome to the blue server! ヘッダーが表示されます。
-
green の外部 IP アドレスへの HTTP 接続をテストするために、green の外部 IP を入力して次のコマンドを実行します。
curl <green の外部 IP をこちらに入力>
注: これは正常に完了しません。
-
Ctrl+C キーを押して HTTP リクエストを停止します。
注: allow-http-web-server は web-server タグが付いた VM インスタンスにのみ適用されるため、外部 IP アドレスに HTTP アクセスできるのは想定どおり blue サーバーのみです。
- ブラウザから同じ動作を確認するには、新しいタブを開いて
http://[サーバーの外部 IP] にアクセスします。
タスク 3. ネットワーク管理者とセキュリティ管理者のロールについて調べる
Cloud IAM を使用すると、特定のリソースに対するアクションの実行を、承認を受けたユーザーのみに許可できます。これはクラウドのリソースを集約して可視化し、管理するうえで役立ちます。次のロールは、単一プロジェクト ネットワーキングと組み合わせて使用され、各 VPC ネットワークへの管理者権限を個別に制御します。
-
ネットワーク管理者: ネットワーキング リソース(ファイアウォール ルールと SSL 証明書を除く)を作成、変更、削除するための権限。
-
セキュリティ管理者: ファイアウォール ルールと SSL 証明書を作成、変更、削除するための権限。
これらのロールをサービス アカウントに適用することでロールについて確認していきます。サービス アカウントは、個々のエンドユーザーではなく VM インスタンスに属する特別な Google アカウントです。ユーザーを新たに作成せずに、サービス アカウントの利用を test-vm に許可して、ネットワーク管理者とセキュリティ管理者のロールの権限を確認します。
現在の権限を確認する
現在、test-vm では Compute Engine のデフォルトのサービス アカウントを使用しています。このアカウントは、gcloud コマンドライン ツールと Cloud Console で作成されるすべてのインスタンスで有効です。
test-vm で利用可能なファイアウォール ルールを表示または削除してみます。
-
test-vm インスタンスの SSH ターミナルに戻ります。
- 次のコマンドを実行して、利用可能なファイアウォール ルールのリストを取得してみます。
gcloud compute firewall-rules list
出力は次のようになります。
ERROR: (gcloud.compute.firewall-rules.list) Some requests did not succeed:
- Insufficient Permission
注: これは正常に完了しません。
- 次のコマンドを実行して、allow-http-web-server ファイアウォール ルールを削除してみます。
gcloud compute firewall-rules delete allow-http-web-server
- 続行するかどうかを尋ねられたら「Y」と入力します。
出力は次のようになります。
ERROR: (gcloud.compute.firewall-rules.delete) Could not fetch resource:
- Insufficient Permission
注: これは正常に完了しません。
注: Compute Engine のデフォルトのサービス アカウントには、ファイアウォール ルールのリスト取得または削除を行うための適切な権限がありません。これは適切なロールがない他のユーザーにも当てはまります。
サービス アカウントを作成する
サービス アカウントを作成してネットワーク管理者のロールを適用します。
- Cloud Console のナビゲーション メニュー(
)で、[IAM と管理] > [サービス アカウント] の順にクリックします。
Compute Engine のデフォルトのサービス アカウントが表示されます。
- [サービス アカウントを作成] をクリックします。
- [サービス アカウント名] に「Network-admin」と入力します。
- [作成して続行] をクリックします。
- [ロールを選択] で、[Compute Engine] > [Compute ネットワーク管理者] を選択します。
- [続行] をクリックします。
- [完了] をクリックします。
注: ここで、秘密鍵を含むファイルを作成してダウンロードすることもできますが、今回は、このまま test-vm を停止して、このサービス アカウントの使用を許可します。
test-vm に許可を与える
Network-admin サービス アカウントを使用できるよう test-vm に許可を与えます。
-
ナビゲーション メニューで、[Compute Engine] > [VM インスタンス] の順にクリックします。
-
test-vm インスタンスの名前をクリックして、[VM インスタンスの詳細] ページを開きます。
- [停止] をクリックし、インスタンスを停止することを確認します。インスタンスが停止するまで次のステップに進まないでください。
注: インスタンスが停止していないとサービス アカウントを編集できません。
-
インスタンスが停止したら、[編集] をクリックします。
-
[サービス アカウント] で [Network-admin] を選択します。
-
[アクセス スコープ] で [API ごとにアクセス権を設定] を選択し、[Compute Engine] プルダウンで [読み取り / 書き込み] オプションを選択します。
-
[保存] をクリックし、インスタンスが更新されるまで待ちます。
-
[開始 / 再開] をクリックし、インスタンスを起動することを確認します。
-
[VM インスタンス] ページに戻り、test-vm のステータスが実行中に変わるまで待ちます。
-
test-vm インスタンスの [SSH] をクリックします。
権限を確認する
- 次のコマンドを実行して、利用可能なファイアウォール ルールのリストを取得してみます。
gcloud compute firewall-rules list
出力は次のようになります。
NAME NETWORK DIRECTION PRIORITY ALLOW DENY
allow-http-web-server default INGRESS 1000 tcp:80
default-allow-icmp default INGRESS 65534 icmp
default-allow-internal default INGRESS 65534 all
default-allow-rdp default INGRESS 65534 tcp:3389
default-allow-ssh default INGRESS 65534 tcp:22
コマンドは正常に完了します。
- 次のコマンドを実行して、allow-http-web-server ファイアウォール ルールを削除してみます。
gcloud compute firewall-rules delete allow-http-web-server
- 続行するかどうかを尋ねられたら「Y」と入力します。
出力は次のようになります。
ERROR: (gcloud.compute.firewall-rules.delete) Could not fetch resource:
- Required 'compute.firewalls.delete' permission for 'projects/[PROJECT_ID]/global/firewalls/allow-http-web-server'
注: これは正常に完了しません。
注: 想定したとおり、ネットワーク管理者のロールでは、ファイアウォール ルールのリスト取得は可能ですが、変更や削除はできません。
サービス アカウントを更新して権限を確認する
Network-admin サービス アカウントにセキュリティ管理者のロールを指定してアカウントを更新します。
- Cloud Console のナビゲーション メニュー(
)で、[IAM と管理] > [IAM] の順にクリックします。
-
Network-admin アカウントを見つけます。このアカウントは [名前] 列で特定します。
-
Network-admin アカウントの鉛筆アイコンをクリックします。
- [ロール] を [Compute Engine] > [Compute セキュリティ管理者] に変更します。
- [保存] をクリックします。
-
test-vm インスタンスの SSH ターミナルに戻ります。
- 次のコマンドを実行して、利用可能なファイアウォール ルールのリストを取得してみます。
gcloud compute firewall-rules list
出力は次のようになります。
NAME NETWORK DIRECTION PRIORITY ALLOW DENY
allow-http-web-server default INGRESS 1000 tcp:80
default-allow-icmp default INGRESS 65534 icmp
default-allow-internal default INGRESS 65534 all
default-allow-rdp default INGRESS 65534 tcp:3389
default-allow-ssh default INGRESS 65534 tcp:22
コマンドは正常に完了します。
- 次のコマンドを実行して、allow-http-web-server ファイアウォール ルールを削除してみます。
gcloud compute firewall-rules delete allow-http-web-server
- 続行するかどうかを尋ねられたら「Y」と入力します。
出力は次のようになります。
Deleted [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-00e186e4b1cec086/global/firewalls/allow-http-web-server].
コマンドは正常に完了します。
注: 想定したとおり、セキュリティ管理者のロールでは、ファイアウォール ルールのリスト取得と削除が可能です。
ファイアウォール ルールの削除を確認する
allow-http-web-server ファイアウォール ルールを削除したので、blue サーバーの外部 IP に HTTP アクセスできなくなったことを確認します。
-
test-vm インスタンスの SSH ターミナルに戻ります。
-
blue の外部 IP アドレスへの HTTP 接続をテストするために、blue の外部 IP を入力して次のコマンドを実行します。
curl <blue の外部 IP をこちらに入力>
注: これは正常に完了しません。
-
Ctrl+C キーを押して HTTP リクエストを停止します。
注: ファイアウォール ルールに不要な変更が行われないように、セキュリティ管理者のロールは適切なユーザーやサービス アカウントに指定してください。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
ネットワーク管理者とセキュリティ管理者のロールについて調べる
タスク 4. まとめ
このラボでは、2 つの nginx ウェブサーバーを作成し、タグ付きのファイアウォール ルールを使用して外部 HTTP アクセスを制御しました。そして先にネットワーク管理者のロール、次にセキュリティ管理者のロールを持つサービス アカウントを作成して、これらのロールのそれぞれの権限を確認しました。
ファイアウォールと SSL 証明書を管理するセキュリティ チームと、その他のネットワーキング リソースを管理するネットワーキング チームが社内にいる場合は、セキュリティ チームにセキュリティ管理者のロール、ネットワーキング チームにネットワーク管理者のロールを付与します。
ラボを終了する
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。