问题标签 [google-secret-manager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1191 浏览

gcloud - 如何通过 gcloud shell 在 Cloud Run 部署中正确使用 Secret Manager 中的密钥

我正在尝试为我构建一个 gcloud 脚本来部署我的云运行服务。该服务可以访问托管的 MongoDB,因此我必须通过环境变量提供密码凭据。

我想通过秘密管理器传递这个密码。我通过 GCP 控制台这样做:

在此处输入图像描述

所以秘密名称是mongodb-password和值mypassword。现在我按照gcloud 运行文档 ( https://cloud.google.com/sdk/gcloud/reference/run/deploy ) 了解如何将密钥添加到运行服务部署中。

在设置机密部分中解释了以下内容:

指定要挂载或作为环境变量提供的机密。以正斜杠“/”开头的键是挂载路径。所有其他键对应于环境变量。与这些相关的值应采用 SECRET_NAME:KEY_IN_SECRET 的形式;您可以省略密钥中的密钥以指定密钥中所有密钥的安装。例如:'--update-secrets=/my/path=mysecret,ENV=othersecret:key.json' 将创建一个带有秘密 'mysecret' 的卷,并将该卷挂载到 '/my/path'。因为没有指定密钥,所以将包括“mysecret”中的所有密钥。还将创建一个名为 ENV 的环境变量,其值为 'othersecret' 中的 'key.json' 的值。最多可以指定其中之一

这让我有些困惑。我不知道KEY_IN_SECRET是什么意思。秘密名称显然是mongodb-password但我不知道我现在如何引用秘密的值。

我试图弄清楚是否有关于如何定义秘密值的约定。也许像key=value. 但没有任何说明我必须那样做。

所以现在我想知道我应该为命令的--set-secrets=[KEY=VALUE,…]标志做些什么gcloud run deploy

根据给出的信息,我只能这样做:

我知道这是错误的,但我想解释一下现在让我感到困惑的是什么

0 投票
3 回答
286 浏览

google-cloud-build - PROJECT_ID env 和 Secret Manager 访问

我想在云构建步骤中使用 Secret Manager 将凭证存储到我们的工件。我让它使用类似于以下的构建工作:

一切都很好,没有问题 - 然后我尝试稍微改进它:

但随后它抛出错误: ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: failed to get secret name from secret version "projects/$PROJECT_ID/secrets/TEST-SECRET/versions/1"

我已经能够添加一个 TRIGGER 级别的环境变量(SECRET_MANAGER_PROJECT_ID),并且效果很好。唯一的问题是触发环境,它在重建时不可用,这会破坏很多东西。

有谁知道如何在不使用触发器参数的情况下从 CloudBuild 中获取 Secret Manager 的 PROJECT_ID?

0 投票
1 回答
1384 浏览

node.js - 将环境变量从 Google 的 Secret Manager 加载到在 Google Cloud Run 上运行但未通过 Cloud Build 部署的 Docker 容器中?

我目前正在使用 Google 的 Cloud Run 作为 docker 容器交付 node + nestjs 应用程序。

我正在将秘密管理器用于秘密并使用项目进行开发/登台/生产,并且我正在尝试使秘密可用于我在云中的容器。

当前进程由触发一系列 bash 脚本的“yarn docker:auth”触发:

最后一个命令上的参数/标志也不起作用,每次运行时都会提示我选择一个平台和区域。

我已经尝试将标志添加到我的 auth.yaml 文件以及 Google Cloud Build 文档中举例说明的秘密,但由于语法错误,每次都失败。

在 yaml 文件中,我在嵌套在 no 属性下的 yaml 文件底部添加了以下内容:

我的问题是:

  • 是否可以通过 YAML 做到这一点?

我还在我的 nodejs 应用程序中添加了一个启动功能,该功能尝试使用@google-cloud/secret-managernpmjs 将机密加载到环境中。使用默认凭据在本地执行此操作没有问题,但是:

  • Cloud run 中的 docker 容器是否有任何类型的“默认”凭据?如果没有,注入它的最佳方法是什么?使用服务帐户密钥文件构建或运送容器似乎是一种不好的做法。

我试图解决的基本问题是将这些秘密带入容器环境。

谢谢你。

编辑:

想要添加我将服务帐户分配给云运行容器的 YAML 部分:

但遗憾的是,这仍然会导致这个一般错误:

日志本身中绝对没有更多细节,空白!由于没有注入服务帐户,容器不会在本地启动,但是如果没有处理秘密加载的那段代码,容器在本地启动就好了。

0 投票
1 回答
242 浏览

kubernetes - 如何将来自 Google Secret Manager 的秘密注入 K8s pod?

将来自 Google Secret Manager 的密钥注入 Kubernetes 部署的最佳实践是什么?我已将 Grafana 实例的管理员密码存储到 Google Secret Manager 中。Grafana 实例是使用 Google Kubernetes Engine 上的 helm chart 部署的。我确实尝试过使用kube-secrets-init,这是一个 Kubernetes 变异准入 webhook,它会变异任何引用秘密 Google Secret Manager 的 K8s Pod。我按照说明进行操作,但是在部署 Grafana 实例时,出现以下错误:

这是用于部署 mutating webhook 的文件:

0 投票
1 回答
524 浏览

google-cloud-platform - 无法从 Dataproc sparkjob 访问 GCP Access Secret Manager

我正在尝试从 dataproc spark 作业中获取 GCP 机密管理器机密。但我收到错误“线程“主”java.lang.NoClassDefFoundError:com/google/cloud/secretmanager/v1/AccessSecretVersionResponse 中的异常”。我在 dataproc spark 作业依赖项中添加了罐子“google-cloud-secretmanager-1.4.2.jar”和“gax-1.62.0.jar”。

我正在使用下面 GCP 链接中提到的代码。 https://cloud.google.com/secret-manager/docs/reference/libraries

我在这里错过了什么吗?

0 投票
1 回答
109 浏览

javascript - 用于检索 Google Secret Manager 变量的 asnyc 函数返回待处理的承诺

我正在尝试将环境变量切换到 Google Secrets Manager,但遇到了问题。我正在运行一个 expressjs api 试图建立一个数据库连接。但无论我尝试什么,它只会返回Promise { <pending> }而不是等待异步函数完成。非常感谢任何帮助!

gcloud.js

配置.js

0 投票
1 回答
334 浏览

c# - 使用 dotnet 5 访问 GCP 机密管理器时出现问题

我在我的 .NET 5 aspnet 核心应用程序中使用 Google.Cloud.SecretManager.V1。我正在容器化应用程序以在 GCP Cloud 上作为 linux 容器运行。创建 SecretManagerServiceClient 时出现以下异常

如果我使用 aspnetcore 3.1 图像,相同的代码可以正常工作。NET 5 应该是 .NET core 3.1 的升级,并且向后兼容。所以,我很好奇,可以做些什么来使这段代码在 .NET 5 上运行

0 投票
1 回答
176 浏览

javascript - GCP SecretManager DEADLINE_EXCEEDED 错误代码 4

由于我更改了 Internet 提供商,因此我无法再访问 GCP SecretManager 值。获得超时响应需要 10 分钟(60000 毫秒)。我试图用可选参数来减少它,但它不起作用,它被忽略了。难道我做错了什么 ?

在此处输入图像描述

顺便说一句,它在 Docker 中运行良好,在同一台机器上。

我的环境是:Windows 10,使用 WSL2 Ubuntu 20.04 版本。

这是代码:

0 投票
2 回答
663 浏览

docker - 如何将来自 Google Secret Manager 的秘密作为环境变量注入 Kubernetes Pod?

我正在尝试将 Google Secret Manager 中的秘密作为环境变量注入 Kubernetes Pod。

我需要把它作为环境变量让我的 NodeJS 应用程序可以读取它。

我尝试了如何将来自 Google Secret Manager 的秘密作为环境变量注入 Kubernetes Pod 中的解决方案?但不适合我。

我也尝试设置一个 init 容器,但它将秘密作为文件放入 pod。

任何想法?

谢谢

0 投票
1 回答
1679 浏览

node.js - 错误:16 UNAUTHENTICATED:请求具有无效的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据

我使用 Google Secret Manager 的 Node.js 代码停止工作(前段时间运行良好)。我已将GOOGLE_APPLICATION_CREDENTIALSenv 变量设置为有效路径和console.log(process.env.GOOGLE_APPLICATION_CREDENTIALS);正确打印。我什至尝试重新生成新的 .json 文件,但仍然出现相同的错误。最初它没有 keyFilename,但两者都给出相同的结果,错误。密钥在管理网站中启用。我也试过打电话await client.initialize();

有没有办法对此进行更多调试?最近从冬季到夏季的时间变化会产生影响吗?但是为什么重新生成的密钥不起作用呢?

完整的错误堆栈: