如何对 gcloud 项目管理员隐藏秘密?

How to keep secrets hidden from gcloud project administrator?

我是 Google Cloud 项目的开发运维工程师和项目管理员。 组织有一些超级敏感密钥,应该由 Kubernetes 或 Cloud 运行 中的容器 运行 访问,但我不应访问它们。

到目前为止,我认为 Secrets Manager 和 KMS 是可能的解决方案。我有这个项目的管理员权限,所以这些秘密可能应该存储在 CTO 拥有的另一个项目中并交叉引用。

而且我有监控运行个容器的所有权限,请问有什么方法可以防止在运行时泄露我的秘密吗?应该使用什么解决方案?

如果您是项目所有者,您无法从技术上防止机密泄露。

如果秘密存储在另一个项目中,则无法通过UI访问秘密。但是,这也意味着服务帐户可以访问存储在另一个项目中的秘密。因为你是project owner,你可以冒充有权访问secret的服务账号,也可以访问。


解决该问题的唯一方法是最小特权原则。只有项目的最低权限,而不是安全管理员角色。

当您必须授予服务帐户权限时,您需要使用自动化系统,例如 CI/CD 和 terraform。当然,每个更新都需要由另一个人审查,您不能在没有同行审查的情况下更新 CI/CD 管道并授予自己权限(例如服务帐户模拟)。