我已经按照本教程进行操作:https ://cloud.google.com/kms/docs/store-secrets
我的下一步是让我的应用程序从存储桶中读取我的机密文件并在运行时安全地解密。这些应用程序在各种项目(暂存、开发、生产等)中运行。
我一遍又一遍地阅读服务帐户文档,但不太了解正确的前进方向。
我发现有用的是简单地将服务帐户添加到教程中的 MY_KMS_PROJECT 和 MY_STORAGE_PROJECT。我将它们设置为有权读取存储桶和解密 KMS 密钥。只需创建这些服务帐户,突然之间其他项目中的应用程序就可以读取和解密。它应该如何工作?
我以为我必须为每个我想从教程中访问 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)
}
....
Qyouu
幕布斯7119047
相关分类