我已經按照本教程進行操作: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 clientstorageClient, err := storage.NewClient(ctx)if err != nil { log.Fatal(err)}....
2 回答

Qyouu
TA貢獻1786條經驗 獲得超11個贊
對于您的第一個問題:發生這種情況的原因可能是這些應用程序使用您為各自項目創建的相同服務帳戶。在這種情況下,您需要確保這些應用程序不使用上述服務帳戶。
對于第二個問題:您可能會嘗試在組織級別使用一個服務帳戶。這些服務帳戶將由組織中的所有項目繼承。您可以授予服務帳戶那些滿足您要求的角色或權限
對于您的第三個問題:如果您使用組織級服務帳戶,它們對所有項目都是“全局的”

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
這就是我發現的作品。直到我聽說它不正確或不理想,這就是我前進的方式:
遵循“存儲機密”教程 ( https://cloud.google.com/kms/docs/store-secrets )。
請注意,在創建教程中的兩個帳戶時,不會自動創建服務帳戶,因為默認情況下沒有計算或應用引擎實例。
轉到 kms 存儲項目的 IAM,并添加任何其他項目以及您希望有權訪問以下載加密機密的應用程序。通過他們的服務帳戶電子郵件添加他們,并具有查看存儲桶的角色。
轉到 IAM 的 kms 管理項目,并通過他們的服務帳戶電子郵件對包含您想要解密共享機密的應用程序的任何項目執行相同的操作。
對于 Localhost 開發,在啟動服務之前使用“gcloud auth application-default login”。
- 2 回答
- 0 關注
- 147 瀏覽
添加回答
舉報
0/150
提交
取消