Google 本地模拟功能的 Secret Manager 权限
Google Secret Manager Permissions For Local Emulating of Functions
我已经为功能的服务帐户提供了必要的权限 ('Secret Manager Secret Accessor'),并且在部署时,firebase 功能能够毫无问题地访问机密。
但是,在本地开发中使用 firebase serve
或 firebase emulators:start --only functions
时,出现以下错误
Unhandled error Error: 7 PERMISSION_DENIED: Permission 'secretmanager.versions.access' denied for resource
我在文档中发现需要在终端中输入设置 export GOOGLE_APPLICATION_CREDENTIALS=pathtoserviceaccount.json
,尽管这对我也不起作用。
感谢所有指点。干杯。
我自己找到了答案:
当函数在本地模拟时,默认情况下它们不会通过 App Engine default service account
获得 运行,这也需要启用。
所以我不得不按照这个教程 https://firebase.google.com/docs/functions/local-shell
App Engine default service account
需要一个可以在 Google Cloud 的服务帐户设置中创建的密钥,然后
我必须输入
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
在终端中。通过 运行ning 然后 firebase emulators:start
他们也获得了访问 Secret Manager 的权限。
所以当我在正确的轨道上时,我导出了错误的服务帐户密钥,而不是允许 运行 访问 Secret Manager 的密钥。
为了从您的 Firebase 应用程序 运行 本地模拟器访问 Secret Manager,您需要添加以下角色:
- "Secret Manager Secret Accessor" 到 您的帐户 用于通过 Firebase
进行身份验证
您可以通过 运行: firebase login
在本地 CLI 中验证它。
如果您已经登录,它应该响应 Already logged in as [email address]
。
此电子邮件地址是您需要将角色添加到的主帐户。
正如您在问题中提到的,“firebase-adminsdk”服务帐户权限用于生产部署,但不用于本地,除非您指定它:export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
我已经为功能的服务帐户提供了必要的权限 ('Secret Manager Secret Accessor'),并且在部署时,firebase 功能能够毫无问题地访问机密。
但是,在本地开发中使用 firebase serve
或 firebase emulators:start --only functions
时,出现以下错误
Unhandled error Error: 7 PERMISSION_DENIED: Permission 'secretmanager.versions.access' denied for resource
我在文档中发现需要在终端中输入设置 export GOOGLE_APPLICATION_CREDENTIALS=pathtoserviceaccount.json
,尽管这对我也不起作用。
感谢所有指点。干杯。
我自己找到了答案:
当函数在本地模拟时,默认情况下它们不会通过 App Engine default service account
获得 运行,这也需要启用。
所以我不得不按照这个教程 https://firebase.google.com/docs/functions/local-shell
App Engine default service account
需要一个可以在 Google Cloud 的服务帐户设置中创建的密钥,然后
我必须输入
export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"
在终端中。通过 运行ning 然后 firebase emulators:start
他们也获得了访问 Secret Manager 的权限。
所以当我在正确的轨道上时,我导出了错误的服务帐户密钥,而不是允许 运行 访问 Secret Manager 的密钥。
为了从您的 Firebase 应用程序 运行 本地模拟器访问 Secret Manager,您需要添加以下角色:
- "Secret Manager Secret Accessor" 到 您的帐户 用于通过 Firebase 进行身份验证
您可以通过 运行: firebase login
在本地 CLI 中验证它。
如果您已经登录,它应该响应 Already logged in as [email address]
。
此电子邮件地址是您需要将角色添加到的主帐户。
正如您在问题中提到的,“firebase-adminsdk”服务帐户权限用于生产部署,但不用于本地,除非您指定它:export GOOGLE_APPLICATION_CREDENTIALS="path/to/key.json"