角色和權限

Google Cloud 提供「身分與存取權管理」(IAM) 功能,可讓您以更精細的方式授予使用者特定 Google Cloud 資源的存取權,避免其他資源遭到未經授權者擅自存取。本頁面說明 Cloud DNS API 角色。如要進一步瞭解 IAM,請參閱 身分與存取權管理說明文件

IAM 能讓您採用最低權限安全性原則,僅授予必要的資源存取權限給使用者。

設定身分與存取權管理政策後,即可控管「哪些人」具備「何種」權限,可以存取「哪些」資源。身分與存取權管理政策可將特定角色授予使用者,讓對方擁有特定權限。例如,特定使用者可能需要建立及修改網域名稱系統 (DNS) 記錄資源。接著,您可以將 /roles/dns.admin 角色授予該使用者 (哪些人),其中該角色具有 dns.changes.createdns.resourceRecordSets.create 權限 (何種權限),以便他們建立和更新資源記錄集 (哪些資源)。相反地,支援部門可能只需要檢視現有的資源記錄集,因此可授予他們 /roles/dns.reader 角色。

Cloud DNS 支援專案層級和個別 DNS 區域層級的 IAM 權限。預設權限位於專案層級。如要設定個別 DNS 區域 (或資源) 層級的權限,請參閱「建立具備特定 IAM 權限的可用區」。

權限與角色

每個 Cloud DNS API 方法都需要呼叫者具備必要的身分與存取權管理權限。您可以將角色授予使用者、群組或服務帳戶,藉此指派權限。除了基本角色擁有者、編輯者和檢視者外,您還可以將 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 對包含代管區域的專案。

如果您要建立私人區域,則需要在每個專案中具備 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 對包含代管區域的專案。

如果您要建立私人區域,則需要在每個專案中具備 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 對包含政策的專案。

如果政策已更新為位於虛擬私有雲網路,則每個包含虛擬私有雲網路的專案也需要 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 身分與存取權管理角色,以及各角色具備的所有權限對應清單。每個權限只適用於特定資源類型。

您也可以使用基本角色來變更 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.*

  • dns.policies.create
  • dns.policies.delete
  • dns.policies.get
  • 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

(roles/dns.serviceAgent)

Gives Cloud DNS Service Agent access to Cloud Platform resources.

compute.globalNetworkEndpointGroups.attachNetworkEndpoints

compute.globalNetworkEndpointGroups.create

compute.globalNetworkEndpointGroups.delete

compute.globalNetworkEndpointGroups.detachNetworkEndpoints

compute.globalNetworkEndpointGroups.get

compute.globalOperations.get

compute.healthChecks.get

管理存取權控管機制

您可以使用 Google Cloud 主控台管理主題和專案的存取權。

如要在專案層級設定存取權控管機制,請按照下列步驟操作。

主控台

  1. 前往 Google Cloud 控制台的「IAM」頁面。

    前往「身分與存取權管理」頁面

  2. 從頂端的下拉式選單中選取專案。

  3. 按一下「新增」

  4. 在「New principals」(新增主體) 中,輸入新主體的電子郵件地址。

  5. 從清單中選取角色。

  6. 按一下 [儲存]

  7. 確認主體是否已列出您授予的角色。

後續步驟