问题标签 [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 回答
4454 浏览

continuous-integration - 从 Google Cloud Build 访问存储在 Google Secret Manager 中的环境变量

如何从 Google Cloud Build Pipeline访问我在Google Secret Manager中定义的变量?

0 投票
2 回答
141 浏览

google-cloud-platform - 有没有办法在谷歌秘密管理器中对服务帐户访问特定秘密进行改造

我看到这里有一些活动来为 Terraform 添加秘密管理器支持: https ://github.com/terraform-providers/terraform-provider-google/issues/5168

我正在寻找一种以编程方式将秘密访问权限分配给特定 Google 服务帐户的方法。我猜这个功能还没有?

0 投票
2 回答
1468 浏览

google-cloud-platform - 如何通过 Cloud Build 访问 GSM Secret 并传递给 Cloud Function

使用 Cloud Build 时,如何将密钥从 Google Secrets Manager (GSM) 传递到 Cloud Function?下面的cloudbuild.yaml包含三个步骤。此外,我正在使用volumes在构建步骤之间创建永久存储。我可以通过 Cloud Build 确认 GSM 检索。但是,当我尝试使用 yaml 格式传递秘密时,--env-vars-file遇到以下错误...

cloudbuild.yaml:

更新: 不需要使用卷,因为/workspaceCloud Build 中的步骤之间的永久存储也是如此。此外,gcloud components update不再需要,因为截至今天,默认的 Cloud SDK 版本是 279.0.0

一个解法:

0 投票
1 回答
2413 浏览

node.js - 在节点 js 中访问谷歌云秘密管理器数据以进行数据库连接

我们有一个 nodejs 应用程序,其中我们的基本要求是不使用config.json文件中的硬编码数据库密码,而是从Google Cloud Secret Manager读取它,我可以从那里获取该秘密值。

但是当我尝试通过异步函数在我的模型/index.js中使用它时,我得到了Promise { pending }错误。

这是我的secret_manager.js文件:

下面是我在 index.js 文件中的代码:

当我启动服务器时,这是我的输出:

我如何在 index.js 中使用我的秘密管理器值来续集数据库连接

0 投票
4 回答
3918 浏览

python-3.x - __init__.py 中的 google.cloud 命名空间导入错误

我已经阅读了至少十几个不同的 stackoverflow 问题,这些问题都存在相同的基本问题并具有相同的基本答案:模块安装不正确或 OP 导入错误。

在这种情况下,我正在尝试做from google.cloud import secretmanager_v1beta1.

airflow dags当我跑步或跑步时,它在我的气流容器中工作pytest tests/dags/test_my_dag.py。但是,如果我运行cd dags; python -m my_dagcd dags; python my_dag.py收到此错误:

我可以from google.cloud import bigquery在此行正上方添加行,并且可以正常工作。从字面上看,这似乎只是这个特定软件包的一个问题。

为什么 pytest 和气流命令成功很重要?因为,我有另一个环境,我试图从命令行运行数据流作业,我得到了同样的错误。不幸的是,出于多种原因,我认为我无法在该环境中绕过此错误。

更新 6

我已将错误范围缩小到文件中的google.cloud命名空间和该命名空间secretmanager内的包的问题__init__.py

如果我添加from google.cloud import secretmanagerairflow/dags/__init__.py然后尝试运行python -m dags.my_dag.py,我会收到此错误,但堆栈跟踪略有不同:

旧信息

我 95% 确定它仍然是路径问题,并且 pytest 和气流正在修复我不知道的问题,当我尝试手动运行 python 脚本时没有处理。

我尝试过的事情:

更新

根据评论中的要求,以下是以下内容requirements.txt

我不小心省略了--user上面 pip 和 python 安装命令示例中的标志。--user在我的容器环境中,所有内容都使用而不是全局目录安装到用户的主目录中site-packages

更新 2

我已将以下代码添加到生成错误的文件中:

来自airflow list_dags

来自python my_dag.py

更新 3 tree airflow/dags

更新 4

我尝试修复它,以便sys.path在运行时看起来与运行python dags/my_dag.py时相同airflow list_dagspytest test_my_dag.py.

仍然得到同样的错误。

查看更新版本的文档,我注意到您应该能够做到from google.cloud import secretmanager. 这给了我相同的结果(适用于气流和 pytest,而不是在尝试直接运行时)。

在这一点上,我最好的猜测是它与命名空间魔法有关,但我不确定?

0 投票
2 回答
681 浏览

python - 如何使用正确的 Vision API 凭据获取 Google App Engine?

语境:

我有一个本地工作的 Python Flask 应用程序,它使用 Google Vision API 来检测照片中的标签。

为了使用 Google Vision API,我使用了一个GOOGLE_APPLICATION_CREDENTIALS环境变量。我有一个"google-secret.json"本地存储的密钥,我用它来设置GOOGLE_APPLICATION_CREDENTIALS具有以下两行的变量:

以上使我能够在本地成功运行此行:

我正在使用 Google Cloud Build 将此应用程序自动部署到 Google App Engine 标准环境中。我已*google-secret.json包含在我的.gitignore文件中,因此我的密钥不会公开,并且我有来自远程 GitHub 存储库的 Google Cloud Build 源。

我是创建自动构建/部署管道的新手,我正在尝试了解如何让我的 Google App Engine 应用程序GOOGLE_APPLICATION_CREDENTIALS在构建时自动设置环境变量,或者以其他方式访问相关凭据,以成功创建vision.ImageAnnotatorClient().

我对任何可行的方法持开放态度。我已经在互联网上搜索了几天,但无法解决这个问题。

我目前追求的解决路径:Google Secret Manager API。

我可以在本地使用 Google Secret Manager API 访问具有我的应用程序使用 Google Vision API 所需的 json 密钥的秘密版本。但我面临两个问题:

  1. 我需要使用 .json 机密文件作为密钥来获得通过 Google Secret Manager API 访问机密的权限,所以这重新提出了我最初试图解决的相同问题:弄清楚如何自动设置和访问Google Cloud Build / Google App Engine 应用程序上的 json 密钥。
  2. 当我通过 Google Secret Manager API 检索密钥时,我不知道如何将其转换为vision.ImageAnnotatorClient().

对于问题 2:通常,我不会对vision.ImageAnnotatorClient(). 相反,它将从前面的行中获取凭据:

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "google_secret.json"

如果我尝试将 Google Secret API 有效负载转换为 .json 文件,我会这样做:

然后将其写入文件:

但是运行时出现以下错误

您能提供的任何帮助将不胜感激!

0 投票
0 回答
583 浏览

google-cloud-platform - Terraform 将现有 GCP 机密检索为数据

尝试实现一个数据模块来引用 Terraform 的“机器人帐户”。

我收到以下错误:

使用以下main.tf

keydataModule.tf:_

以下variables.tf用于创建“Terra Auth”变量:

最后是一个terraform.tfvars文件,在这种情况下,它包含我的 GCP 帐户中的秘密名称:

0 投票
2 回答
2519 浏览

google-cloud-platform - 有没有办法在 GCP 中存储机密,类似于 Azure 保险库?

我一直在尝试找到一种在 GCP 中存储机密的方法。我探索了 Google Cloud KMS。它似乎仅用于创建加密密钥,可用于加密 GCP 存储元素。或者,也许我错过了什么。我也看到了,有一种方法可以整合 Hashicorp 保险库。但是,我一直在寻找 GCP 本身的解决方案,比如 Azure Vault。我的最终目标是在某处存储一个秘密并在云函数中使用它。

任何帮助,将不胜感激。谢谢!

0 投票
1 回答
100 浏览

google-secret-manager - Google Secret Manager - 可以用于存储 API 用户的用户名和密码吗?

考虑一个接收 HTTPS 请求并使用 HTTP 基本身份验证的 API。每当收到请求时,应用程序都需要检查标头中的用户名/密码组合是否有效。可能有成千上万的用户,每个用户都有自己的密钥。

我想知道 Google Secret Manager 是否适合这个用例。那是:

  • 我可以将每个 API 用户名/密码存储在 Secret Manager 中,使用用户名作为秘密 ID。
  • 然后,每当有请求进入时,应用程序将:(1) 查找 Authorization 标头中存在的用户名的凭据,(2) 将标头密码与从 Secret Manager 检索到的密码进行比较,(3) 如果存在则拒绝请求是不匹配。

对于上述案例,Google Secret Manager 是否有效且可取?

0 投票
1 回答
1168 浏览

google-cloud-platform - 在 Google Secret Manager 中存储二进制数据

我第一次使用Google Secret Manager来存储一些二进制数据。当我访问秘密时,它似乎有不同的编码或格式。

实际数据是一个证书包,但我已经能够使用较小的二进制数据重现该问题。重现步骤:

  1. 创建一个包含二进制数据的文件:

    /li>
  2. 创建密钥和版本:

    /li>
  3. 访问密钥并将结果保存到文件中:

    /li>
  4. 比较两个文件:

    /li>

为什么结果不一样?我是否需要做一些额外的事情才能让 Google Secret Manager 处理二进制数据?