您能从 Google Secrets Manager 机密中解析出 JSON 密钥吗?

您能从 Google Secrets Manager 机密中解析出 JSON 密钥吗?

考虑以下gcloud命令将 Google Secrets Manager 密钥注入到SERVICEGoogle Cloud Run 服务——使用机密Cloud Run 文档页面:

gcloud run services update SERVICE \
    --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION"

观察:注意如何设置你的ENV_VAR_NAME环境变量的值SECRET_NAME:VERSION秘密;但是问题:您可以从 Google Secrets Manager 机密中解析出 JSON 密钥吗?

例如,考虑mysecretsecret 设置为{"PASSWORD":"mylastname","TOKEN":"t0k3n"}像下面的 shell 会话所示:

$ gcloud secrets create mysecret --data-file=- <<<'{"PASSWORD":"mylastname","TOKEN":"t0k3n"}'
Created version [1] of the secret [mysecret].

然后你解析出来PASSWORD秘密钥匙与尊者jqlang/jq像这样的实用程序:

$ gcloud secrets versions access 1 --secret=mysecret \
    | jq --raw-output .PASSWORD
mylastname

但我认为明确地注入这一点会很酷PASSWORD密钥进入我的 Cloud Run 服务,而无需在 gcloud 之外进行任何 JSON 解析——从那时起,我就可以支持一对多 Secrets Manager 密钥与应用程序密钥比率。

我正在想象类似以下的事情:

gcloud run services update SERVICE \
    --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION:SECRET_KEY"

就我之前的例子来说,每个参数都映射到以下内容:

  1. ENV_VAR_NAMEPASSWORD
  2. SECRET_NAMEmysecret
  3. VERSION1
  4. ⭐️SECRET_KEYPASSWORD笔记:这是我的问题感兴趣的领域。

如果发生一些默认的 JSON 解析那就更好了。

您能从 Google Secrets Manager 机密中解析出 JSON 密钥吗?

这是我迄今为止尝试过的:

  1. 我读了命令的输出gcloud run services update --help——没有看到任何内容。
  2. 我粗略地看了一下https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets.versions/access页面——没有看到任何内容。
  3. 我打碎了优秀的BurntSushi/ripgrep我把这个实用程序放到我的~/google-cloud-sdk目录中rg set-secrets ~/google-cloud-sdk,看看是否能找到任何暗示 JSON 解析功能的彩蛋——但我还是没有找到任何东西。

猜测:看起来你不能用那个 gcloud 选项执行这种 JSON 解析操作--set-secrets;但我希望我错了。

答案1

我发现之前有一篇帖子也有同样的担忧,但他们在 AWS 上尝试了。黄大伟,他们需要将 secret 设置为 data.SecretString 以将其作为普通字符串。之后,必须将 JSON 字符串转换为 JSON 对象,以便可以通过属性名称访问信息。var

secret = {"username":"***","password":"***","engine":"mysql","host":"***.***.us-east-1.rds.amazonaws.com","port":3306,"dbname":"***","dbInstanceIdentifier":"***"}<br>;

const secretObj = JSON.parse(secret);

console.log(secretObj.host)

相关内容