保护客户端-服务器应用

使用客户端连接器保护客户端-服务器应用

概览

BeyondCorp Enterprise 是 Google Cloud 提供的零信任解决方案,提供集成式威胁防范和数据保护功能,可让您安全地访问私有应用。BeyondCorp Enterprise 使用 Chrome 为所有基于网络的 (HTTPS) 应用提供安全访问。

BeyondCorp Enterprise 客户端连接器利用完整情境和身份感知访问权限,与在 Google Cloud 和非 Google Cloud 环境中运行的应用建立安全连接,从而扩展对非 Web 应用的支持。

运作方式

下图提供了客户端连接器的架构简要概览。

BeyondCorp Enterprise 客户端连接器组件

以下是构成客户端连接器的关键组件:

端点验证和客户端代理:客户端连接器与端点验证相集成。端点验证是一个 Chrome 扩展程序,具有可在用户笔记本电脑或桌面设备上运行的原生轻量级代理,并报告设备信息。 端点验证还充当供最终用户启动和停止与客户端网关的连接的控制平面。

客户端网关:客户端可连接到的区域服务器端组件。客户端网关由管理员部署。这些网关会与 BeyondCorp Enterprise 强制执行系统通信,以强制执行情境感知检查。BeyondCorp Enterprise 强制执行系统使用 Identity-Aware Proxy 和 Access Context Manager,后者是一个灵活的 BeyondCorp Enterprise 零信任政策引擎。

客户端连接器通过安全通道(网关)将流量从最终用户、客户端和设备发送到受保护的应用。您可以连接到在 Google Cloud 内或 Google Cloud 外部运行的 Web 应用和非 Web 应用。您可以使用 Cloud VPN 或 Cloud Interconnect 连接到不在 Google Cloud 中的应用。

准备工作

在启用 BeyondCorp Enterprise 客户端连接器之前,请确保您拥有以下各项:

启用 BeyondCorp Enterprise 客户端连接器

设置专用服务访问通道

客户端连接器使用专用服务访问通道来启用 Google 管理的 VPC 网络和使用方 VPC 网络之间的连接。这可确保来自用户的流量路由到使用方 VPC 网络。

控制台

  1. 专用服务访问通道要求您预留 IP 地址范围,以确保您的 VPC 网络与 Google 管理的 VPC 网络之间不会发生 IP 地址冲突。如需分配 IP 范围,请完成以下步骤:

    1. 转到 Google Cloud 控制台中的“VPC 网络”页面。
      转到 VPC 网络

    2. 选择连接到您的应用的 VPC 网络。

    3. 选择专用服务连接标签页。

    4. 专用服务连接标签页中,选择为服务分配的 IP 范围标签页。

    5. 点击分配 IP 范围

    6. 输入要分配的 IP 范围的名称说明

    7. 指定分配的 IP 范围

      • 如需指定 IP 地址范围,请选择自定义,然后输入 CIDR 地址块,例如 192.168.0.0/16
      • 如需指定前缀长度并让 Google 选择可用地址范围,请选择自动,然后输入前缀长度,例如 16

      指定不小于 /24 的网络。

    8. 点击分配以创建分配的范围。

  2. 完成以下步骤,创建 VPC 网络对等互连连接:

    1. 转到 Google Cloud 控制台中的“VPC 网络”页面。
      转到 VPC 网络
    2. 选择连接到您的应用的 VPC 网络。
    3. 选择专用服务连接标签页。
    4. 专用服务连接标签页中,选择为服务分配的 IP 范围标签页。
    5. 点击创建连接以在您的网络和客户端连接器服务之间创建专用连接。
    6. 在打开的窗口中,保留已连接服务提供方的默认值。对于指定的分配范围,选择您在上一步中创建的分配范围。
    7. 点击连接以创建连接。
  3. 创建防火墙规则。

    1. 在 Google Cloud 控制台中,转到防火墙页面。
      转到“防火墙”页面
    2. 点击创建防火墙规则
    3. 输入防火墙规则的名称
      该名称在项目中必须是唯一的。
    4. 可选:您可以启用防火墙规则日志记录
      • 点击日志 > 开启
      • 如需省略元数据,请展开日志详情,然后清除包含元数据
    5. 指定连接到您的应用的网络
    6. 指定规则的优先级。数字越小,优先级越高。
    7. 对于流量方向,选择入站
    8. 对于对匹配项执行的操作,选择允许
    9. 对于目标,选择网络中的所有实例
    10. 对于来源过滤条件,选择 IPv4 范围,然后输入第 1 步中的 addressprefixLength 值,以 CIDR 格式表示分配的 IP 范围。对于任何 IPv4 来源,都应使用 0.0.0.0/0 格式。
    11. 对于协议和端口,选择全部允许以将规则应用于所有协议和目标端口。
    12. 点击创建

