gpt4 book ai didi

google-app-engine - 我应该如何创建服务帐户以使用 Google KMS 在 GCP 项目之间访问 secret ?

转载 作者:IT王子 更新时间:2023-10-29 01:56:35 26 4
gpt4 key购买 nike

我已遵循本教程:https://cloud.google.com/kms/docs/store-secrets

我的下一步是让我的应用程序从存储桶中读取我的 secret 文件并在运行时安全地解密。这些应用程序在各种项目(暂存、开发、生产等)中运行。

我一遍又一遍地阅读了服务帐户文档,但不太理解正确的前进方向。

我发现只需将服务帐户添加到教程中的 MY_KMS_PROJECT 和 MY_STORAGE_PROJECT 即可。我将它们设置为有权读取存储桶和解密 KMS key 。只需创建这些服务帐户,突然之间其他项目中的应用程序就可以读取和解密。它应该如何工作?

我认为我必须为每个我想要访问教程中的 KMS 项目的项目创建一个服务帐户?或者以某种方式使用 IAM 来授予访问权限?例如,我如何授予对某些项目中的某些应用程序的访问权限,而不是其他项目?

我现在正尝试在我的本地开发环境中运行时授予对应用程序的访问权限,这通常需要下载服务帐户并将 GOOGLE_APPLICATION_CREDENTIALS 指向该文件。但是从 MY_KMS_PROJECT 或 MY_STORAGE_PROJECT 下载服务帐户对我来说似乎很奇怪,特别是因为我已经有一个用于访问 firebase 的服务帐户。服务帐户是否以某种方式对所有项目都是全局的?它们可以结合吗? GOOGLE_APPLICATION_CREDENTIALS 似乎只适用于指向单个服务帐户。

注意:我的大部分应用程序都在 google app engine standard 或 flexible 上运行。

这是我的项目中应用程序的代码,如上所述“正常工作”:

client, err := google.DefaultClient(ctx, cloudkms.CloudPlatformScope)
if err != nil {
log.Fatal(err)
}

// Create the KMS client.
kmsService, err := cloudkms.New(client)
if err != nil {
log.Fatal(err)
}
....

访问存储桶:

// Create the storage clientstorage
Client, err := storage.NewClient(ctx)
if err != nil {
log.Fatal(err)
}
....

最佳答案

第一个问题:发生这种情况的原因可能是这些应用程序使用您为各自项目创建的相同服务帐户。在这种情况下,您需要确保这些应用程序不使用上述服务帐户。

第二个问题:您可能会尝试在组织级别使用一个服务帐户。这些服务帐户将由组织中的所有项目继承。您可以授予服务帐户那些满足您要求的角色或权限

第三个问题:如果您使用组织级服务帐户,它们对所有项目都是“全局的”:您可以查看此文档,您可能会在其中找到有关 service accounts 的有值(value)信息。和 organization

请告诉我您的想法以及进展情况。

关于google-app-engine - 我应该如何创建服务帐户以使用 Google KMS 在 GCP 项目之间访问 secret ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53857357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com