Я пытаюсь получить доступ к своим экземплярам виртуальной машины без внешнего IP-адреса, и в целях безопасности я не хочу открывать порты или разрешать политики SSH.
В AWS есть решения типа Session Manager, есть ли что-то подобное в Google Cloud Platform?
Google предоставляет Cloud Identity-Aware Proxy (IAP), который позволяет вам подключаться к вашему экземпляру виртуальной машины, у которого нет внешнего IP:
С участием Пересылка TCP, IAP может защитить доступ SSH и RDP к вашим виртуальным машинам, размещенным в Google Cloud. Вашим экземплярам виртуальных машин даже не нужны общедоступные IP-адреса.
Посмотрите статью Cloud IAP обеспечивает доступ к виртуальным машинам с учетом контекста через SSH и RDP без хостов-бастионов первый. Более подробную информацию вы можете найти в документации Включение IAP для Compute Engine и Использование IAP для пересылки TCP.
Я пытался следовать документации своего тестового проекта, вы можете найти мои шаги ниже:
создать экземпляр ВМ без внешнего IP:
gcloud compute instances create instance-1 --zone=us-central1-a --machine-type=e2-medium --subnet=default --no-address --maintenance-policy=MIGRATE --image=ubuntu-1804-bionic-v20200610 --image-project=ubuntu-os-cloud
перейдите в Security -> Identity-Aware Proxy и включите Identity-Aware Proxy API.
настроить брандмауэр GCP для включения входящего трафика от Cloud IAP:
gcloud compute firewall-rules create allow-ssh-ingress-from-iap --direction=INGRESS --action=allow --rules=tcp:22 --source-ranges=35.235.240.0/20
подключиться к экземпляру ВМ через туннель IAP:
$ gcloud compute ssh instance-1 --tunnel-through-iap --zone=us-central1-a
Warning: Permanently added 'compute.3924477895872840881' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-1026-gcp x86_64)
...
instance-1:~$
Кроме того, посмотрите на стороннюю видеоурок.