角色和權限

Google Cloud 提供身分與存取權管理 (IAM) 功能,可對特定 Google Cloud 資源授予更精細的存取權,避免未經授權者存取其他資源。本頁面說明 Cloud DNS API 角色。如要進一步瞭解 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 權限。您可以將角色授予使用者、群組或服務帳戶,藉此指派權限。除了基本角色擁有者、編輯者和檢視者外,您還可以將 Cloud DNS API 角色授予專案使用者。

權限

下表列出呼叫端呼叫每個方法所需的權限。

方法 所需權限
dns.changes.create 如要建立資源記錄,請在包含記錄集的專案中,同時設定 dns.changes.createdns.resourceRecordSets.create

如要更新資源記錄,請在包含記錄集的專案中,同時設定 dns.changes.createdns.resourceRecordSets.update

如要刪除資源記錄,請在包含記錄集的專案中,同時設定 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 包含政策。

如果是在虛擬私有雲網路上建立政策,您還需要對包含每個虛擬私有雲網路的每個專案具備 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 包含回應政策規則。
networksecurity.dnsThreatDetectors.list (預先發布版) 專案的 networksecurity.dnsThreatDetectors.list,用於監控虛擬私有雲網路中的威脅。
networksecurity.dnsThreatDetectors.get (預先發布版) 專案的 networksecurity.dnsThreatDetectors.get,用於監控虛擬私有雲網路中的威脅。
networksecurity.dnsThreatDetectors.create (預先發布版) 專案的 networksecurity.dnsThreatDetectors.create,包含要監控威脅的虛擬私有雲網路。
networksecurity.dnsThreatDetectors.update (預先發布版) 專案的 networksecurity.dnsThreatDetectors.update,用於監控虛擬私有雲網路中的威脅。
networksecurity.dnsThreatDetectors.delete (預先發布版) 專案的 networksecurity.dnsThreatDetectors.delete,用於監控虛擬私有雲網路中的威脅。

角色

下表列出 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.*

  • dns.policies.create
  • dns.policies.createTagBinding
  • dns.policies.delete
  • dns.policies.deleteTagBinding
  • dns.policies.get
  • dns.policies.list
  • dns.policies.listEffectiveTags
  • dns.policies.listTagBindings
  • 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.policies.listEffectiveTags

dns.policies.listTagBindings

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

下表列出 DNS Armor IAM 角色,以及各角色具備的所有權限對應清單。

角色 權限

(roles/networksecurity.dnsThreatDetectorAdmin)

可完整存取 DNS 威脅偵測工具資源。

networksecurity.dnsThreatDetectors.*

  • networksecurity.dnsThreatDetectors.create
  • networksecurity.dnsThreatDetectors.delete
  • networksecurity.dnsThreatDetectors.get
  • networksecurity.dnsThreatDetectors.list
  • networksecurity.dnsThreatDetectors.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/networksecurity.dnsThreatDetectorViewer)

可查看 DNS 威脅偵測工具資源。

networksecurity.dnsThreatDetectors.get

networksecurity.dnsThreatDetectors.list

resourcemanager.projects.get

resourcemanager.projects.list

管理存取控管

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

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

控制台

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

    前往 IAM 頁面

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

  3. 按一下「Add」(新增)

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

  5. 從清單中選取角色。

  6. 按一下「Save」(儲存)

  7. 確認列出的主體具備您所授予的角色。

後續步驟