gcloud

  1. 专用服务访问通道要求您预留 IP 地址范围,以确保您的 VPC 网络与 Google 管理的 VPC 网络之间不会发生 IP 地址冲突。运行以下命令以分配 IP 范围

    gcloud compute addresses create RESERVED_RANGE \
      --network=CONSUMER_NETWORK \
      --project=CONSUMER_PROJECT \
      --prefix-length=16 \
      --purpose=VPC_PEERING \
      --global
    

    替换以下内容:

    • RESERVED_RANGE:要为 VPC 对等互连预留的 IP 地址范围的名称。名称只能包含小写字母、数字和连字符。
    • CONSUMER_NETWORK:连接到应用的 VPC 网络的名称。
    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  2. 创建 VPC 对等互连连接。

    gcloud services vpc-peerings connect \
      --network=CONSUMER_NETWORK \
      --project=CONSUMER_PROJECT \
      --ranges=RESERVED_RANGE \
      --service="servicenetworking.googleapis.com"
    

    替换以下内容:

    • CONSUMER_NETWORK:连接到应用的 VPC 网络的名称。
    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • RESERVED_RANGE:为 VPC 对等互连预留的范围的名称。
  3. 获取已分配 IP 范围的详细信息。

    gcloud compute addresses describe RESERVED_RANGE \
      --global \
      --project=CONSUMER_PROJECT
    

    替换以下内容:

    • RESERVED_RANGE:为 VPC 对等互连预留的范围的名称。
    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  4. 使用上一步输出中的 addressprefixLength 值,以 CIDR 格式表示分配的 IP 范围,然后创建防火墙规则。

    gcloud compute firewall-rules create "allow-peered-ingress" \
      --network=CONSUMER_NETWORK \
      --project=CONSUMER_PROJECT \
      --direction ingress \
      --action allow \
      --source-ranges={Allocated IP range in CIDR format i.e. address/prefixLength} \
      --rules=all
    

    替换以下内容:

    • CONSUMER_NETWORK:连接到应用的 VPC 网络的名称。
    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。

如需了解如何配置防火墙规则,请参阅使用 VPC 防火墙规则

设置客户端连接器资源

您必须设置两种类型的资源:

  • 客户端连接器服务:为一组客户端网关定义通用配置。
  • 客户端网关:指客户端连接器服务,可控制要在其中管理用户流量的区域。

每个网域只能有一个客户端连接器服务,每个客户端连接器服务的每个区域只能使用一个客户端网关。此外,您只能使用以下区域来托管客户端连接器服务和网关资源:asia-east1europe-west1us-east1us-central1

创建客户端连接器服务

控制台

  1. 转到 IAP 管理页面

    前往 IAP

  2. 点击连接器 > 启用客户端连接器

  3. 输入将从代管式客户端接收流量的 VPC 网络。

  4. 选择您的客户端可以连接到的区域。请注意,客户端网关是在此步骤中创建的,因此您无需在创建、验证或移除客户端网关过程中创建网关。

  5. 输入您希望客户端连接器访问的应用的 IP 地址范围。

  6. 点击启用客户端连接器。创建连接器可能需要几分钟时间。

gcloud

运行以下命令:

gcloud beta beyondcorp client-connector services create CLIENT_CONNECTOR_SERVICE_NAME \
  --project=CONSUMER_PROJECT \
  --location=SERVICE_LOCATION \
  --config-from-file=/path/to/file/config.json

