【问题标题】:GCP Development Server - VM accessible to only one personGCP 开发服务器 - 只有一个人可以访问的虚拟机
【发布时间】:2022-02-02 17:39:07
【问题描述】:

我想在我的组织的 GCP 帐户中自动创建与单个开发人员相关联的开发服务器。

我打算编写复制相关凭据的脚本(想想 GitHub 的加密密钥)。如何锁定 VM,以便只有单个用户可以访问它。 GCP 有block-project-ssh-keys 之类的选项,但我们发现所有用户仍然可以使用gcloud compute ssh 登录。

我担心这可能需要非常复杂的 IAM 配置。

  1. 有没有一种简单的方法可以做到这一点? (IAM 或其他)
  2. 有没有人见过自动化这个或类似的东西的项目? (当新用户加入组织时,使用脚本提供新标签/组/等的 IAM)

【问题讨论】:

  • 是的,这可以在每个 Compute Engine 虚拟机实例上完成。 1) 删除所有授予 Compute Engine 权限的角色。 2) 将所需身份添加到 VM 的 IAM 策略。此链接将有所帮助:cloud.google.com/compute/docs/access/… 3) 另一种选择是删除对 VM 的所有访问权限,然后向每个用户颁发 SSH 密钥。他们可以通过 SSH 登录实例,但不能使用 GUI。
  • 4) 访问虚拟机的方法有很多种。有几种方法可以限制访问。这包括 IAM、基于 IP 的限制、VPN 等。确保您了解如何管理和限制访问。
  • 我尝试了enable-oslogin=FALSEblock-project-ssh-keys=TRUE 和元数据 ssh 密钥。但是,启动后我仍然可以使用 gcloud 登录。 ~/.ssh/authorized_keys 读作“由 Google 添加\n...”。

标签: google-cloud-platform google-compute-engine google-iam


【解决方案1】:
  1. 在项目上启用OS Login,最好使用组织策略约束。操作系统登录会自动禁用基于元数据的 SSH 密钥。
  2. 为每个 VM 和用户单独授予 OS Login roles,以便每个用户只能登录到自己的 VM。
  3. 要么根本不将服务帐户附加到 VM,要么为每个 VM 创建专用服务帐户。然后仅授予用户“他们的”服务帐户的服务帐户用户角色。
  4. 不要在项目上授予除 Compute Viewer 之外的任何 Compute* 角色。特别是,不要授予 Compute AdminCompute Instance Admin 或任何其他允许用户修改实例元数据的角色(因为这会让他们更改启动和关闭脚本) .

可选:

  1. 在项目上授予用户Compute Viewer。这样可以确保他们可以在 Cloud Console 中列出虚拟机。
  2. 仅允许通过 IAP TCP forwarding 进行 SSH 访问,并为每个 VM、每个用户授予 IAP-secured tunnel user 角色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-01
    相关资源
    最近更新 更多