角色与权限

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 支持项目级别和单个 DNS 区域级别的 IAM 权限。默认权限为项目级。 如需在单个 DNS 区域(或资源)级别配置权限,请参阅创建具有特定 IAM 权限的区域

权限和角色

每种 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 权限。

如果您要创建具有 GKE 集成的专用区域,则还需要 dns.gkeClusters.bindPrivateDNSZone 来配置 GKE 集群范围。

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 权限。

如果您要创建具有 GKE 集成的专用区域,则还需要 dns.gkeClusters.bindPrivateDNSZone 来配置 GKE 集群范围。

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.projects.get 针对项目的 dns.projects.get
dns.resourceRecordSets.create 对包含记录集的项目拥有 dns.resourceRecordSets.create 权限。
dns.resourceRecordSets.delete 对包含记录集的项目拥有 dns.resourceRecordSets.delete 权限。
dns.resourceRecordSets.get 对包含记录集的项目拥有 dns.resourceRecordSets.get 权限。
dns.resourceRecordSets.list 对包含托管地区的项目的 dns.resourceRecordSets.list 权限。
dns.resourceRecordSets.update 对包含记录集的项目拥有 dns.resourceRecordSets.updatedns.changes.create 权限。
dns.responsePolicies.create 对包含响应政策的项目拥有 dns.responsePolicies.create 权限。

您还需要使用 dns.networks.bindDNSResponsePolicy 来验证请求。

如果要创建附加到 GKE 集群的响应政策,则需要 dns.gkeClusters.bindDNSResponsePolicy

dns.responsePolicies.delete 对包含响应政策的项目拥有 dns.responsePolicies.delete 权限。
dns.responsePolicies.get 对包含响应政策的项目拥有 dns.responsePolicies.get 权限。
dns.responsePolicies.list 针对项目的 dns.responsePolicies.list
dns.responsePolicies.update 对包含响应政策的项目拥有 dns.responsePolicies.update 权限。

您还需要使用 dns.networks.bindDNSResponsePolicy 来验证请求。

如果要创建附加到 GKE 集群的响应政策,则需要 dns.gkeClusters.bindDNSResponsePolicy

dns.responsePolicyRules.create 对包含响应政策规则的项目拥有 dns.responsePolicyRules.create 权限。
dns.responsePolicyRules.delete 对包含响应政策规则的项目拥有 dns.responsePolicyRules.delete 权限。
dns.responsePolicyRules.get 对包含响应政策规则的项目拥有 dns.responsePolicyRules.get 权限。
dns.responsePolicyRules.list 对包含响应政策的项目拥有 dns.responsePolicyRules.list 权限。
dns.responsePolicyRules.update 对包含响应政策规则的项目拥有 dns.responsePolicyRules.update 权限。

角色

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

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

Role Permissions

(roles/dns.admin)

Provides read-write access to all Cloud DNS resources.

Lowest-level resources where you can grant this role:

  • Managed zone

compute.networks.get

compute.networks.list

dns.changes.*

  • dns.changes.create
  • dns.changes.get
  • dns.changes.list

dns.dnsKeys.*

  • dns.dnsKeys.get
  • dns.dnsKeys.list

dns.gkeClusters.*

  • dns.gkeClusters.bindDNSResponsePolicy
  • dns.gkeClusters.bindPrivateDNSZone

dns.managedZoneOperations.*

  • dns.managedZoneOperations.get
  • dns.managedZoneOperations.list

dns.managedZones.create

dns.managedZones.delete

dns.managedZones.get

dns.managedZones.getIamPolicy

dns.managedZones.list

dns.managedZones.update

dns.networks.*

  • dns.networks.bindDNSResponsePolicy
  • dns.networks.bindPrivateDNSPolicy
  • dns.networks.bindPrivateDNSZone
  • dns.networks.targetWithPeeringZone
  • dns.networks.useHealthSignals

dns.policies.create

dns.policies.delete

dns.policies.get

dns.policies.getIamPolicy

dns.policies.list

dns.policies.update

dns.projects.get

dns.resourceRecordSets.*

  • dns.resourceRecordSets.create
  • dns.resourceRecordSets.delete
  • dns.resourceRecordSets.get
  • dns.resourceRecordSets.list
  • dns.resourceRecordSets.update

dns.responsePolicies.*

  • dns.responsePolicies.create
  • dns.responsePolicies.delete
  • dns.responsePolicies.get
  • dns.responsePolicies.list
  • dns.responsePolicies.update

dns.responsePolicyRules.*

  • dns.responsePolicyRules.create
  • dns.responsePolicyRules.delete
  • dns.responsePolicyRules.get
  • dns.responsePolicyRules.list
  • dns.responsePolicyRules.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dns.peer)

Access to target networks with DNS peering zones

dns.networks.targetWithPeeringZone

(roles/dns.reader)

Provides read-only access to all Cloud DNS resources.

Lowest-level resources where you can grant this role:

  • Managed zone

compute.networks.get

dns.changes.get

dns.changes.list

dns.dnsKeys.*

  • dns.dnsKeys.get
  • dns.dnsKeys.list

dns.managedZoneOperations.*

  • dns.managedZoneOperations.get
  • dns.managedZoneOperations.list

dns.managedZones.get

dns.managedZones.list

dns.policies.get

dns.policies.list

dns.projects.get

dns.resourceRecordSets.get

dns.resourceRecordSets.list

dns.responsePolicies.get

dns.responsePolicies.list

dns.responsePolicyRules.get

dns.responsePolicyRules.list

resourcemanager.projects.get

resourcemanager.projects.list

管理访问权限控制

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

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

控制台

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    转到 IAM 页面

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

  3. 点击添加

  4. 新的主账号中,输入新主账号的电子邮件地址。

  5. 从列表中选择一个角色。

  6. 点击保存

  7. 验证该主账号是否拥有您授予的角色。

后续步骤