我有一个在 GCE 上运行的 CoreOS 集群,我注意到所有 GCE 实例的一个问题是,只要您在 Google Cloud 平台上对项目进行了身份验证,您几乎可以登录服务器。这对我来说是个问题,因为团队中的任何人,或者进入项目的任何人,都可以像任何人一样直接进入服务器。我想禁用它,只使用我在我的 cloud-config 文件中创建的用户,这些用户指定了过期的 ssh 密钥和密码。在这样做时,我很好奇谷歌如何在 GCE 上创建用户?有没有人找到一种方法来禁用它?
我有一个在 GCE 上运行的 CoreOS 集群,我注意到所有 GCE 实例的一个问题是,只要您在 Google Cloud 平台上对项目进行了身份验证,您几乎可以登录服务器。这对我来说是个问题,因为团队中的任何人,或者进入项目的任何人,都可以像任何人一样直接进入服务器。我想禁用它,只使用我在我的 cloud-config 文件中创建的用户,这些用户指定了过期的 ssh 密钥和密码。在这样做时,我很好奇谷歌如何在 GCE 上创建用户?有没有人找到一种方法来禁用它?
您可以通过确保 google-account-manager 服务不运行来阻止 GCE 实例添加帐户。在 CoreOS 上,您可以使用 停止此服务,
sudo systemctl stop google-accounts-manager.service
然后使用 永久禁用它sudo systemctl disable google-accounts-manager.service
。您可能希望制作一个预先禁用该服务的映像(甚至删除单元文件),这样当您创建实例时,它不会在您禁用该服务之前创建帐户。
自 2017 年 3 月起,您可以通过禁用部署在 GCE 中的所有映像上的 Accounts 守护程序来阻止创建帐户。
要做到这一点:
创建
/etc/default/instance_configs.cfg.template
具有以下内容的文件:跑
/usr/bin/google_instance_setup
这应该永久停止并禁用守护程序,即使在守护程序的软件包更新的情况下也是如此。
您可以在GoogleCloudPlatform/compute-image-packages项目 README 和代码中阅读有关 Google 在 GCE 系统映像上部署的守护程序和其他内容的更多信息。
如果用户对项目具有“编辑”权限,他们就可以通过 SSH 连接到任何虚拟机(并且可以无密码
sudo
访问),因为他们可以编辑任何给定虚拟机或项目本身的元数据,以将其公共 SSH 密钥添加到其中,即gcloud
当您使用gcloud compute ssh
或单击 UI 中的 [SSH] 按钮时,会自动为您做什么。您不能禁用此功能,因为那样您将无法通过 SSH 连接到您自己新创建的实例:GCE VM 实例在没有任何用户帐户或 SSH 密钥的情况下启动,并从项目继承它们,或从更改元数据一旦运行,您就可以通过更改元数据动态地将用户添加到正在运行的虚拟机中,并且虚拟机上的守护程序会自动为您创建一个用户帐户。
如果您想控制谁可以通过 SSH 访问哪个实例,请授予用户查看权限,而不是编辑权限,然后手动将他们的 SSH 密钥添加到您希望他们访问的那些实例。或者启用基于密码的 SSH 并添加他们的用户帐户。
在撰写本文时(2015 年 8 月 28 日),有一个可用的程序化用户帐户访问alpha版,您可以使用它在 VM 上创建新用户帐户。您可以请求加入此 API 的白名单,因为此时它只是受邀请的。
目前这是不可能的。如果您的项目成员具有编辑或所有权权限,那么他们可以通过 ssh 连接到 VM 实例。
但是,您可以为不想与其他成员(编辑者/所有者)共享的 VM 实例创建不同的项目。另一种解决方法是
allowusers
在您的/etc/ssh/sshd_config
文件中使用以允许特定用户/IP 地址通过 SSH 连接到虚拟机。我建议在GCE 公共问题跟踪器上提交功能请求以添加该功能。