arrow_back

VPC ネットワーク - アクセスの制御

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

VPC ネットワーク - アクセスの制御

Lab 1時間 universal_currency_alt クレジット: 5 show_chart 中級
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP213

Google Cloud セルフペース ラボ

概要

このラボでは、2 つの nginx ウェブサーバーを作成し、タグ付きのファイアウォール ルールを使用して、ウェブサーバーへの外部 HTTP アクセスを制御します。そして IAM のロールとサービス アカウントについて確認します。

目標

このラボでは、次のタスクの実行方法について学びます。

  • nginx ウェブサーバーを作成する
  • タグ付きのファイアウォール ルールを作成する
  • IAM ロールでサービス アカウントを作成する
  • ネットワーク管理者とセキュリティ管理者のロールの権限を確認する

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. ウェブサーバーを作成する

このセクションでは、デフォルトの VPC ネットワークに 2 台のウェブサーバー(bluegreen)を作成します。次に、ウェブサーバー上に nginx をインストールし、2 つのサーバーを区別できるようにスタートページを変更します。

blue サーバーを作成する

ネットワーク タグを指定して blue サーバーを作成します。

  1. コンソールで、ナビゲーション メニューナビゲーション メニュー アイコン)> [Compute Engine] > [VM インスタンス] に移動します。

  2. [インスタンスを作成] をクリックします。

  3. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 blue
    リージョン
    ゾーン

    使用可能なリージョンとゾーンについては、「Google Cloud Compute Engine のリージョンとゾーン」ガイドの「使用可能なリージョンとゾーン」のセクションをご覧ください。

  4. [詳細オプション] > [ネットワーキング] をクリックします。

  5. [ネットワーク タグ] に、「web-server」と入力します。

注: ネットワーク タグは、特定のファイアウォール ルールとネットワーク ルートが適用された VM インスタンスの識別に使用されます。このラボの後半では、VM インスタンスへの HTTP トラフィックを許可するファイアウォール ルールを、web-server タグを付けて作成します。あるいは、[HTTP トラフィックを許可する] チェックボックスをオンにすることもできます。このチェックボックスをオンにすると、このインスタンスに http-server というタグが付けられて、「tcp:80」のタグ付きファイアウォール ルールが自動的に作成されます。
  1. [作成] をクリックします。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが付与されます。

blue サーバーを作成します。

green サーバーを作成する

ネットワーク タグを指定せずに green サーバーを作成します。

  1. 引き続きコンソール内で、[VM インスタンス] ページの [インスタンスを作成] をクリックします。

  2. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 green
    リージョン
    ゾーン
  3. [作成] をクリックします。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが付与されます。

green サーバーを作成します。

nginx をインストールしてスタートページをカスタマイズする

nginx を両方の VM インスタンスにインストールし、2 つのサーバーを区別できるようにスタートページを変更します。

  1. blue の [VM インスタンス] ダイアログで [SSH] をクリックし、ターミナルを起動して接続します。

  2. blue の SSH ターミナルから次のコマンドを実行して、nginx をインストールします。

sudo apt-get install nginx-light -y
  1. 次のコマンドを実行して、nano エディタでスタートページを開きます。
sudo nano /var/www/html/index.nginx-debian.html
  1. <h1>Welcome to nginx!</h1> 行を <h1>Welcome to the blue server!</h1> に置き換えます。
  2. Ctrl+OEnterCtrl+X キーの順に押します。
  3. 次のコマンドで変更を確認します。
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>
  1. blue の SSH ターミナルを閉じます。
exit

green サーバーにも同じ手順を繰り返します。

  1. green で [SSH] をクリックし、ターミナルを起動して接続します。
  2. 次のコマンドを実行して、nginx をインストールします。
sudo apt-get install nginx-light -y
  1. 次のコマンドを実行して、nano エディタでスタートページを開きます。