其中,config.json 为:

   {
     "ingress": {
       "config": {
         "transportProtocol": "TCP",
         "destinationRoutes": [{
           "address": "DESTINATION_ADDRESS",
           "netmask": "DESTINATION_MASK"
         }]
       }
     },
     "egress": {
       "peeredVpc": {
         "networkVpc": "projects/CONSUMER_PROJECT/global/networks/CONSUMER_NETWORK"
       }
     }
   }

替换以下内容:

  • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。
  • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  • SERVICE_LOCATION:要在其中创建客户端连接器服务的区域。您可以指定以下某个受支持的区域:asia-east1europe-west1us-east1us-central1
  • DESTINATION_ADDRESS:托管应用的目标子网的主机地址。例如,如果您的应用使用 10.0.0.0/28,则地址为 10.0.0.0
  • DESTINATION_MASK:托管应用的目标子网的网络掩码。例如,如果您的应用使用 10.0.0.0/28,则掩码为 255.255.255.240
  • CONSUMER_NETWORK:连接到应用的 VPC 网络的名称。

API

运行以下命令:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @config.json \
https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices?client_connector_service_id=CLIENT_CONNECTOR_SERVICE_NAME

其中,config.json 为:

   {
     "ingress": {
       "config": {
         "transportProtocol": "TCP",
         "destinationRoutes": [{
           "address": "DESTINATION_ADDRESS",
           "netmask": "DESTINATION_MASK"
         }]
       }
     },
     "egress": {
       "peeredVpc": {
         "networkVpc": "projects/CONSUMER_PROJECT/global/networks/CONSUMER_NETWORK"
       }
     }
   }

替换以下内容:

  • DESTINATION_ADDRESS:托管应用的目标子网的主机地址。例如,如果您的应用使用 10.0.0.0/28,则地址为 10.0.0.0
  • DESTINATION_MASK:托管应用的目标子网的网络掩码。例如,如果您的应用使用 10.0.0.0/28,则掩码为 255.255.255.240
  • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  • CONSUMER_NETWORK:连接到应用的 VPC 网络的名称。
  • SERVICE_LOCATION:要在其中创建客户端连接器服务的区域。
  • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。

通过列出客户端连接器服务来验证该服务是否已成功创建

控制台

  1. 转到 IAP 管理页面

    前往 IAP

  2. 点击连接。您的连接器应列在客户端连接器部分,并且状态带有绿色对勾标记。

gcloud

运行以下命令:

gcloud beta beyondcorp client-connector services list \
  --project=CONSUMER_PROJECT \
  --location=SERVICE_LOCATION

替换以下内容:

  • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  • SERVICE_LOCATION:要在其中创建客户端连接器服务的区域。

API

运行以下命令:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices

替换以下内容:

  • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  • SERVICE_LOCATION:客户端连接器服务所在的区域。

可选:更新客户端连接器服务

控制台

完成以下步骤,以更新目标路由:

  1. 转到 IAP 管理页面

    前往 IAP

  2. 点击连接

  3. 客户端连接器部分,点击要更新的客户端连接器旁边的铅笔图标。

  4. 输入托管应用的目标子网的新主机地址和网络掩码,然后点击更新客户端连接器

gcloud

运行以下命令来更新目标路由:

gcloud beta beyondcorp client-connector services update CLIENT_CONNECTOR_SERVICE_NAME \
  --project=CONSUMER_PROJECT \
  --location=SERVICE_LOCATION \
  --config-from-file=/path/to/file/config.json

其中,config.json 为:

{
  "ingress":{
    "config":{
      "destinationRoutes":[
        {
          "address":"NEW_DESTINATION_ADDRESS1",
          "netmask":"NEW_DESTINATION_MASK1"
        },
        {
          "address":"NEW_DESTINATION_ADDRESS2",
          "netmask":"NEW_DESTINATION_MASK2"
        }
      ]
    }
  }
}

替换以下内容:

  • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。
  • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  • SERVICE_LOCATION:客户端连接器服务所在的区域。
  • NEW_DESTINATION_ADDRESS1NEW_DESTINATION_ADDRESS2:托管应用的目标子网的新主机地址。
  • NEW_DESTINATION_MASK1NEW_DESTINATION_MASK2:目标子网的新网络掩码。

API

如需更新目标路由,请运行以下命令:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @update.json \
https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME?update_mask=ingress.config.destinationRoutes

