在Google Cloud中,如何为每个功能设置PubSub的发布权限?

时间:2018-10-10 09:09:57

标签: google-cloud-platform

我目前正在从事GCP项目,我需要尝试实现以下目标。

我需要以某种方式限制哪些GCP功能可以发布到哪些GCP主题?

有人知道我如何实现这一目标吗?

谢谢

Tom Early

4 个答案:

答案 0 :(得分:0)

当您希望发布消息时,请指定发布消息的主题。这意味着消息将仅发布到该特定主题,而不会发布到其他主题。如果在发布到特定主题的消息方面需要更多帮助,可以查看与发布消息here相关的文档。

答案 1 :(得分:0)

Cloud Functions以PROJECT_ID@appspot.gserviceaccount.com运行,并具有该服务帐户的权限。因此,如果希望不同的功能具有不同的权限,则必须在单独的项目中创建它们。例如,您可能有:

  • 项目abc中的功能abc-proj
  • 项目xyz中的功能xyz-proj
  • 项目a-topic中的发布/子主题z-topicpubsub-proj
  • projects.topics.publish授予主题a-topic(在pubsub-proj中的abc-proj@appspot.gserviceaccount.com权限
  • projects.topics.publish授予主题z-topic(在pubsub-proj中的xyz-proj@appspot.gserviceaccount.com权限

然后您将拥有功能abc能够发布到pubsub-proj/a-topic和功能xyz能够发布到pubsub-proj/z-topic,但不能交叉。

答案 2 :(得分:0)

由于我仍然没有信誉(对此感到抱歉),所以我正在写一个新答案,只是让可能遇到此问题的每个人都知道,只需更换服务,David的答案也对Cloud Run有效。处理您的Cloud Run服务的帐户。

答案 3 :(得分:0)

根据最新的Cloud Functions文档[1],Cloud Functions服务使用Google Cloud Functions service agent服务帐户(service-PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com)。

因此,如果您需要除默认设置以外的其他权限。您可以将其他角色绑定到该服务帐户。

并确保服务帐户有权发布到发布/订阅主题[2]。

[1] https://github.com/plotly/plotly.js/issues/4535
[2] https://cloud.google.com/functions/docs/concepts/iam#cloud_functions_service_account

希望这会帮助〜:)