sudo nano /var/www/html/index.nginx-debian.html
  1. <h1>Welcome to nginx!</h1> 行を <h1>Welcome to the green server!</h1> に置き換えます。
  2. Ctrl+OEnterCtrl+X キーの順に押します。
  3. 次のコマンドで変更を確認します。
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>
  1. green の SSH ターミナルを閉じます。
exit

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが付与されます。

nginx をインストールしてスタートページをカスタマイズする。

タスク 2. ファイアウォール ルールを作成する

タグ付きのファイアウォール ルールを作成して、HTTP 接続をテストします。

タグ付きのファイアウォール ルールを作成する

web-server ネットワーク タグが付いた VM インスタンスに適用されるファイアウォール ルールを作成します。

  1. Google Cloud コンソールで、ナビゲーション メニューナビゲーション メニュー アイコン) > [VPC ネットワーク] > [ファイアウォール] に移動します。
  2. default-allow-internal ファイアウォール ルールが存在しています。
注: default-allow-internal ファイアウォール ルールは、default ネットワーク内のすべてのプロトコルまたはポートへのトラフィックを許可します。ネットワーク タグ web-server を使用して、このネットワークの外部から blue サーバーへのトラフィックのみを許可するファイアウォール ルールを作成します。
  1. [ファイアウォール ルールを作成] をクリックします。

  2. 以下の値を設定し、他はすべてデフォルト値のままにします。

    プロパティ 値(値を入力するか、指定されたオプションを選択)
    名前 allow-http-web-server
    ネットワーク default
    ターゲット 指定されたターゲットタグ
    ターゲットタグ web-server
    ソースフィルタ IPv4 範囲
    送信元 IPv4 範囲 0.0.0.0/0
    プロトコルとポート [指定したプロトコルとポート] と [tcp] のチェックボックスをオンにして「80」と入力し、次に [その他のプロトコル] をオンにして「icmp」と入力します
注: すべてのネットワークを指定するために、[送信元 IPv4 範囲] には /0 を含めます。
  1. [作成] をクリックします。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが付与されます。

タグ付きのファイアウォール ルールを作成します。

test-vm を作成する

Cloud Shell コマンドラインを使用して test-vm インスタンスを作成します。

  1. 新しい Cloud Shell ターミナルを開きます。

  2. 次のコマンドを実行して、ゾーンに test-vm インスタンスを作成します。

gcloud compute instances create test-vm --machine-type=e2-micro --subnet=default --zone={{{project_0.default_zone|ZONE}}}

出力は次のようになります。

NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS test-vm {{{project_0.default_zone|ZONE}}} e2-micro 10.142.0.4 35.237.134.68 RUNNING 注: コンソールまたは gcloud コマンドラインから VM インスタンスを簡単に作成できます。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが付与されます。

test-vm を作成する

HTTP 接続をテストする

test-vm から、bluegreen の内部 IP アドレスと外部 IP アドレスに対して curl コマンドを実行します。

  1. コンソールで、ナビゲーション メニューナビゲーション メニュー アイコン)> [Compute Engine] > [VM インスタンス] に移動します。
  2. bluegreen の内部 IP アドレスと外部 IP アドレスを確認します。
  3. test-vm で [SSH] をクリックし、ターミナルを起動して接続します。
  4. blue の内部 IP アドレスへの HTTP 接続をテストするために、blue の内部 IP を入力して次のコマンドを実行します。
curl <blue の内部 IP をこちらに入力>

Welcome to the blue server! ヘッダーが表示されます。

  1. green の内部 IP アドレスへの HTTP 接続をテストするために、green の内部 IP を入力して次のコマンドを実行します。
curl -c 3 <green の内部 IP をこちらに入力>

Welcome to the green server! ヘッダーが表示されます。

注: 内部 IP アドレスを使用して両方のサーバーに HTTP アクセスすることができました。test-vm はウェブサーバーの default ネットワークと同じ VPC ネットワーク上にあるため、「tcp:80」の接続は default-allow-internal ファイアウォール ルールによって許可されます。
  1. blue の外部 IP アドレスへの HTTP 接続をテストするために、blue の外部 IP を入力して次のコマンドを実行します。
