Google cloud platform 使用Google帐户向GCP进行身份验证,无需启动浏览器 TL;博士

Google cloud platform 使用Google帐户向GCP进行身份验证,无需启动浏览器 TL;博士,google-cloud-platform,google-cloud-iam,Google Cloud Platform,Google Cloud Iam,有谁能建议一种方法,让我可以作为不是CI管道中的服务帐户的命名用户运行测试 详情: 我们提供一个在GCP上运行的应用程序,其利益相关者都是我们组织内部的用户。这些用户的身份在我们的本地ADFS实现中得到控制,并同步到GCP,以便用于身份验证。 我们使用ADFS组授权访问应用程序的各个部分,这些身份可以添加到ADFS组中,我们再次将这些组成员身份同步到GCP。这些组可作为Google组()使用。在运行时,我们检查经过身份验证的用户是否是给定组的成员。这一切都很好 我想在我们的CI管道中运行测试,确

有谁能建议一种方法,让我可以作为不是CI管道中的服务帐户的命名用户运行测试

详情: 我们提供一个在GCP上运行的应用程序,其利益相关者都是我们组织内部的用户。这些用户的身份在我们的本地ADFS实现中得到控制,并同步到GCP,以便用于身份验证。 我们使用ADFS组授权访问应用程序的各个部分,这些身份可以添加到ADFS组中,我们再次将这些组成员身份同步到GCP。这些组可作为Google组()使用。在运行时,我们检查经过身份验证的用户是否是给定组的成员。这一切都很好

我想在我们的CI管道中运行测试,确保经过身份验证的用户可以做他们允许做的事情,而不能做他们不允许做的事情。以下是我想运行的一些测试:
*确保
gsutil ls allowed bucket
返回预期的blob列表
*确保
gsutil ls non-allowed bucket
无法访问指定的bucket
*确保可以通过
gcloud functions call function name

因此,我需要通过编程(即,不需要人工干预)作为给定Google组成员的用户进行身份验证。我提出了两种可能性:

  • 使用服务帐户并使用进行身份验证,但我找不到将服务帐户添加到相应的Google组的方法-因此该选项不起作用
  • 在我们的内部部署ADF中准备一个非特权用户,然后将其添加到相应的Google组中。不幸的是,我不认为有一种方法可以在没有人为干预的情况下作为该用户进行身份验证,因为它使用基于web的授权工作流。如果它需要人工干预,那么我不能在CI管道中使用它

当用户使用Google帐户进行身份验证时,会创建访问和刷新令牌(通常)。您可以保存刷新令牌以在代码中脱机生成新的访问令牌,该代码仅在3600秒内有效。有一个潜在的问题。谷歌安全监控用户帐户的使用,并可以阻止他们使用新设备。编辑您的问题,以显示您如何使用用户凭据-就像在实际的程序中一样。这将帮助我确定是否可以使用从用户凭据保存的令牌。谢谢@JohnHanley,我已经编辑了这个问题,以包括一些我想测试的示例场景。我不知道如何“注入”保存
gsutil
的令牌,因为我还没有尝试过。我写了一篇关于CLI如何在内部(数据库)存储凭据以及如何访问凭据的文章。除了自动化用户帐户是谷歌不支持的。昨天我写了另一篇关于用户帐户模拟服务帐户的文章。本文展示了如何使用PowerShell为用户帐户保存和重用刷新令牌。