firebase - 在 firebase 函数部署上对 google cloud secret 的权限被拒绝

标签 firebase google-cloud-platform google-cloud-functions google-secret-manager

我有一个带有谷歌云功能的 firebase 项目,如下所示:

export const myFun = functions.region("europe-west1")
    .runWith({ timeoutSeconds: 10, secrets: ['MY_SECRET'] })
    .https.onCall((data, context) => {/*doStuff()*/});

该函数使用 MY_SECRET 访问数据库。当我从我的本地机器构建和部署这个功能到谷歌云时,一切都工作得很好。我可以访问它并从数据库中获得结果,一切都很好。

但是,我设置了一个 github 操作来为我将此功能部署到云中。为此,我将服务帐户设置为 github secret ,这样我就可以在 github 操作中运行 npx firebase-tools deploy。这一直有效,直到我将 secrets: ['MY_SECRET'] 添加到云函数。

本地还是可以部署成功,但是github action失败了:

Error: Failed to validate secret versions:
- FirebaseError HTTP Error: 403, Permission 'secretmanager.versions.get' denied for resource 'projects/my-project/secrets/MY_SECRET/versions/latest' (or it may not exist).

我确保 secret 确实存在于正确的谷歌云项目中,并且我在 github 中使用的服务帐户确实具有 Secret Manager Secret Accessor 角色,但我仍然遇到错误。

不过我注意到的一件事是,当我转到浏览器中的 secret 管理器并单击我的 secret 时,我看到:

资源 ID projects/123456789/secrets/MY_SECRET

错误说 projects/my-project/secrets/MY_SECRET/versions/latest

所以在构建步骤中,使用了项目名称,并且在 secret 管理器中我看到了项目 ID。不确定这是否相关,只是我注意到的...

为什么这不起作用?我试了几个小时,我变得绝望了,请帮忙 😎

最佳答案

...好的,在浪费了很多时间之后找到了解决方案...

事实证明,Secret Manager Secret Accessor 角色还不够,还需要 Secret Manager Viewer 角色! 🤦‍♂️🤦‍♂️🤦‍♂️

关于firebase - 在 firebase 函数部署上对 google cloud secret 的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71185253/

相关文章:

ios - 无法在 Swift 应用程序中导入 Firebase sdk

android - 云 Firestore : FAILED_PRECONDITION: The query requires an index

java - 如何通过 GMail API 使用 GSUITE 组 ID 发送电子邮件?

laravel - 在 Google App Engine 上部署 Laravel - 灵活

node.js - 从 firebase 下载文件并上传到 stripe 进行身份验证

csv - 如何将数据附加到Google云存储上的文件

node.js - 缺少 node-v59-linux-x64/grpc_node.node

ios - Firebase 查询和完成

python - .pb 文件的推理结果与 .h5 不匹配

node.js - 如何使用 Firebase Cloud Functions 检测环境是开发环境还是生产环境?