其中 update.json 为:

{
  "ingress":{
    "config":{
      "destinationRoutes":[
        {
          "address":"NEW_DESTINATION_ADDRESS1",
          "netmask":"NEW_DESTINATION_MASK1"
        },
        {
          "address":"NEW_DESTINATION_ADDRESS2",
          "netmask":"NEW_DESTINATION_MASK2"
        }
      ]
    }
  }
}

替换以下内容:

  • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  • SERVICE_LOCATION:客户端连接器服务所在的区域。
  • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。
  • NEW_DESTINATION_ADDRESS1NEW_DESTINATION_ADDRESS2:托管应用的目标子网的新主机地址。
  • NEW_DESTINATION_MASK1NEW_DESTINATION_MASK2:目标子网的新网络掩码。

可选:移除客户端连接器服务

控制台

  1. 转到 IAP 管理页面

    前往 IAP

  2. 点击连接

  3. 客户端连接器部分,点击垃圾桶图标以移除客户端连接器服务和网关。此过程可能耗时几分钟。

gcloud

运行以下命令:

gcloud beta beyondcorp client-connector services delete CLIENT_CONNECTOR_SERVICE_NAME \
  --project CONSUMER_PROJECT \
  --location SERVICE_LOCATION

替换以下内容:

  • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。
  • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  • SERVICE_LOCATION:客户端连接器服务所在的区域。

API

运行以下命令:

curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME

替换以下内容:

  • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
  • SERVICE_LOCATION:客户端连接器服务所在的区域。
  • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。

创建、验证或移除客户端网关

控制台

  1. 如果您使用控制台设置客户端连接器,则客户端网关是在您在上一步创建客户端连接器服务时创建的。

  2. 如需验证客户端网关是否已启动并正在运行,请执行以下操作:

    1. 转到 IAP 管理页面

      前往 IAP

    2. 点击连接。您的连接器以及关联的网关应列在客户端连接器部分,并且状态应带有绿色对勾标记。
  3. 可选:如要移除客户端网关,请完成以下步骤。

    1. 转到 IAP 管理页面

      前往 IAP

    2. 点击连接

    3. 客户端连接器部分,点击要移除网关的客户端连接器旁边的铅笔图标。

    4. 从连接器服务中移除某个区域,方法是从网关区域下拉列表中取消选中区域复选框,然后点击更新客户端连接器

gcloud

  1. 创建客户端网关。

    gcloud beta beyondcorp client-connector gateways create CLIENT_GATEWAY_NAME \
      --project CONSUMER_PROJECT \
      --location GATEWAY_LOCATION \
      --client-connector-service \
      projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME
    

    替换以下内容:

    • CLIENT_GATEWAY_NAME:客户端网关的名称。
    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • GATEWAY_LOCATION:要在其中创建客户端网关的地区。
    • SERVICE_LOCATION:客户端连接器服务所在的区域。
    • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。
  2. 验证客户端网关是否已启动并运行。

    gcloud beta beyondcorp client-connector gateways list \
      --project CONSUMER_PROJECT \
      --location GATEWAY_LOCATION
    

    替换以下内容:

    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • GATEWAY_LOCATION:客户端网关所在的区域。
  3. 可选:移除客户端网关。

    gcloud beta beyondcorp client-connector gateways delete CLIENT_GATEWAY_NAME \
      --project CONSUMER_PROJECT \
      --location GATEWAY_LOCATION
    

    替换以下内容:

    • CLIENT_GATEWAY_NAME:客户端网关的名称。
    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • GATEWAY_LOCATION:客户端网关所在的区域。

API

  1. 运行以下命令:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d "{client_connector_service: \"projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME\"}" \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways?client_gateway_id=CLIENT_GATEWAY_NAME
    

    替换以下内容:

    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • SERVICE_LOCATION:客户端连接器服务所在的区域。
    • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。
    • GATEWAY_LOCATION:要在其中创建客户端网关的区域。
    • CLIENT_GATEWAY_NAME:客户端网关的名称。

    此步骤可能需要几分钟才能完成。

  2. 验证客户端网关是否已启动并运行。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways
    

    替换以下内容:

    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • GATEWAY_LOCATION:客户端网关所在的区域。
  3. 可选:移除客户端网关。

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/GATEWAY_LOCATION/clientGateways/CLIENT_GATEWAY_NAME
    

    替换以下内容:

    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • GATEWAY_LOCATION:客户端连接器网关所在的区域。
    • CLIENT_GATEWAY_NAME:客户端网关的名称。

