如何阻止某人更改 gcloud 配置文件?
Posted
技术标签:
【中文标题】如何阻止某人更改 gcloud 配置文件?【英文标题】:How can I stop someone from changing the gcloud profile? 【发布时间】:2022-01-18 19:59:15 【问题描述】:多个用户将使用相同的用户名登录到相同的计算引擎。如何阻止任何人更改 gcloud 配置,例如帐户、项目或区域?
【问题讨论】:
您的问题不清楚。当您说“gcloud configs”时,这些属性在哪里设置?在 Compute Engine 虚拟机上?您是否将 VM 用作启动板来运行其他gcloud
命令?通常,您应该不在多个用户之间共享身份,因为您和机器都无法分辨它们之间的区别(因此,阻止一个以用户身份登录的人更改任何以同一用户身份登录的其他人已更改)。如果您详细说明您的配置和正在开发的解决方案,我们可以提供更多帮助。
基本上用户必须通过服务帐户运行所有命令。当他们使用这个虚拟机时,应该阻止他们在 gcloud 中使用自己的身份。我该如何执行?
是的,使用服务帐户是正确的解决方案。服务帐户的存在是为了向软件而不是个人帐户提供身份。在不了解您的解决方案的更多信息的情况下,解决此问题的一种方法可能是为您的用户提供一个 Web 应用程序来触发 VM 上的进程。 Web 应用程序可以像 GET 一样简单,它需要身份验证(通过 OAuth 使用用户的人工帐户),如果经过身份验证,Web 应用程序使用服务帐户在 VM 上运行进程。来自进程的响应可以作为对 GET 的响应传递给用户。
【参考方案1】:
解决方案不明显,因为模式不好。
您在云端拥有一个计算引擎。那compute engine has an identity。您可以更改它,您可以授予该身份的权限。
用户可以登录VM,因为他有访问权限,然后他可以使用VM和附加的服务帐户(具有附加权限)访问不同的服务。
如果您有不同的用户,许多人可以访问同一个 VM,并使用相同的 VM 身份以相同的权限访问相同的服务。
如果某些用户有不同的权限,那就是云!!使用另一个服务帐户和另一个权限创建另一个 VM!
您担心费用吗?在不使用 VM 时停止它们。
用户必须使用相同的数据?您可以以只读模式将永久性磁盘附加到多个 Compute Engine。或者使用 filestore 来获得 R/W 存储空间。
通过正确的设计,您不必在 Google Cloud 上的 VM 上使用您的个人帐户,而只能在您的个人计算机上使用。
此外,以你的方式继续是危险的,因为如果用户忘记执行gcloud auth login
,他们将使用之前登录用户的凭据,他将代表他们执行操作!!
【讨论】:
是的,这很危险,因为可能会忘记执行 gcloud auth 登录。所以我需要的是,他们应该无法更改 gcloud 身份验证。无论他们运行什么命令,都应该只通过附加到 VM 的服务帐户。有没有可能? 不自动。更改模式是比自定义代码更好的选择【参考方案2】:使用相同的用户名和密码登录项目并不理想,因为无法确定谁更改了项目中的某些内容。您的问题缺少大量信息,但如果您的项目是 GCP 项目,那么您必须考虑使用 IAM(身份和访问管理)。如果所有用户都使用相同的凭据,他们可以更改配置、帐户、项目或区域,前提是他们具有在项目中进行这些更改的适当角色。如果您是项目的所有者,您可以使用角色控制他们可以对项目执行的操作。 IAM 工具非常有用,因为它为您提供了一种控制每个用户可以做什么和不能做什么的方法。以下是few roles 的一些示例:
roles/viewer:不影响状态的只读操作的权限,例如查看(但不修改)现有资源或数据。
roles/editor:所有查看者权限,以及修改状态的操作权限,例如更改现有资源。
roles/owner:所有编辑权限和以下操作的权限:
管理项目和项目内所有资源的角色和权限。 为项目设置帐单。
通过细分您的项目,您可以限制项目的每个成员正在做的事情。您可以让一些成员运行代码、部署应用程序,而其他成员则可以控制网络配置。使用不同的帐户和角色,您可以使用 GCP 主页中内置的“活动”功能来跟踪任何用户所做的更改(该功能的示例):
有很多user roles 控制着项目的各个方面。
以下是一些有助于您进一步了解 GCP 项目中不同类型角色的文档:
Overview of how IAM works.
Introduction to the Organization Policy Service.
Manage access to projects, folders, and organizations.
【讨论】:
以上是关于如何阻止某人更改 gcloud 配置文件?的主要内容,如果未能解决你的问题,请参考以下文章
Gcloud 云构建本地组件失败并出现错误“加载配置文件时出错:cloudbuild.Build 中的未知字段“availableSecrets””