1

我已经为功能的服务帐户提供了必要的权限(“Secret Manager Secret Accessor”),并且在部署后,firebase 功能能够毫无问题地访问这些秘密。

但是,在使用firebase servefirebase emulators:start --only functions本地开发时,我收到以下错误

未处理的错误错误:7 PERMISSION_DENIED:资源的权限“secretmanager.versions.access”被拒绝

我在文档中发现export GOOGLE_APPLICATION_CREDENTIALS=pathtoserviceaccount.json需要在终端中输入设置,尽管这对我也不起作用。

我会感谢所有的指点。干杯。

4

2 回答 2

3

我自己找到了答案:当函数在本地模拟时,默认情况下它们不会运行App Engine default service account,这也需要启用。所以我必须按照本教程https://firebase.google.com/docs/functions/local-shell

需要一个可以在 Google Cloud 的服务帐户设置中创建的App Engine default service account密钥,然后我必须输入

export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"

在终端。通过运行 thenfirebase emulators:start他们还获得了访问 Secret Manager 的权限。

因此,当我在正确的轨道上时,我导出了错误的服务帐户密钥,而不是允许运行访问 Secret Manager 的密钥。

于 2021-04-26T12:46:53.027 回答
0

为了从使用本地模拟器运行的 Firebase 应用程序访问 Secret Manager,您需要添加以下角色:

  • 您用于通过 Firebase 进行身份验证的帐户的“ Secret Manager Secret Accessor

firebase login您可以通过在本地 CLI 中运行:来验证它。

如果您已经登录,它应该以Already logged in as [email address].

此电子邮件地址是您需要添加角色的主要帐户。

正如您在问题中提到的那样,“firebase-adminsdk”服务帐户权限用于生产部署,但不在本地,除非您指定它:export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"

于 2022-02-15T17:08:23.913 回答