角色与权限

本页介绍运行连接测试所需的 Identity and Access Management (IAM) 角色和权限。

您可以授予用户或服务账号权限或预定义角色,也可以创建使用所指定权限的自定义角色。

IAM 权限使用 networkmanagement 前缀。

如需获取或设置 IAM 政策,或使用 Network Management API 测试 IAM 权限,请参阅管理访问权限政策

角色

本节介绍在授予 Connectivity Tests 权限时如何使用预定义角色和自定义角色。

有关每种权限的说明,请参见权限表

如需详细了解项目角色和 Google Cloud 资源,请参阅以下文档:

预定义角色

Connectivity Tests 具有以下预定义角色:

  • networkmanagement.admin 有权对测试资源执行所有操作。
  • networkmanagement.viewer 有权列出或获取特定的测试资源。

下表列出了预定义角色以及适用于每个角色的权限。

Role Permissions

(roles/networkmanagement.admin)

Full access to Network Management resources.

Lowest-level resources where you can grant this role:

  • Project

networkmanagement.*

  • networkmanagement.connectivitytests.create
  • networkmanagement.connectivitytests.delete
  • networkmanagement.connectivitytests.get
  • networkmanagement.connectivitytests.getIamPolicy
  • networkmanagement.connectivitytests.list
  • networkmanagement.connectivitytests.rerun
  • networkmanagement.connectivitytests.setIamPolicy
  • networkmanagement.connectivitytests.update
  • networkmanagement.locations.get
  • networkmanagement.locations.list
  • networkmanagement.operations.cancel
  • networkmanagement.operations.delete
  • networkmanagement.operations.get
  • networkmanagement.operations.list
  • networkmanagement.vpcflowlogsconfigs.create
  • networkmanagement.vpcflowlogsconfigs.delete
  • networkmanagement.vpcflowlogsconfigs.get
  • networkmanagement.vpcflowlogsconfigs.list
  • networkmanagement.vpcflowlogsconfigs.update

resourcemanager.organizations.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/networkmanagement.serviceAgent)

Grants the GCP Network Management API the authority to complete analysis based on network configurations from Compute Engine and Container Engine.

cloudsql.instances.get

cloudsql.instances.list

compute.addresses.get

compute.addresses.list

compute.backendServices.get

compute.backendServices.list

compute.externalVpnGateways.get

compute.externalVpnGateways.list

compute.firewalls.get

compute.firewalls.list

compute.forwardingRules.get

compute.forwardingRules.list

compute.globalAddresses.get

compute.globalAddresses.list

compute.globalForwardingRules.get

compute.globalForwardingRules.list

compute.globalNetworkEndpointGroups.get

compute.globalNetworkEndpointGroups.list

compute.healthChecks.get

compute.healthChecks.list

compute.httpHealthChecks.get

compute.httpHealthChecks.list

compute.httpsHealthChecks.get

compute.httpsHealthChecks.list

compute.instanceGroups.get

compute.instanceGroups.list

compute.instances.get

compute.instances.list

compute.networkEndpointGroups.get

compute.networkEndpointGroups.list

compute.networks.get

compute.networks.getEffectiveFirewalls

compute.networks.list

compute.networks.listPeeringRoutes

compute.packetMirrorings.get

compute.packetMirrorings.list

compute.regionBackendServices.get

compute.regionBackendServices.list

compute.regionHealthChecks.get

compute.regionHealthChecks.list

compute.regionNetworkEndpointGroups.get

compute.regionNetworkEndpointGroups.list

compute.regionTargetHttpProxies.get

compute.regionTargetHttpProxies.list

compute.regionTargetHttpsProxies.get

compute.regionTargetHttpsProxies.list

compute.regionTargetTcpProxies.get

compute.regionTargetTcpProxies.list

compute.regionUrlMaps.get

compute.regionUrlMaps.list

compute.routers.get

compute.routers.list

compute.routes.get

compute.routes.list

compute.subnetworks.get

compute.subnetworks.list

compute.targetGrpcProxies.get

compute.targetGrpcProxies.list

compute.targetHttpProxies.get

compute.targetHttpProxies.list

compute.targetHttpsProxies.get

compute.targetHttpsProxies.list

compute.targetInstances.get

compute.targetInstances.list

compute.targetPools.get

compute.targetPools.list

compute.targetSslProxies.get

compute.targetSslProxies.list

compute.targetTcpProxies.get

compute.targetTcpProxies.list

compute.targetVpnGateways.get

compute.targetVpnGateways.list

compute.urlMaps.get

compute.urlMaps.list

compute.vpnGateways.get

compute.vpnGateways.list

compute.vpnTunnels.get

compute.vpnTunnels.list

container.clusters.get

container.clusters.list

container.nodes.get

container.nodes.list

(roles/networkmanagement.viewer)

Read-only access to Network Management resources.

Lowest-level resources where you can grant this role:

  • Project

networkmanagement.connectivitytests.get

networkmanagement.connectivitytests.getIamPolicy

networkmanagement.connectivitytests.list

networkmanagement.locations.*

  • networkmanagement.locations.get
  • networkmanagement.locations.list

networkmanagement.operations.get

networkmanagement.operations.list

networkmanagement.vpcflowlogsconfigs.get

networkmanagement.vpcflowlogsconfigs.list

resourcemanager.organizations.get

resourcemanager.projects.get

resourcemanager.projects.list

自定义角色

您可以通过从权限表中为 Connectivity Tests 选择权限列表,从而创建自定义角色。

