{GCP VPC} 限定公開の Google アクセスを構成する

 

https://cloud.google.com/vpc/docs/configure-private-google-access?hl=ja

https://blog.g-gen.co.jp/entry/private-google-access-explained#:~:text=%E9%99%90%E5%AE%9A%E5%85%AC%E9%96%8B%E3%81%AE%20Google%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%20(Private%20Google%20Access)%20%E3%81%A8%E3%81%AF,%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B%E4%BB%95%E7%B5%84%E3%81%BF%E3%81%A7%E3%81%99%E3%80%82


デフォルトでは、Compute Engine VM がネットワーク インターフェースに割り当てられた外部 IP アドレスを持たない場合、
他の内部 IP アドレスの宛先にのみパケットを送信できます。
VM のネットワーク インターフェースが使用するサブネットで限定公開の Google アクセスを有効にすると、
Google API とサービスで使用される一連の外部 IP アドレスに VM を接続できます。


類似機能として「 Private Service Connect 」があるが、
原則、「 限定公開の Google アクセス 」を使用でよい

 


外部IPアドレスをもたないvmを作成し、「限定公開の Google アクセス」有効化により、
Google マップにアクセスできるようになるか確認


-- 1. 前作業

gcloud init
gcloud auth list

gcloud --version

gcloud projects create project01-9999999 \
--name="project01"

gcloud projects list


gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet

gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111

gcloud services enable compute.googleapis.com --project project01-9999999

gcloud components update


-- 2. VPC作成


gcloud compute networks create vpc01 \
--subnet-mode=custom \
--mtu=1460 \
--bgp-routing-mode=regional


gcloud compute networks list


-- 3. サブネット作成


gcloud compute networks subnets create subnet01 \
--range=10.0.1.0/24 \
--stack-type=IPV4_ONLY \
--network=vpc01 \
--region=asia-northeast1

gcloud compute networks subnets list

 

-- 4. vmインスタンス作成

外部 IP アドレスを持たない VM インスタンスを作成する

gcloud compute instances create vm01 \
--machine-type=e2-micro \
--image-project=centos-cloud \
--image=centos-7-v20221004 \
--provisioning-model=SPOT \
--instance-termination-action=DELETE \
--network vpc01 \
--subnet subnet01 \
--zone asia-northeast1-a \
--no-address

gcloud compute instances list


-- 5. SSH 接続を許可するファイアウォール ルールを作成する
35.235.240.0/20 --> IAP(Identity-Aware Proxy) が TCP 転送に使用するすべての IP アドレスが含まれています

gcloud compute firewall-rules create allow-ssh \
--network vpc01 \
--source-ranges 35.235.240.0/20 \
--allow tcp:22


-- 6. VM インスタンスの IAP SSH 権限を作成する

gcloud projects add-iam-policy-binding project01-9999999 \
--member=user:hoge@example.com \
--role=roles/iap.tunnelResourceAccessor

 


-- 7. 動作確認(限定公開の Google アクセス有効化前)
VM インスタンスにログインし、Google マップに接続できないことを確認する

 

gcloud compute ssh vm01 \
--zone "asia-northeast1-a" \
--tunnel-through-iap \
--project "project01-9999999" \
--command "curl -m 3 https://www.google.co.jp/maps/?hl=ja"

 


-- 8. 限定公開の Google アクセス有効化


gcloud compute networks subnets describe subnet01 \
--region=asia-northeast1 \
--format="get(privateIpGoogleAccess)"


gcloud compute networks subnets update subnet01 \
--region=asia-northeast1 \
--enable-private-ip-google-access

gcloud compute networks subnets describe subnet01 \
--region=asia-northeast1 \
--format="get(privateIpGoogleAccess)"


-- 9. 動作確認(限定公開の Google アクセス有効化後)
VM インスタンスにログインし、Google マップに接続できることを確認する


gcloud compute ssh vm01 \
--zone "asia-northeast1-a" \
--tunnel-through-iap \
--project "project01-9999999" \
--command "curl -m 3 https://www.google.co.jp/maps/?hl=ja"

 

 

-- 10. クリーンアップ

gcloud projects list

gcloud projects delete project01-9999999