访问权限控制机制

Google Cloud 提供 Identity and Access Management (IAM),可让您授予对特定 Google Cloud 资源的更细化访问权限,并防止对其他资源进行不必要的访问。本页面介绍了 Cloud DNS API 角色。如需 IAM 的详细说明,请参阅 Identity and Access Management 文档

IAM 允许您采用最低权限安全原则,您只需授予对您资源的必要访问权限。

IAM 允许您通过设置 IAM 政策来控制谁对哪些资源具有什么访问权限。您可以使用 IAM 政策向用户授予特定角色,从而给予用户特定权限。例如,特定用户可能需要创建和修改域名系统 (DNS) 记录资源。然后,您可以向该用户(谁)授予 /roles/dns.admin 角色,该角色具有 dns.changes.createdns.resourceRecordSets.create 权限(什么),从而可以创建和更新资源记录集(哪些)。另一方面,支持部门可能只需要查看现有资源记录集,因此应为他们授予 /roles/dns.reader 角色。

权限和角色

每种 Cloud DNS API 方法都要求调用者拥有必要的 IAM 权限。您可以通过为用户、群组或服务帐号授予角色来分配权限。除了 Viewer、Editor、Owner 这些基本角色之外,您还可以向您项目的用户授予 Cloud DNS API 角色。

权限

下表列出了调用者调用每个方法必须具备的权限。

方法 所需权限
dns.changes.create(用于创建资源记录集)。 对包含记录集的项目拥有 dns.changes.createdns.resourceRecordSets.create 权限。
dns.changes.create(用于更新资源记录集)。 对包含记录集的项目拥有 dns.changes.createdns.resourceRecordSets.update 权限。
dns.changes.create(用于删除资源记录集)。 对包含记录集的项目拥有 dns.changes.createdns.resourceRecordSets.delete 权限。
dns.changes.get 对包含代管区域的项目拥有 dns.changes.get 权限。
dns.changes.list 对包含代管区域的项目拥有 dns.changes.list 权限。
dns.dnsKeys.get 对包含代管区域的项目拥有 dns.dnsKeys.get 权限。
dns.dnsKeys.list 对包含代管区域的项目拥有 dns.dnsKeys.list 权限。
dns.managedZoneOperations.get 对包含代管区域的项目拥有 dns.managedZoneOperations.get 权限。
dns.managedZoneOperations.list 对包含代管区域的项目拥有 dns.managedZoneOperations.list 权限。
dns.managedZones.create 对包含代管区域的项目拥有 dns.managedZones.create 权限。

如果要创建专用区域,则还需要对将有权访问该区域的每个 VPC 网络所属的每个项目拥有 dns.networks.bindPrivateDNSZonedns.networks.targetWithPeeringZone 权限。

dns.managedZones.delete 对包含代管区域的项目拥有 dns.managedZones.delete 权限。
dns.managedZones.get 对包含代管区域的项目拥有 dns.managedZones.get 权限。
dns.managedZones.list 对包含代管区域的项目拥有 dns.managedZones.list 权限。
dns.managedZones.update 对包含代管区域的项目拥有 dns.managedZones.update 权限。

如果要创建专用区域,则还需要对将有权访问该区域的每个 VPC 网络所属的每个项目拥有 dns.networks.bindPrivateDNSZonedns.networks.targetWithPeeringZone 权限。

dns.policies.create 对包含政策的项目拥有 dns.policies.create 权限。

如果政策是在 VPC 网络上创建的,则还需要对包含每个 VPC 网络的每个项目拥有 dns.networks.bindPrivateDNSPolicy 权限。

dns.policies.delete 对包含政策的项目拥有 dns.policies.delete 权限。
dns.policies.get 对包含政策的项目拥有 dns.policies.get 权限。
dns.policies.list 对包含政策的项目拥有 dns.policies.list 权限。
dns.policies.update 对包含政策的项目拥有 dns.policies.update 权限。

如果政策更新为位于 VPC 网络上,则还需要对包含每个 VPC 网络的每个项目拥有 dns.networks.bindPrivateDNSPolicy 权限。

dns.policies.patch 对包含政策的项目拥有 dns.policies.patch 权限。
dns.projects.get 对项目拥有 dns.projects.get 权限
dns.resourceRecordSets.list 对包含代管区域的项目拥有 dns.resourceRecordSets.list 权限。

角色

下表列出了 Cloud DNS API IAM 角色及每个角色包含的所有权限的相应列表。每个权限适用于特定的资源类型。

您还可以使用基本角色进行 DNS 更改。

角色 名称 说明 权限 最低资源要求
roles/dns.admin DNS Administrator 提供对所有 Cloud DNS 资源的读写权限。
  • compute.networks.get
  • compute.networks.list
  • dns.changes.*
  • dns.dnsKeys.*
  • dns.managedZoneOperations.*
  • dns.managedZones.*
  • dns.networks.*
  • dns.policies.create
  • dns.policies.delete
  • dns.policies.get
  • dns.policies.list
  • dns.policies.update
  • dns.projects.*
  • dns.resourceRecordSets.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
项目
roles/dns.peer DNS Peer 可通过 DNS 对等互连地区访问目标网络
  • dns.networks.targetWithPeeringZone
roles/dns.reader DNS Reader 提供对所有 Cloud DNS 资源的只读权限。
  • compute.networks.get
  • dns.changes.get
  • dns.changes.list
  • dns.dnsKeys.*
  • dns.managedZoneOperations.*
  • dns.managedZones.get
  • dns.managedZones.list
  • dns.policies.get
  • dns.policies.list
  • dns.projects.*
  • dns.resourceRecordSets.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
项目

管理访问权限控制

您可以使用 Google Cloud Console 来管理主题和项目的访问权限控制。

如需在项目级层设置访问权限控制,请按照以下步骤操作。

控制台

  1. 在 Google Cloud Console 中,转到 IAM 页面。

    转到 IAM 页面

  2. 从顶部的下拉菜单中选择您的项目。

  3. 点击添加

  4. 新成员中,输入新成员的电子邮件地址。

  5. 从下拉菜单中选择所需的角色。

  6. 点击保存

  7. 验证该成员是否拥有您授予的角色。

后续步骤

  • 要开始使用 Cloud DNS,请参阅快速入门
  • 如需了解您在使用 Cloud DNS 时可能会遇到的常见问题的解决方案,请参阅问题排查