例如,您可以创建一个名为 reachabilityUsers 的角色,并为此角色授予 listgetrerun 权限。具有此角色的用户可以重新运行现有的 Connectivity Tests,并根据最新的网络配置查看更新的测试结果。

项目角色

您可以使用项目角色为 Google Cloud 资源设置权限。由于 Connectivity Tests 必须具有对您的 Virtual Private Cloud (VPC) 网络中的Google Cloud 资源配置的读取权限才能运行测试,因此您必须至少向针对这些资源进行测试的用户或服务账号授予 Compute Network Viewer 角色 (roles/compute.networkViewer)。您也可以为特定用户创建自定义角色或临时授权与之前角色关联的权限。

或者,您可以为用户或服务账号授予 Google Cloud 项目的以下预定义角色之一:

权限

本节介绍了 Connectivity Tests 的权限以及在测试不同类型的网络配置时如何使用它们。

Connectivity Tests 权限

Connectivity Tests 具有以下 Cloud IAM 权限。

权限 说明
networkmanagement.connectivitytests.list 列出在指定项目中配置的所有测试。
networkmanagement.connectivitytests.get 获取特定测试的详细信息。
networkmanagement.connectivitytests.create 使用您为测试指定的数据在指定的项目中创建一个新的测试对象。此权限包括更新、重新运行或删除测试的权限。
networkmanagement.connectivitytests.update 更新现有测试中的一个或多个字段。
networkmanagement.connectivitytests.delete 删除指定的测试。
networkmanagement.connectivitytests.rerun 针对指定测试重新运行一次性可达性验证。

如果您无权创建或更新测试,则相应的按钮将处于无效状态;包括创建连接测试按钮,以及连接测试详情页面上的修改按钮。在这些情况下,当您将指针悬停在无效按钮上时,Connectivity Tests 会显示一条消息,说明您需要获得的权限。

运行测试的权限

您需要拥有以下角色和权限才能运行测试:

  • 在包含 Connectivity Tests 资源的项目中添加 networkmanagement.connectivitytests.create 权限(或 networkmanagement.connectivitytests.rerun)。
  • 跟踪路径中包含的所有项目的 Compute Network Viewer 角色 (roles/compute.networkViewer) 或旧版 Viewer 角色 (roles/viewer)。

请注意,对于不同类型的连接选项,还需要考虑以下事项。

VPC 网络对等互连、Network Connectivity Center 或 Cloud VPN 连接

如果跟踪路径包含 VPC 网络对等互连、Network Connectivity Center 或通过 Cloud VPN 连接到其他项目中的网络,则仅当您拥有该项目的权限时,系统才会模拟该网络中的数据包路径。否则,系统会返回不完整的测试结果(例如,跟踪记录以转发最终状态结束)。

共享 VPC 项目

如果来源端点或目标端点(例如虚拟机 [VM] 实例)使用共享 VPC,则您必须有权访问宿主项目和服务项目。

  • 如果您有权访问宿主项目和服务项目,则跟踪信息会包含所有相关资源的详细信息。
  • 如果您无权访问其中一个项目,则此项目中定义的资源信息将在跟踪记录中被隐藏。系统会显示权限错误。
示例
  • 您有权访问虚拟机实例项目(服务项目),但无权访问其网络项目(宿主项目)。如果您以此虚拟机实例作为来源(通过名称指定)运行测试,则与宿主项目相关联的所有步骤(例如,应用防火墙或路由)都将被隐藏。

  • 您有权访问网络项目(宿主项目),但无权访问虚拟机项目(服务项目)。如果您以此虚拟机实例(通过其 IP 地址指定)为来源运行测试,则与服务项目相关联的所有步骤(例如包含虚拟机实例详细信息的步骤)都将被隐藏。

Private Service Connect 已发布服务

如果数据包发送到 Private Service Connect 已发布服务(通过 Private Service Connect 端点或 Private Service Connect 后端),则只有在您有权访问提供方项目时,系统才会显示该项目中的跟踪信息。否则,跟踪记录会以常规最终状态结束,例如数据包已传递到 PSC 提供方项目数据包在 PSC 提供方项目中丢失

Google 管理的服务

如果数据包往返于与 Google 管理的服务(如 Cloud SQL)关联的 Google 管理的网络,则不会显示 Google 管理的项目中的步骤。系统会显示常规的起始步骤或最终步骤。

Google Cloud 资源的公共 IP 地址

如果您指定的公共 IP 地址已分配给某个项目中的资源,但您没有对定义了该 IP 地址的项目的权限,则该 IP 地址会被视为互联网 IP 地址。系统不会显示到达此资源之后的底层资源或数据包路径的任何详细信息。

查看测试结果的权限

如需查看测试结果,请注意以下事项:

  • 如需查看 2024 年 10 月之后创建或更新的测试结果,您只需拥有查看测试资源 (networkmanagement.connectivitytests.get) 的权限;无需对跟踪路径中涉及的资源和项目拥有权限。
  • 如需查看 2024 年 10 月之前执行的测试的结果,您必须对跟踪路径中包含的所有项目具有 Compute Network Viewer 角色或旧版 Viewer 角色 (roles/viewer)。

分层防火墙政策

您的跟踪记录可能包含您无权查看的分层防火墙政策。但是,即使您无权查看政策详情,也仍然可以查看应用于 VPC 网络的政策规则。如需了解详情,请参阅“分层防火墙政策”概览中的 IAM 角色

后续步骤