GCP 只对云开放防火墙 shell

GCP open firewall only to cloud shell

GCP 中是否有明确允许仅来自云的防火墙规则的方法 shell。所有 GCP 演示和视频都添加了规则 allow 22 to 0.0.0.0/0 to ssh to the instance from cloud shell.

然而,有没有一种方法可以限制仅来自云 shell 的访问 - 使用云 shell 的 IP 范围或服务帐户?

Google 不发布云 Shell 的 public IP 地址范围。

VPC 防火墙规则允许指定源和目标的服务帐户。但是,Cloud Shell 不使用服务帐户。 Cloud Shell 使用登录到 Google Cloud Console 的人的身份。这意味着 OAuth 2 用户凭证。 VPC 防火墙规则不支持用户凭据。

我的建议是通过 IAP(身份识别代理)使用 TCP 转发和隧道 SSH。 Google 在 Cloud SDK CLI 中让这一切变得简单。

在 Google 云控制台中打开云 Shell。然后 运行 这个命令:

gcloud compute ssh NAME_OF_VM_INSTANCE --tunnel-through-iap

这也适用于没有 public IP 地址的 VM 实例。

Identity Aware Proxy CIDR netblock 是 35.235.240.0/20。创建允许来自此块的 SSH 流量的 VPC 防火墙规则。此规则将阻止 public SSH 流量并仅允许授权流量通过身份识别代理。

Google 已在本文中发布详细信息 - Configuring secure remote access for Compute Engine VMs


在管理控制台中,单击安全,然后单击 select Identity-Aware 代理。

如果您以前没有使用过 Cloud IAP,则需要配置 oAuth 屏幕:

将同意屏幕配置为仅允许您域中的内部用户,然后单击“保存”。

接下来,您需要定义允许使用Cloud IAP 远程连接的用户。将用户添加到您要连接到的资源上的“IAP-secured 隧道用户”角色。

然后,通过 web UI 或 gcloud 中的 ssh 按钮连接到机器。

使用网络 UI 时,请注意 URL 参数 useAdminProxy=true。

提示:如果你本地没有安装gcloud,也可以使用Cloud Shell:

gcloud beta compute ssh {VM-NAME}  --tunnel-through-iap

您现在应该已连接!您可以通过尝试 ping out 来验证您没有互联网连接。 8.8.8.8(Google 的 Honest DNS)是一个很好的尝试地址。