当前位置: 首页 > 知识库问答 >
问题:

无法分配IAM.ServiceAccounts.SignBlob权限

满雨石
2023-03-14

TLDR;我无法将IAM权限分配给服务帐户。

我正在构建一个测试,涉及用firebase身份验证铸造自定义令牌。当我击中:

  const token = await admin.auth().createCustomToken('test', {
    isAdmin: true,
  })

将引发以下错误

Permission iam.serviceAccounts.signBlob is required to perform
this operation on service account 
projects/-/serviceAccounts/dashboard@appspot.gserviceaccount.com.;
Please refer to 
https://firebase.google.com/docs/auth/admin/create-custom-tokens
for more details on how to use and troubleshoot this feature

我可以验证我的权限设置是否正确,当我运行GCloud projects get-iam-policy project时,我可以看到我的服务帐户附加到所需的角色

- members:
  - serviceAccount:dashboard@appspot.gserviceaccount.com
  role: roles/iam.serviceAccountTokenCreator

但是,如果我查看特定的服务帐户,它似乎显示为空,这与我的错误相符:

gcloud iam service-accounts get-iam-policy dashboard@appspot.gserviceaccount.com
etag: ACAB
  • 为什么这两个命令&云控制台会显示不同的信息?

我假设导致我的服务帐户权限显示为空白的任何东西都是罪魁祸首,但我不确定在哪里进一步调试。在我看来,唯一的区别是一个命令是用其中的项目调用的,但我用项目id初始化了我的firebase应用程序,并用(firebase-admin).apps[0].options验证了它,所以这似乎是一个死胡同。

共有2个答案

巢德华
2023-03-14

Firebase在其文档中提到了此错误:

https://firebase.google.com/docs/auth/admin/create-custom-tokens#failed_to_determine_service_account

必须通过JSON配置文件正确初始化应用程序。

一个简单的解决方法是:

  1. 转到https://console.cloud.google.com/iam-admin/iam?project=project_name
  2. 编辑您的默认服务帐户。
  3. 添加角色服务帐户令牌创建者

几分钟后,您的项目将能够创建签名令牌。

慕容宇
2023-03-14

服务帐户的签名功能需要iam.ServiceAccounts.SignBlob权限。此权限包含在服务帐户令牌角色角色/iam.ServiceAccountTokenCreator

您可以在“项目”级别或“服务帐户”级别分配此角色。这就是为什么你会看到不同的结果。在项目级别分配角色会影响所有服务帐户的权限。在服务帐户上分配角色只影响该服务帐户。

问题的关键是调用方在服务帐户dashboard@appspot.gserviceaccount.com上没有此角色。您已授予服务帐户权限,而未授予呼叫者权限。查看用于设置Firebase SDK的服务帐户的代码。

 类似资料:
  • 主要内容:一、删除默认权限,二、案例:开发人员拥有读写权限,三、案例:测试人员拥有读权限给仓库下的每个目录分配权限对访问进行控制。 一、删除默认权限 删除系统安装后默认权限:   二、案例:开发人员拥有读写权限 进入权限分配界面: 添加组或用户: 分配权限: 继承父目录权限、不可访问、读权限、读/写权限 访问时输入账号: 登陆测试是否有读/写权限: 三、案例:测试人员拥有读权限 登陆测试是否有读/写权限:

  • 我需要分配在OSGi包的许可使用 } 尽管此权限出现在活动权限列表中,但当我从d:\temp文件夹安装并启动捆绑包时,它会导致一个异常,说明无法解决此问题: 我使用的例子来自《OSGI在行动》一书的第14章,我的osgi实现是Equinox(org . eclipse . OSGI _ 3 . 7 . 2 . v 20120110-1415 . jar),启动OSGi的命令行是 似乎缺少了一些东西

  • 有三种处理自由代码和文档版权所有权的方法,许多人为此做出了贡献。第一种是完全无视版权的问题(我不建议如此)。第二种方法是从项目中工作的每个人那里收集一个贡献者许可证协议(CLA),明确项目对使用个人贡献的权利。这通常对大多数项目已经足够了,更好的是在一些司法权中,CLA是可以通过email发送的。第三种方法是从贡献者那里获得真正的版权协议,这样项目(例如一些法律实体,通常是非盈利)就是所有东西的版

  • 实际上,我正在尝试创建一个应用程序,有n个多媒体文件,其中包括图像和视频。我的应用程序大小大约为,我的资产大小大约为。当我在普通设备上加载应用程序时,我们没有遇到任何问题,但在具有的设备上,如等,应用程序在过程中崩溃,错误是“内存不足”。我已经用这个生成了错误报告。我也尝试过位图工厂。同时,我使用了数组的视频方法。 有谁能帮助解决这个问题吗? 致命异常:主进程:com.example.we.app

  • 问题内容: 我刚从python移植了我的应用程序,所以Go有点新。看来我遇到了记忆问题。 它在ubuntu机器上运行。通过主管。 编辑: 设置解决问题 问题答案: 对于遇到此问题的其他人,这是golang问题中的相关近期问题 对于所有受影响的人,在Linux上得到适当修复之前的临时替代方法可以是以下之一: 启用无条件过量使用: 能够无条件过载:添加交换到你的主机,用它几乎永远不会被使用,但在计算参

  • 问题内容: 我的任务是编写一个程序,要求用户输入5个存储在列表中的名称。接下来,它随机选择这些名称之一,并宣布该人为获胜者。唯一的问题是,当我尝试运行它时,它说。 这是我的代码: 我必须能够生成一个随机名称。 问题答案: 操作员的左侧需要为变量。您在这里所做的就是告诉python:“您知道数字1吗?将其设置为输入的字符串。”。是文字数字,而不是变量。始终是,您无法将其“设置”为其他内容。 变量就像