使用 IAM 进行访问权限控制

概览

Live Stream API 使用 Identity and Access Management (IAM) 进行 访问权限控制。

您可以在项目级层配置 Live Stream API 的访问权限控制。例如,您可以向开发者授予列出和获取项目中所有事件的访问权限。

如需详细了解 IAM 及其功能,请参阅 IAM 文档尤其应参阅 管理 IAM 政策部分。

Live Stream API 的每种方法都要求调用者拥有必要的权限。如需了解详情,请参阅权限角色

权限

本部分汇总了 IAM 支持的 Live Stream API 权限。

所需权限

下表列出了与 Live Stream API 关联的 IAM 权限。

资产方法名称 所需权限
assets.create 父级位置(即特定项目和数据位置组合)上的 livestream.assets.create。 Google Cloud
assets.delete 资产资源上的 livestream.assets.delete
assets.get 资产资源上的 livestream.assets.get
assets.list 父级位置(即特定项目和数据位置组合)上的 livestream.assets.list。 Google Cloud
频道方法名称 所需权限
channels.create 父级位置( 即特定 Google Cloud 项目和数据 位置组合)上的 livestream.channels.create
channels.delete 频道资源上的 livestream.channels.delete
channels.get 频道资源上的 livestream.channels.get
channels.list 父级位置(即特定项目和数据位置组合)上的 livestream.channels.list。 Google Cloud
channels.patch 频道资源上的 livestream.channels.update
channels.start 频道资源上的 livestream.channels.start
channels.stop 频道资源上的 livestream.channels.stop
片段方法名称 所需权限
channels.clips.create 资源父级频道上的 livestream.clips.create
channels.clips.delete 片段资源上的 livestream.clips.delete
channels.clips.get 片段资源上的 livestream.clips.get
channels.clips.list 资源父级频道上的 livestream.clips.list
事件方法名称 所需权限
channels.events.create 资源父级频道上的 livestream.events.create
channels.events.delete 事件资源上的 livestream.events.delete
channels.events.get 事件资源上的 livestream.events.get
channels.events.list 资源父级频道上的 livestream.events.list
输入方法名称 所需权限
inputs.create 父级位置(即特定项目和数据位置组合)上的 livestream.inputs.create。 Google Cloud
inputs.delete 输入资源上的 livestream.inputs.delete
inputs.get 输入资源上的 livestream.inputs.get
inputs.list 父级位置(即特定项目和数据位置组合)上的 livestream.inputs.list。 Google Cloud
inputs.patch 输入资源上的 livestream.inputs.update
池方法名称 所需权限
pools.get 池资源上的 livestream.pools.get
pools.patch 池资源上的 livestream.pools.patch

角色

下表列出了 Live Stream API IAM 角色,包括与每个角色关联的权限:

IAM 角色 权限

(roles/livestream.viewer)

拥有对直播资源的读取权限。

livestream.assets.get

livestream.assets.list

livestream.channels.get

livestream.channels.list

livestream.channels.listEffectiveTags

livestream.channels.listTagBindings

livestream.clips.get

livestream.clips.list

livestream.dvrSessions.get

livestream.dvrSessions.list

livestream.events.get

livestream.events.list

livestream.inputs.get

livestream.inputs.list

livestream.inputs.listEffectiveTags

livestream.inputs.listTagBindings

livestream.locations.*

  • livestream.locations.get
  • livestream.locations.list

livestream.operations.get

livestream.operations.list

livestream.pools.get

livestream.pools.listEffectiveTags

livestream.pools.listTagBindings

resourcemanager.projects.get

resourcemanager.projects.list

(roles/livestream.editor)

拥有对直播资源的完整访问权限。

livestream.*

  • livestream.assets.create
  • livestream.assets.delete
  • livestream.assets.get
  • livestream.assets.list
  • livestream.channels.create
  • livestream.channels.createTagBinding
  • livestream.channels.delete
  • livestream.channels.deleteTagBinding
  • livestream.channels.get
  • livestream.channels.list
  • livestream.channels.listEffectiveTags
  • livestream.channels.listTagBindings
  • livestream.channels.start
  • livestream.channels.stop
  • livestream.channels.update
  • livestream.clips.create
  • livestream.clips.delete
  • livestream.clips.get
  • livestream.clips.list
  • livestream.dvrSessions.create
  • livestream.dvrSessions.delete
  • livestream.dvrSessions.get
  • livestream.dvrSessions.list
  • livestream.dvrSessions.update
  • livestream.events.create
  • livestream.events.delete
  • livestream.events.get
  • livestream.events.list
  • livestream.inputs.create
  • livestream.inputs.createTagBinding
  • livestream.inputs.delete
  • livestream.inputs.deleteTagBinding
  • livestream.inputs.get
  • livestream.inputs.list
  • livestream.inputs.listEffectiveTags
  • livestream.inputs.listTagBindings
  • livestream.inputs.update
  • livestream.locations.get
  • livestream.locations.list
  • livestream.operations.cancel
  • livestream.operations.delete
  • livestream.operations.get
  • livestream.operations.list
  • livestream.pools.createTagBinding
  • livestream.pools.deleteTagBinding
  • livestream.pools.get
  • livestream.pools.listEffectiveTags
  • livestream.pools.listTagBindings
  • livestream.pools.update

resourcemanager.projects.get

resourcemanager.projects.list

如需详细了解角色,请参阅 了解角色

对 Cloud Storage 的访问权限

默认情况下,Live Stream API 可以访问项目的所有 Cloud Storage 存储分区。当您创建第一个直播活动时,Live Stream API 会使用以下命名惯例创建服务帐号:

service-PROJECT_NUMBER@gcp-sa-livestream.iam.gserviceaccount.com

PROJECT_NUMBER 是启用了 Live Stream API 的项目的编号。此服务帐号会被授予 Live Stream Service Agent 角色,并有权执行以下操作:

  • 读取项目 Cloud Storage 存储分区中的文件
  • 将文件上传到项目 Cloud Storage 存储分区
  • 删除项目 Cloud Storage 存储分区中的文件
  • 列出项目 Cloud Storage 存储分区中的文件及其元数据

限制访问

如需限制对 Cloud Storage 存储分区的访问权限,请从服务帐号中移除 Live Stream Service Agent 角色,并将其替换为更精细的访问权限。请按照以下步骤操作:

  1. 在控制台中,前往 IAM 页面 (权限 标签页)。 Google Cloud
  2. 找到具有 Live Stream Service Agent 角色的服务帐号,然后选择修改按钮。
  3. 从服务帐号中删除 Live Stream Service Agent 角色。
  4. 向服务帐号授予对每个 Cloud Storage 存储桶的访问权限:
    1. 转到 Cloud Storage 浏览器页面。
    2. 点击一个存储分区。
    3. 选择权限标签页。
    4. 点击 Add (添加)。
    5. 新的主账号 字段中,输入服务帐号的名称。
    6. 角色 下,选择 Storage Object Admin
    7. 点击保存 。Live Stream API 现在可以访问该存储桶。