首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨项目PubSub通过IAM ServiceAccount订阅

跨项目PubSub通过IAM ServiceAccount订阅
EN

Stack Overflow用户
提问于 2016-02-29 07:24:07
回答 1查看 2K关注 0票数 0

我有两个项目--A项目和B项目。

在Project上,我有一个服务帐户loader@project-a.iam.gserviceaccount.com,我想使用它来读取来自Project主题的消息。

我在Project projects/project-b/subscriptions/data上创建了一个主题订阅。然后在权限选项卡中添加loader@project-a.iam.gserviceaccount.com作为Subscriber。我相信它应该能让我进入。

但如果我尝试:

代码语言:javascript
运行
复制
TestIamPermissionsRequest iamreq = new TestIamPermissionsRequest();
iamreq.setPermissions(Arrays.asList(
        "pubsub.subscriptions.consume",
        "pubsub.subscriptions.get"
));
pubsub.projects().subscriptions()
        .testIamPermissions(topicSubscription, iamreq).execute();

它返回权限的空列表。

对于实际的拉请求:

代码语言:javascript
运行
复制
PullRequest pull = new PullRequest();
pull.setMaxMessages(1);
pull.setReturnImmediately(true);
pubsub.projects().subscriptions().pull(topicSubsription, pull).execute();

它失败了,因为:

代码语言:javascript
运行
复制
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "User not authorized to perform this action.",
    "reason" : "forbidden"
  } ],
  "message" : "User not authorized to perform this action.",
  "status" : "PERMISSION_DENIED"
}

我已经双倍地检查了订阅者列表中的服务帐户,也尝试删除/再添加它,等等。这不会改变任何事情。

如果我在同一个云项目下有PubSub主题订阅和服务帐户,那么它对testIamPermissionspull请求都很好。这是否意味着帐户不能用于从另一个项目访问PubSub?

请注意,它可以很好地从其他项目的存储访问。这意味着这个问题仅限于PubSub。这就是为什么我认为我错过了PubSub配置方面的一些东西。但到底是什么?

EN

回答 1

Stack Overflow用户

发布于 2016-03-03 06:55:29

若要使用主题订阅角色,应将“订阅者”授予订阅。不幸的是,现在无法使用云控制台。

问题是Console是误导的,我希望通过选择一个主题来设置对主题订阅的权限(毕竟没有单独的主题订阅UI )。但是它不是这样工作的,权限表单只对选定的主题应用更改,而忽略了所有现有的主题订阅。基本上,您不能查看或编辑订阅者权限,目前没有这样的UI。

不过,有一种方法可以通过API来实现。但这不适合我的情况

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35693962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档