curl <blue の外部 IP をこちらに入力>

Welcome to the blue server! ヘッダーが表示されます。

  1. green の外部 IP アドレスへの HTTP 接続をテストするために、green の外部 IP を入力して次のコマンドを実行します。
curl -c 3 <Enter green's external IP here> 注: これは動作しません。リクエストは停止します。
  1. Ctrl+C キーを押して HTTP リクエストを停止します。
注: allow-http-web-serverweb-server タグが付いた VM インスタンスにのみ適用されるため、HTTP アクセスできるのは予想どおり blue サーバーの外部 IP アドレスのみです。

新規タブを開き http://[サーバーの外部 IP] に移動して、ブラウザから同じ動作を確認できます。

タスク 3. ネットワーク管理者とセキュリティ管理者のロールについて調べる

Cloud IAM を使用すると、特定のリソースに対するアクションの実行を、承認を受けたユーザーのみに許可できます。これはクラウドのリソースを集約して可視化し、管理するうえで役立ちます。次のロールは、単一プロジェクト ネットワーキングと組み合わせて使用され、各 VPC ネットワークへの管理アクセスを個別に制御します。

  • ネットワーク管理者: ネットワーキング リソース(ファイアウォール ルールと SSL 証明書を除く)を作成、変更、削除するための権限。
  • セキュリティ管理者: ファイアウォール ルールと SSL 証明書を作成、変更、削除するための権限。

これらのロールをサービス アカウントに適用することでロールについて確認していきます。サービス アカウントは、個々のエンドユーザーではなく VM インスタンスに属する特別な Google アカウントです。ユーザーを新たに作成せずに、サービス アカウントの利用を test-vm に許可して、ネットワーク管理者セキュリティ管理者のロールの権限を実行します。

現在の権限を確認する

現在、test-vm では Compute Engine のデフォルトのサービス アカウントを使用しています。このアカウントは、Cloud Shell コマンドラインと Google Cloud コンソールで作成されるすべてのインスタンスで有効です。

test-vm で利用可能なファイアウォール ルールを表示または削除してみます。

  1. test-vm インスタンスの SSH ターミナルに戻ります。
  2. 使用可能なファイアウォール ルールを一覧表示してみます。
gcloud compute firewall-rules list

出力は次のようになります。

ERROR: (gcloud.compute.firewall-rules.list) Some requests did not succeed: - Insufficient Permission 注: これは動作しません。
  1. 次のコマンドを実行して、allow-http-web-server ファイアウォール ルールを削除してみます。
gcloud compute firewall-rules delete allow-http-web-server
  1. 続行するかどうかを尋ねられたら「Y」と入力します。

出力は次のようになります。

ERROR: (gcloud.compute.firewall-rules.delete) Could not fetch resource: - Insufficient Permission 注: これは動作しません。 注: Compute Engine のデフォルトのサービス アカウントには、ファイアウォール ルールを表示したり削除したりできる適切な権限がありません。これは適切なロールがない他のユーザーにも当てはまります。

サービス アカウントを作成する

サービス アカウントを作成してネットワーク管理者のロールを適用します。

  1. Cloud Platform Console で、ナビゲーション メニューナビゲーション メニュー アイコン)> [IAM と管理者] > [サービス アカウント] に移動します。

  2. Compute Engine のデフォルトのサービス アカウントが表示されます。

  3. [サービス アカウントを作成] をクリックします。

  4. [サービス アカウント名] を「Network-admin」に設定して、[作成して続行] をクリックします。

  5. [ロールを選択] で、[Cloud Engine] > [Compute ネットワーク管理者] を選択し、[続行] をクリックしてから [完了] をクリックします。

  6. サービス アカウントの「Network-admin」を作成したら、右隅のその他アイコンをクリックして、プルダウンの [鍵を管理] をクリックし、[鍵を追加] をクリックして、プルダウンから [新しい鍵を作成] を選択します。[作成] をクリックして、JSON 出力をダウンロードします。

  7. [閉じる] をクリックします。

    ローカルのパソコンに JSON キーファイルがダウンロードされます。このキーファイルは、後で VM にアップロードします。

  8. ローカルマシンの JSON キーファイルの名前を credentials.json に変更します。

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。タスクが正常に完了すると、評価スコアが付与されます。

