【发布时间】:2022-01-18 16:03:14
【问题描述】:
我有 2 个 GCP 项目,我正在尝试使用 C# 对其执行身份验证。因为项目属于不同的客户,所以我可以访问服务帐户 json 文件。
有没有办法在使用服务帐户 json 文件进行身份验证的两个项目中调用 Compute engine API?
来自 Google Cloud 客户端库的示例代码使用
var credential = GoogleCredential.GetApplicationDefault();
从 GOOGLE_APPLICATION_CREDENTIALS 环境变量加载服务帐户密钥文件的路径。这个 var 是单数的。为了使它工作,我需要加载两个服务帐户 JSON 密钥文件,而不仅仅是一个。
我拒绝混合 json 文件,因为它会带来更大的安全漏洞。
【问题讨论】:
-
您的问题不清楚。有 2 个 GCP 项目,而您每个 项目都有一个服务帐户(即 2 个服务帐户)?您的代码将需要使用相应的服务帐户(密钥)来访问相应的项目。你不能组合键。您可以(!)拥有一个服务帐户(和密钥)来提供对多个项目的访问权限,但出于安全原因,这似乎是不允许的(这可能很好)。
-
请参阅“How to Ask”以及链接页面和“MCVE”。我们感谢您可能是新人,但我们确实希望您为此付出努力的证据。你在哪里搜索的?为什么没有帮助?如果是这样,您编写的用于测试所学内容的代码在哪里?如果你不写代码,为什么不呢?如果你这样做了,说明你遇到的问题的最少代码是什么,以及问题的解释,以及最少的输入数据和预期的结果?没有它就很难为您提供帮助。
-
@DazWilkin 出于安全原因,这是不允许的 安全与它无关,客户端库将无法加载它。该文件格式错误,无法解析。
-
@theTinMan 我已经编辑了问题并添加了一行相关的代码。尽管 IMO 他们添加的内容足以理解这个问题。 GOOGLE_APPLICATION_CREDENTIALS 就足够了。
-
@DalmTo 大概(!)“出于安全原因”,该组织要求使用不同的服务帐户来代表不同的客户项目。技术要求和组织要求之间存在差异。
标签: c# google-cloud-platform google-compute-engine google-api-dotnet-client service-accounts