设置情境感知访问权限政策

  1. 确定主账号或创建用户群组。确定需要访问受保护的非 Web 应用的用户。或者,您也可以创建用户群组以简化配置和管理。

  2. 可选:在 Access Context Manager 中创建访问权限级别以定义情境感知规则,该规则可用于限制对应用的访问。

  3. 为客户端连接器服务资源配置 IAM 政策,并向主帐号或用户组授予访问非 Web 应用所需的 Cloud BeyondCorp Client Connector Service User 角色 (roles/beyondcorp.clientConnectorServiceUser)。或者,您可以指定 IAM 条件,以便仅在满足访问权限级别时预配角色。如需更新资源的 IAM 政策,您可以使用控制台或 API。

    在控制台中,完成以下步骤:

    1. 转到 IAP 管理页面

      前往 IAP

    2. 点击应用
    3. 如果您之前未配置 OAuth 同意屏幕,则必须执行此操作才能完成此步骤。在连接新应用部分的非 Web 应用下,选择您的连接器。
    4. 在随即打开的窗口中,点击添加主帐号
    5. 向主帐号或用户组授予访问非 Web 应用所需的 Cloud BeyondCorp Client Connector Service User 角色 (roles/beyondcorp.clientConnectorServiceUser)。或者,您可以指定访问权限级别,以便仅在满足访问权限级别时预配角色。如需指定访问权限级别,您必须是 Organization Administrator,或者对组织访问权限级别具有 viewedit 权限。
    6. 点击保存

更新 IAM 政策

控制台

  1. 转到 IAP 管理页面

    前往 IAP

  2. 点击应用标签页,然后在资源列表中展开非 Web 应用
  3. 选择您的客户端连接器。此时系统会打开一个部分,其中包含与您的连接器关联的 IAM 权限。
  4. 您可以在打开的部分中更新与您的客户端连接器关联的 IAM 政策。

gcloud

  1. 阅读现有政策。getIamPolicy() 方法可将客户端连接器服务资源的现有 IAM 政策读入 policy.json

    gcloud beta beyondcorp client-connector services get-iam-policy CLIENT_CONNECTOR_SERVICE_NAME \
      --project=CONSUMER_PROJECT \
      --location=SERVICE_LOCATION > policy.json
    

    替换以下内容:

    • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。
    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • SERVICE_LOCATION:客户端连接器服务所在的区域。
  2. 修改返回的政策。更新 policy.json 中的绑定以包含新的 IAM 角色分配。您可以在文本编辑器中或以编程方式执行此操作。示例:

    {
                "bindings": [
                  {
                    "role": "roles/beyondcorp.clientConnectorServiceUser",
                    "members": [
                      "user:EXAMPLE_USER@EXAMPLE.COM",
                      "group:EXAMPLE_GROUP@EXAMPLE.COM",
                    ],
                    "condition":
                     {
                       "expression":
            "'accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME' in
            request.auth.access_levels",
                      "title": "CONDITION_NAME"
                    }
                  }
                ]
    }
    

    替换以下内容:

    • POLICY_NAME:Access Context Manager 访问权限政策的数字名称
    • LEVEL_NAME:Access Context Manager 访问权限级别的名称
    • CONDITION_NAMEIAM 条件的标题文本。
  3. 写入更新后的政策。您可以使用 setIamPolicy() 方法写入更新后的 IAM 政策。示例:

    gcloud beta beyondcorp client-connector services set-iam-policy CLIENT_CONNECTOR_SERVICE_NAME policy.json \
      --project=CONSUMER_PROJECT \
      --location=SERVICE_LOCATION

    替换以下内容:

    • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。
    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • SERVICE_LOCATION:客户端连接器服务所在的区域。