Network-admin サービス アカウントを作成します。

test-vm に許可を与えて権限を確認する

Network-admin サービス アカウントを使用できるよう test-vm に許可を与えます。

  1. test-vm インスタンスの SSH ターミナルに戻ります。
  2. SSH VM ターミナルから credentials.json をアップロードするには、右上の隅にある [ファイルをアップロード] アイコンをクリックします。
  3. credentials.json を選択してアップロードします。
  4. [ファイル転送] ウィンドウで [閉じる] をクリックします。 : プロンプトが表示されたら、「Cloud Identity-Aware Proxy を介した接続に失敗しました」というダイアログの [再試行] をクリックして、ファイルを再度アップロードします。
  5. 次のコマンドを実行して、先ほどアップロードした認証情報を使用して VM に許可を与えます。
gcloud auth activate-service-account --key-file credentials.json 注: 使用しているイメージには、Cloud SDK がプリインストールされています。そのため、Cloud SDK を初期設定する必要はありません。別の環境でこのラボを試行している場合は、Cloud SDK のインストールに関する手順に沿って操作してください。
  1. 使用可能なファイアウォール ルールを一覧表示してみます。
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

応答があるはずです。

  1. 次のコマンドを実行して、allow-http-web-server ファイアウォール ルールを削除してみます。
gcloud compute firewall-rules delete allow-http-web-server
  1. 続行するかどうかを尋ねられたら「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 サービス アカウントをセキュリティ管理者のロールに指定します。

  1. Cloud Platform Console で、ナビゲーション メニューナビゲーション メニュー アイコン)> [IAM と管理] > [IAM] に移動します。

  2. Network-admin アカウントを見つけます。このアカウントは [名前] 列で特定します。

  3. Network-admin アカウントの鉛筆アイコンをクリックします。

  4. [ロール] を [Compute Engine] > [Compute セキュリティ管理者] に変更します。

  5. [保存] をクリックします。

  6. test-vm インスタンスの SSH ターミナルに戻ります。

  7. 使用可能なファイアウォール ルールを一覧表示してみます。

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

応答があるはずです。

  1. 次のコマンドを実行して、allow-http-web-server ファイアウォール ルールを削除してみます。
gcloud compute firewall-rules delete allow-http-web-server
  1. 続行するかどうかを尋ねられたら「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 アクセスできなくなったことを確認します。

  1. test-vm インスタンスの SSH ターミナルに戻ります。
  2. blue の外部 IP アドレスへの HTTP 接続をテストするために、blue の外部 IP を入力して次のコマンドを実行します。
curl -c 3 <Enter blue's external IP here> 注: これは動作しません。
  1. Ctrl+C キーを押して HTTP リクエストを停止します。
注: ファイアウォール ルールに不要な変更が行われないようにセキュリティ管理者のロールは適切なユーザーやサービス アカウントに指定してください。

お疲れさまでした

このラボでは、2 つの nginx ウェブサーバーを作成し、タグ付きのファイアウォール ルールを使用して、外部 HTTP アクセスを制御しました。そして先にセキュリティ管理者のロール、次にネットワーク管理者のロールを持つサービスアカウントを作成して、これらのロールのそれぞれの権限を確認しました。

ファイアウォールと SSL 証明書を管理するセキュリティ チームと、その他のネットワーキング リソースを管理するネットワーキング チームが社内にいる場合は、セキュリティ チームにセキュリティ管理者のロール、ネットワーキング チームにネットワーク管理者のロールを付与します。

次のステップと詳細情報

Google Cloud Identity and Access Management の基本概念については、Google Cloud Identity and Access Management の概要をご覧ください。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2023 年 9 月 19 日

ラボの最終テスト日: 2023 年 9 月 19 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。