在 Google 的 App Engine 中加密和访问 Google 应用程序凭据的工作流程是什么?

What is the workflow to encrypt and access Google Application Credentials in Google's App Engine?

我知道 Google 云环境有大量的加密解决方案,但我最终 运行 一直在兜圈子,发现自己持有自己的密钥,而应用程序应该不知道它。

我目前的策略是:

  1. 访问我的 google 凭据作为 json 在本地持有。
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS']='<my_google_user>.json'
  1. 通过 Python 在 google 云中使用有效载荷设置我的秘密(为简洁起见,省略了较长的代码)

  2. 将我的秘密作为字典访问,以便稍后在代码中直接访问。

client = secretmanager.SecretManagerServiceClient()
sf_str = client.access_secret_version(request={"name":<my_version_name>}).payload.data.decode("utf-8")
sf_cred = json.loads(sf_str)

所以我的问题是如何加密我的 google 应用程序凭据 json?

我对这种涉及加密的环境和工作流还很陌生,所以请使用 python 或云终端示例准确说明。随意敲打我的策略整体的安全性,以便我学习更好的策略。

P.S。如果这是一个步骤,我已经在 Google Cloud Platform 中创建了一个加密密钥,但不知道如何 use/automate 在我想用于设置此密码访问的这个 12 小时重复任务中。

不确定我是否正确理解你的问题。

您可能根本不需要凭据文件。

您在云端的代码由 App Engine、Cloud Function 或 Cloud 运行 等在某个服务帐户下执行。它可以是默认服务帐户,也可以是专门创建的服务帐户。例如:Using the Default App Engine Service Account

为了访问 Secret Manager 中的机密,可能足以 add/assign 相关 IAM 角色到执行代码以访问这些机密的服务帐户。例如 - 将 IAM 角色添加到默认应用引擎服务帐户。

此处描述了 Secret Manager IAM:Access control

很可能一个 roles/secretmanager.secretAccessor 角色就足够了。在这种情况下,您的代码将能够获取秘密值,并随后使用它。