グローバルIP を持たない GCP VM への SSH 接続方法
[履歴] [最終更新] (2021/08/14 13:36:26)
最近の投稿
注目の記事

概要

グローバルIP を持たず、インターネットとの接続が行えない GCP VM に対して SSH 接続するための設定を記載します。

インターネットアクセスを制限するための設定

以下のような制限が存在しているとします。
これらの制限がなされていたとしても SSH 接続できることの確認になります。

Firewall

ネットワーク 10.1.1.0/24 を作成しました。

Uploaded Image

インターネットとの接続制限

Uploaded Image

ただし、Cloud IAP が利用する 35.235.240.0/20 からの流入を許可する必要があります。

VPC-SC

Cloud IAP と HTTPS トンネルを張る User の外部 IP のみが記載された Access Level を作成して VPC-SC に紐付けます。

補足: Firewall で指定した 35.235.240.0/20 を Access Level に指定する必要はありません。

Uploaded Image

検証のためすべての GCP サービスを VPC-SC で制限してみます。

Uploaded Image

外部IP を持たない VM

VM を起動する際に 外部IP を持たないように設定します。

Uploaded Image

BeyondCorp Enterprise

組織内の User アカウントについて、Cloud Console (Web 管理画面) および GCP API に対する IP 制限を行います。

関連: Terraform の GCP 環境向けの基本的な使い方

Uploaded Image

SSH パケットの通信経路について

Cloud IAP と User の間に HTTPS トンネルが張られるため、GCP VM はグローバル IP を持つ必要がありません。

Uploaded Image

Overview of TCP forwarding

tunnel.cloudproxy.app ドメインについて

Cloud IAP による HTTPS トンネルで TCP forwarding を行なうためには、
Cloud IAP と HTTPS トンネルを張るクライアントから tunnel.cloudproxy.app へのアクセスが行える必要があります。

参考: What domain does IAP for TCP use?

以下の二つの方法で Cloud IAP と HTTPS トンネルを張ることができます。

"SSH from the browser" の利用

VM 一覧における「SSH」ボタンをクリックします。

Uploaded Image

ポップアップウィンドウが開かれます。

Uploaded Image

以下のロールの権限が必要です

roles/iap.tunnelResourceAccessor
roles/iam.serviceAccountUser
roles/compute.instanceAdmin

gcloud コマンドの利用

動作検証に先立ち、Cloud Shell で接続された端末の外部IP を確認して Access Level に追記しておきます。

Uploaded Image

SSH

gcloud compute ssh instance-1 --project myproject-20210411 --zone asia-northeast1-b

Uploaded Image

その他の TCP 通信

gcloud compute start-iap-tunnel instance-1 22 --local-host-port=localhost:2222 --project myproject-20210411 --zone asia-northeast1-b

Uploaded Image

関連ページ