API

  1. 阅读现有政策。getIamPolicy() 方法可将客户端连接器服务资源的现有 IAM 政策读入 policy.json

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME:getIamPolicy > policy.json
    

    替换以下内容:

    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • SERVICE_LOCATION:客户端连接器服务所在的区域。
    • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。
  2. 修改返回的政策。更新 policy.json 中的绑定以包含新的 IAM 角色分配。您可以在文本编辑器中或以编程方式执行此操作。示例:

     {
       "policy": {
          "bindings": [
            {
              "role": "roles/beyondcorp.clientConnectorServiceUser",
              "members": [
                "user:EXAMPLE_USER@EXAMPLE.COM",
                "group:EXAMPLE_GROUP@EXAMPLE.COM",
             ],
             "condition":
              {
                "expression":
     "'accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME' in
     request.auth.access_levels",
                "title": "CONDITION_NAME"
              }
           }
         ]
       }
     }
     

    替换以下内容:

    • POLICY_NAME:Access Context Manager 访问权限政策的数字名称
    • LEVEL_NAME:Access Context Manager 访问权限级别的名称
    • CONDITION_NAMEIAM 条件的标题文本。
  3. 写入更新后的政策。您可以使用 setIamPolicy() 方法写入更新后的 IAM 政策。示例:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @policy.json \
    https://beyondcorp.googleapis.com/v1/projects/CONSUMER_PROJECT/locations/SERVICE_LOCATION/clientConnectorServices/CLIENT_CONNECTOR_SERVICE_NAME:setIamPolicy
     

    替换以下内容:

    • CONSUMER_PROJECT:托管 CONSUMER_NETWORK 的项目的 ID。
    • SERVICE_LOCATION:客户端连接器服务所在的区域。
    • CLIENT_CONNECTOR_SERVICE_NAME:客户端连接器服务的名称。

在端点设备(Windows 或 macOS)上安装客户端连接器代理

  1. 按照在设备上设置端点验证中的步骤启用端点验证扩展程序。

  2. 启动并运行端点验证后,已更新用户的端点验证扩展程序会显示开始连接按钮。如需访问受保护的非 Web 应用,用户可以点击开始连接按钮。

用户首次启动连接时,端点验证会提示用户下载并安装客户端连接器二进制文件。或者,您也可以在以下网址下载客户端连接器二进制文件:

建立连接后,用户可以访问受保护的资源。 用户可以选择点击结束连接按钮来终止连接。

问题排查

如果您在使用客户端连接器时遇到问题,可参阅以下信息提供的问题排查步骤来解决问题。

您无法访问自己的应用

客户端连接器网关正在运行且已成功建立连接,但您仍然无法访问您的应用。

以下是导致此问题的最常见原因和可能的解决方案:

  • 您没有在 Cloud VPN 上通告分配的 IP 范围。如果您使用 Cloud VPN 连接到非 Google Cloud 应用,请确保也通过边界网关协议 (BGP) 向对等路由器通告为专用服务访问通道分配的 IP 范围。如需详细了解如何执行此操作,请参阅在 Cloud Router 上指定通告

  • 您在目标路由中指定的地址和掩码不正确。请确保在提供地址时遮盖位为零。例如,10.0.10.1 是无法提供 255.255.255.0 (/24) 网络掩码的地址。正确的地址应为 10.0.10.0

  • Private Service Access 分配的 IP 范围与托管应用的网络使用的 IP 子网之间可能发生 IP 冲突。请确保这些范围是互斥的。当应用托管在非 Google Cloud 网络中时,最常出现此问题。

您收到 Unable to connect to the network 消息

如果您收到 Unable to connect to the network. Check your network connection and try again. 消息,则表示您设备上的互联网连接未激活。

解决方案:确保互联网连接正常,然后尝试重新连接。

审核日志

如果您是管理员,则可以在 Google Cloud 控制台的日志记录页面中查看 BeyondCorp Enterprise 审核日志,包括客户端连接器审核日志。如需了解详情,请参阅 BeyondCorp Enterprise 服务审核日志

如果您是最终用户,可以通过完成以下步骤来访问连接日志:

  1. 右键点击浏览器中的端点验证扩展程序。
  2. 点击选项
  3. 选择日志级别的粒度。默认情况下,粒度级别设置为信息
  4. 点击显示日志

后续步骤