对 SaaS 应用的安全访问

本页面将指导您完成通过 Chrome 企业进阶版安全网关保护 SaaS 应用的过程。

Chrome 企业进阶版安全网关充当前向代理,强制执行零信任访问框架,并对 SaaS 应用的访问权限进行精细的情境感知控制。

如何保障 SaaS 应用的访问安全

下面简要介绍了安全网关如何保护您的 SaaS 应用:

  1. 客户端浏览器设置会通过安全网关代理路由应用流量。
  2. 安全网关会检查情境感知访问权限政策,以授权客户端(用户和设备)访问。
  3. 如果允许客户端访问,网关会使用分配给该网关和 Google Cloud区域的唯一来源 IP 地址将流量转发到应用。这些分配的 IP 地址专供您创建的网关使用,其他用户或网关无法使用。如需控制访问权限,您可以将这些专用来源 IP 地址添加到 SaaS 应用中的许可清单。

所需的角色

请让您的管理员授予以下角色:

详细了解 Identity and Access Management (IAM) 角色。

必需的 Chrome 企业版政策

安全网关代理身份验证需要使用 Basic HTTP 身份验证方案。如果您为组织配置了 Chrome 企业版身份验证政策,请验证以下政策设置:

  • AuthSchemes 必须包含 basic 身份验证(在未设置此政策时默认启用)。或者,在 Chrome 157 及更高版本中,如果贵组织从 AuthSchemes 中移除 basic,您可以将 AllHttpAuthSchemesAllowedForProxies 配置为包含安全网关代理端点(例如 via.prod.securegateway.goog:443)。AuthSchemes 中的其他值不会影响安全网关代理身份验证。

  • 必须将 BasicAuthOverHttpEnabled 设置为 0(false,或停用),以禁止不安全的 HTTP 连接使用 Basic 身份验证方案。

准备工作

在设置安全网关之前,请确认您已具备以下条件:

限制

Chrome 企业进阶版安全网关具有以下限制:

  • IPv6 连接:Chrome Enterprise Premium 安全网关不支持使用 IPv6 连接的 SaaS 应用。
  • 身份提供方作为 SaaS 应用:如果最终用户通过安全网关进行的身份验证依赖于同一 IdP,则不得将身份提供方配置为受安全网关保护的 SaaS 应用。

设置 shell 环境

为了简化设置流程并与安全网关 API 交互,请在工作 shell 中定义以下环境变量。

  • 常规参数

    PROJECT_ID=PROJECT_ID
    APPLICATION_ID=APPLICATION_ID
    APPLICATION_DISPLAY_NAME="APPLICATION_DISPLAY_NAME"
    HOST_NAME=HOST_NAME

    替换以下内容:

    • PROJECT_ID:在其中创建安全网关的项目的 ID。
    • APPLICATION_ID:应用的 ID,例如 github。名称最多可包含 63 个字符,并且可以包含小写字母、数字和连字符。第一个字符必须是字母,最后一个字符可以是字母或数字。
    • APPLICATION_DISPLAY_NAME:要显示的人类可读名称。
    • HOST_NAME:应用的主机名。例如 github.com。主机名最多可包含 253 个字符,并且必须遵循以下格式之一:

      • 有效的 IPv4 地址
      • 有效的 IPv6 地址
      • 有效的 DNS 名称
      • 星号 (*)
      • 星号 (*) 后跟有效的 DNS 名称
  • 安全网关参数

    SECURITY_GATEWAY_ID=SECURITY_GATEWAY_ID
    SECURITY_GATEWAY_DISPLAY_NAME="SECURITY_GATEWAY_DISPLAY_NAME"

    替换以下内容:

    • SECURITY_GATEWAY_ID:安全网关的 ID。ID 最多可包含 63 个字符,并且可以包含小写字母、数字和连字符。第一个字符应为字母,最后一个字符可以是字母或数字。
    • SECURITY_GATEWAY_DISPLAY_NAME:安全网关的人类可读名称。名称不得超过 63 个字符,且只能包含可打印字符。

创建安全网关

Chrome 企业进阶版安全网关是与应用建立安全连接的基本构建块。它会分配一个专用项目和网络,从而提供隔离和安全性。

控制台

如需创建安全网关资源,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往安全网关页面。
    前往“安全网关”
  2. 选择要为其创建安全网关的项目。
  3. 如需创建安全网关,请点击创建新网关,然后等待网关创建流程完成。
  4. 您可以在 Google Cloud 控制台的“通知”部分跟踪进度。
  5. 在创建 SaaS 应用资源之前,我们建议您先创建 SaaS 出站流量 hub。hubs 标志表示启用与目标应用的出站连接所需的区域级资源。您可以为每个区域配置一个 hub,每个 hub 提供两个 IP 地址。一个安全网关最多可以有 20 个 hub。您可以指定以下区域:
    • africa-south1
    • asia-east1
    • asia-east2
    • asia-northeast1
    • asia-northeast2
    • asia-northeast3
    • asia-south1
    • asia-south2
    • asia-southeast1
    • asia-southeast2
    • asia-southeast3
    • australia-southeast2
    • europe-central2
    • europe-north1
    • europe-north2
    • europe-southwest1
    • europe-west1
    • europe-west10
    • europe-west12
    • europe-west2
    • europe-west3
    • europe-west4
    • europe-west6
    • europe-west8
    • europe-west9
    • me-central1
    • me-central2
    • me-west1
    • northamerica-northeast1
    • northamerica-northeast2
    • northamerica-south1
    • southamerica-east1
    • southamerica-west1
    • us-central1
    • us-central2
    • us-east1
    • us-east4
    • us-east5
    • us-east7
    • us-south1
    • us-west1
    • us-west2
    • us-west3
    • us-west4
    • us-west8
  6. 在 Google Cloud 控制台中,前往 SaaS 出站流量中心页面。
    前往“SaaS 出站流量 hub”
  7. 选择要为其创建 SaaS 出站流量 hub 的项目。
  8. 如需添加 SaaS 出站流量 hub,请点击添加 SaaS 出站流量 hub。
  9. 从下拉列表中,选择要添加出站流量 hub 的区域。如需添加出站流量 hub,请点击添加 SaaS 出站流量 hub,以添加多个 hub。完成后,点击“保存”以创建出站流量中心。

gcloud

如需创建安全网关资源,请运行以下命令。对于 --hubs 标志,请从以下列表中指定一个或多个区域。

gcloud beyondcorp security-gateways create SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --display-name="SECURITY_GATEWAY_DISPLAY_NAME" \
    --hubs=us-central1 \
    --service-discovery={}
      

hubs 标志用于设置启用与目标应用的出站流量连接所需的区域级资源。每个区域可以有一个 hub,每个 hub 提供两个 IP 地址。一个安全网关最多可以有 20 个 hub。您可以指定以下区域:

  • africa-south1
  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-south2
  • asia-southeast1
  • asia-southeast2
  • asia-southeast3
  • australia-southeast2
  • europe-central2
  • europe-north1
  • europe-north2
  • europe-southwest1
  • europe-west1
  • europe-west10
  • europe-west12
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • europe-west8
  • europe-west9
  • me-central1
  • me-central2
  • me-west1
  • northamerica-northeast1
  • northamerica-northeast2
  • northamerica-south1
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-central2
  • us-east1
  • us-east4
  • us-east5
  • us-east7
  • us-south1
  • us-west1
  • us-west2
  • us-west3
  • us-west4
  • us-west8

REST

如需创建安全网关资源,请调用 Create API 方法,并在请求正文中提供网关详细信息。对于 hubs 标志,请从以下列表中指定一个或多个区域。

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d '{ "display_name": "SECURITY_GATEWAY_DISPLAY_NAME", "hubs": { "us-central1": {} }, "service_discovery": {} }' \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways?security_gateway_id=SECURITY_GATEWAY_ID"
      

hubs 标志表示启用与目标应用的出站连接所需的区域级资源。每个区域可以有一个 hub,每个 hub 提供两个 IP 地址。一个安全网关最多可以有 20 个 hub。您可以指定以下区域:

  • africa-south1
  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-south2
  • asia-southeast1
  • asia-southeast2
  • asia-southeast3
  • australia-southeast2
  • europe-central2
  • europe-north1
  • europe-north2
  • europe-southwest1
  • europe-west1
  • europe-west10
  • europe-west12
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • europe-west8
  • europe-west9
  • me-central1
  • me-central2
  • me-west1
  • northamerica-northeast1
  • northamerica-northeast2
  • northamerica-south1
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-central2
  • us-east1
  • us-east4
  • us-east5
  • us-east7
  • us-south1
  • us-west1
  • us-west2
  • us-west3
  • us-west4
  • us-west8

配置 SaaS 应用

创建安全网关后,您可以将 SaaS 应用配置为使用安全网关进行安全访问。

控制台

如需配置 SaaS 出站流量 hub,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 SaaS 出站流量中心页面。
    前往“SaaS 出站流量 hub”
  2. 在 SaaS 出站流量 hub 页面上,找到列出 hub 的表格。对于您打算使用的每个区域,请复制静态专用出站 IP 列中列出的所有 IP 地址。每个区域提供两个 IP 地址。
  3. 将这些 IP 地址添加到 SaaS 应用的 IP 许可清单中。例如,对于 GitHub 应用,您可以按照以下指南操作:管理组织的允许 IP 地址。

gcloud

如需配置 SaaS 出站流量 hub,请执行以下操作:

  1. 获取安全网关为每个 hub 分配的 IP 地址。系统会为一个区域分配两个 IP 地址。
  2. gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \
        --project=PROJECT_ID \
        --location=global
            

    以下是具有 hubs 的安全网关的示例 GET 响应。在此示例中,hubs 是在 us-central1 和 us-east1 区域中创建的,并且响应中返回的所有 IP 地址都必须在 SaaS 应用中允许。

    createTime: 'CREATE_TIME'
    displayName: My secure gateway
    hubs:
      us-central1:
        internetGateway:
          assignedIps:
          -   IP_ADDRESS_1
          -   IP_ADDRESS_2
      us-east1:
        internetGateway:
          assignedIps:
          -   IP_ADDRESS_1
          -   IP_ADDRESS_2
    name: projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID
    state: RUNNING
    updateTime: 'UPDATE_TIME'
        
  3. 将这些 IP 地址添加到 SaaS 应用的 IP 许可清单中。例如,对于 GitHub 应用,您可以按照以下指南操作:管理组织的允许 IP 地址。

REST

如需配置 SaaS 出站流量 hub,请执行以下操作:

  1. 获取安全网关为每个 hub 分配的 IP 地址。系统会为一个区域分配两个 IP 地址。
  2. curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID"
            

    以下是具有 hubs 的安全网关的示例 GET 响应。在此示例中,hubs 是在 us-central1 和 us-east1 区域中创建的,并且响应中返回的所有 IP 地址都必须在 SaaS 应用中允许。

    {
      "securityGateways": [
        {
          "name": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID",
          "createTime": "CREATE_TIME",
          "updateTime": "UPDATE_TIME",
          "displayName": "My secure gateway",
          "state": "RUNNING",
          "hubs": {
            "us-central1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            },
            "us-east1": {
              "internetGateway": {
                "assignedIps": [
                  "IP_ADDRESS_1",
                  "IP_ADDRESS_2",
                ]
              }
            }
          }
        }
      ]
    }
        
  3. 将这些 IP 地址添加到 SaaS 应用的 IP 许可清单中。例如,对于 GitHub 应用,您可以按照以下指南操作:管理组织的允许 IP 地址。

创建应用资源

以下信息将指导您完成设置和配置安全网关应用资源的过程。

在 Google Cloud中创建安全网关应用资源

Google Cloud 应用资源是安全网关资源的子资源。通过使用 Google Cloud 控制台或调用 Create API 来创建应用资源。

控制台

如需创建 SaaS 应用,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往安全网关页面。
    前往“安全网关”
  2. 如需创建应用,请点击添加应用。
  3. 选择应用类型:公开应用。
  4. 如果尚未为此安全网关配置 SaaS 出站中心,系统会提示您创建。公开应用至少需要一个 SaaS 出站流量 hub。如需配置 SaaS 出站流量 hub,请点击前往 SaaS 出站流量 hub,然后添加一个或多个区域。
  5. 拥有一个或多个出站流量 hub 后,点击下一步。
  6. 输入应用详细信息:
    • 应用名称:输入一个名称,例如 GitHub。
    • 网域匹配器:输入要通过安全网关路由的网域模式列表(以英文逗号分隔)。请以 domain:port 格式添加端口。允许使用通配符 (*)。例如:github.com:443。
  7. 如需配置 SaaS 应用,请点击继续。
  8. 将 SaaS 应用配置为允许来自安全网关的流量:
    1. 请仔细记下或复制您所用区域列出的所有 IP 地址。这些 IP 地址专属于您的安全网关。
    2. 登录 SaaS 应用的管理控制台。
    3. 前往管理 IP 许可清单的投放网络设置或安全设置。
    4. 将获取的所有 IP 地址添加到应用的 IP 许可清单中。
  9. 如需添加应用,请点击继续。
  10. 可选:定义访问权限政策:选择 Access Context Manager 访问权限政策。对于本指南,您可以跳过此步骤。
  11. 如需创建、保存设置并创建应用,请点击创建。

gcloud

如需使用 gcloud 创建 SaaS 应用,请运行以下命令:

gcloud beyondcorp security-gateways applications create APPLICATION_ID \
    --project=PROJECT_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --location=global \
    --display-name="APPLICATION_DISPLAY_NAME" \
    --endpoint-matchers="hostname=HOST_NAME,ports=443"
      

REST

如需使用 REST API 创建 SaaS 应用,请运行以下命令:

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -X POST \
    -d "{ \"display_name\": \"APPLICATION_DISPLAY_NAME\", \"endpoint_matchers\": [{hostname: \"HOST_NAME\", ports: 443}] }" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications?application_id=APPLICATION_ID"
      

配置访问权限政策

您可以应用访问权限政策,在应用级层控制访问权限。如果未配置访问权限政策,系统会默认拒绝访问应用。

控制台

为多个应用创建政策

如需配置访问权限政策,请执行以下操作:

  1. 如需创建适用于关联到安全网关的多个应用的政策,请前往政策页面。
    前往“政策”
  2. 如需向应用添加访问权限政策,请点击创建政策。
  3. 从下拉列表中,选择您希望将政策应用到的应用。
  4. 向政策添加主账号:

    主账号可以是用户、群组、网域或服务账号。系统会根据您分配的访问权限级别,向这些主账号授予或拒绝访问权限。

    1. 如需添加主账号,请点击添加主账号。
    2. 在主账号字段中,输入用户、群组、服务账号的邮箱或域名。
    3. 在访问权限级别下拉菜单中,选择一个或多个预定义的情境感知访问权限级别。只有在主账号满足所选访问权限级别的条件时,系统才会授予访问权限。

    如需添加更多主账号,请再次点击添加主账号,然后重复执行上述子步骤。

    您可以在 Access Context Manager 中创建和管理访问权限级别。

  5. 如需将政策应用于应用,请点击创建政策。

修改应用级访问权限政策

  1. 如需修改单个应用的政策,请前往应用页面。
    打开“应用”
  2. 如需查找要修改的应用,请执行以下操作:
    1. 在应用列表中,搜索要修改的应用。
    2. 如需查看应用详情,请点击更多操作菜单 (),然后选择查看详情。
  3. 如需修改应用,请点击修改。
  4. 向政策添加主账号:

    主账号可以是用户、群组、网域或服务账号。系统会根据您分配的访问权限级别,向这些主账号授予或拒绝访问权限。

    1. 如需添加主账号,请点击添加主账号。
    2. 在主账号字段中,输入用户、群组、服务账号的邮箱或域名。
    3. 在访问权限级别下拉列表中,选择一个或多个预定义的情境感知访问权限级别。只有在主账号满足所选访问权限级别的条件时,系统才会授予访问权限。

    如需添加更多主账号,请再次点击添加主账号,然后重复执行上述子步骤。

    您可以在 Access Context Manager 中创建和管理访问权限级别。

  5. 如需将政策应用于应用,请点击保存。

gcloud

添加服务发现网关级绑定

在向用户授予应用访问权限之前,请确保用户在安全网关级别拥有服务发现权限。

gcloud beyondcorp security-gateways add-iam-policy-binding SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.serviceDiscoveryUser" \
    --member=MEMBER
  

替换以下内容:

  • SECURITY_GATEWAY_ID:安全网关的 ID
  • PROJECT_ID:配置了安全网关的项目的 ID
  • MEMBER:您要为其分配服务发现角色的用户、用户组或服务账号。如需了解详情,请参阅 IAM 主账号

添加应用级绑定

gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER
  

替换以下内容:

  • APPLICATION_ID:应用资源的 ID
  • SECURITY_GATEWAY_ID:安全网关的 ID
  • PROJECT_ID:配置了安全网关的项目的 ID
  • MEMBER:您要为其分配服务发现角色的用户、用户组或服务账号。如需了解详情,请参阅 IAM 主账号

添加条件绑定

您还可以添加具有条件的绑定。条件用于指定要求,例如用户的 IP 地址来自特定位置。(访问权限级别可以在组织级访问权限政策或范围限定的访问权限政策中定义。)

以下示例命令仅在来源 IP 地址位于指定访问权限级别内时授予访问权限:

gcloud beyondcorp security-gateways applications add-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER \
    --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
  

移除服务发现网关级绑定

在安全网关级别撤消用户的服务发现权限。

gcloud beyondcorp security-gateways remove-iam-policy-binding SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.serviceDiscoveryUser" \
    --member=MEMBER
  

替换以下内容:

  • SECURITY_GATEWAY_ID:安全网关的 ID
  • PROJECT_ID:配置了安全网关的项目的 ID
  • MEMBER:您要从中移除服务发现角色的用户、用户组或服务账号。如需了解详情,请参阅 IAM 主账号

移除应用级绑定

gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER
  

替换以下内容:

  • APPLICATION_ID:应用资源的 ID
  • SECURITY_GATEWAY_ID:安全网关的 ID
  • PROJECT_ID:配置了安全网关的项目的 ID
  • MEMBER:您要从中移除服务发现角色的用户、用户组或服务账号。如需了解详情,请参阅 IAM 主账号

移除条件绑定

您也可以移除具有条件的绑定。条件用于指定要求,例如用户的 IP 地址来自特定位置。(访问权限级别可以在组织级访问权限政策或范围限定的访问权限政策中定义。)

以下示例命令会移除具有指定访问权限级别的条件绑定:

gcloud beyondcorp security-gateways applications remove-iam-policy-binding APPLICATION_ID \
    --security-gateway=SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --role="roles/beyondcorp.sgApplicationUser" \
    --member=MEMBER \
    --condition="expression='accessPolicies/1234567890/accessLevels/in_us' in request.auth.access_levels,title=Source IP must be in US"
  

REST

安全地更新访问权限政策

setIamPolicy 命令会将整个现有政策替换为您提供的政策。为避免意外移除现有权限,我们建议您使用以下“读取-修改-写入”模式。此模式有助于防止意外移除现有权限。

  1. 读取:将当前访问权限政策保存到文件中。
  2. 修改:在本地修改政策文件,以添加或更改权限。
  3. 写入:应用更新后的政策文件。

设置服务发现网关级政策

如需授予服务发现权限,您必须在安全网关(而非单个应用)上设置访问权限政策。这遵循相同的“读取-修改-写入”模式。

检索当前政策并将其保存到名为 gateway_policy.json 的文件中。

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID:getIamPolicy" > gateway_policy.json
  

接下来,在文本编辑器中打开 gateway_policy.json 文件,然后将所需的主账号添加到 roles/beyondcorp.serviceDiscoveryUser 角色的 members 列表中,类似于应用级修改。

gateway_policy.json 文件类似于以下示例:

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.serviceDiscoveryUser",
      "members": [
        "group:existing-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
  

您还可以在政策绑定中添加其他类型的成员,例如 serviceAccount、user、group、principal 和 principalSet。如需了解详情,请参阅 IAM 主账号。

应用更新后的政策:

jq '{policy: .}' gateway_policy.json | curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @- \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID:setIamPolicy"
  

设置应用级访问权限政策

获取当前政策

检索当前政策。如果多个管理员同时进行更改,etag 字段可防止更新冲突。

以下命令会检索政策并将其保存到名为 policy.json 的文件中。

curl \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:getIamPolicy" > policy.json
  

替换以下内容:

  • PROJECT_ID:配置了安全网关的项目的 ID
  • SECURITY_GATEWAY_ID:安全网关的 ID
  • APPLICATION_ID:应用资源的 ID

该命令会创建一个包含当前政策的 policy.json 文件。

修改政策文件

如需向群组授予使用安全网关的权限,请执行以下操作:

  1. 通过文本编辑器打开 policy.json 文件。
  2. 将该群组添加到 roles/beyondcorp.securityGatewayUser 角色的 members 列表中。

policy.json 文件类似于以下示例:

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.sgApplicationUser",
      "members": [
        "group:existing-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
      

如需添加其他群组,请向 members 数组添加新条目。在前面的条目后添加英文逗号。 以下示例添加了 new-group@example.com:

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.sgApplicationUser",
      "members": [
        "group:existing-group@example.com",
        "group:new-group@example.com"
      ]
    }
  ],
  "etag": "BwXN8_d-bOM="
}
    

您还可以在政策绑定中添加其他类型的成员,例如 serviceAccount、user、group、principal 和 principalSet。如需了解详情,请参阅 IAM 主账号。

应用更新后的政策

修改并保存 policy.json 文件后,使用 setIamPolicy 命令将其应用于资源。此命令使用文件中的 etag,以确保您更新正确的版本。

jq '{policy: .}' policy.json | curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d @- \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID/applications/APPLICATION_ID:setIamPolicy"
  

替换以下内容:

  • PROJECT_ID:配置了安全网关的项目的 ID
  • SECURITY_GATEWAY_ID:安全网关的 ID
  • APPLICATION_ID:应用资源的 ID

添加条件访问权限政策

您还可以设置带条件的访问权限政策。条件用于指定要求,例如用户的 IP 地址来自特定位置。(访问权限级别可以在组织级访问权限政策或范围限定的访问权限政策中定义。)

以下示例政策仅在来源 IP 地址位于指定访问权限级别内时授予访问权限:

{
  "version": 3,
  "bindings": [
    {
      "role": "roles/beyondcorp.sgApplicationUser",
      "members": [
        "group:group@example.com"
      ],
      "condition": {
        "expression": "request.auth.access_levels.contains('accessPolicies/1234567890/accessLevels/in_us')",
        "title": "Source IP must be in US"
      }
    }
  ],
  "etag": "BwXN8_d-bOM="
}
  

如需应用此政策,请按照前面所述的步骤操作。

通过情境感知访问权限增强安全性

为了进一步增强安全性,并确保只有受管理的 Google Chrome 实例才能通过安全网关访问您的 Web 应用,我们建议您添加情境感知访问权限 (CAA) 规则。此规则会验证用户的 Chrome 个人资料是否处于受管理状态,从而防止非受管浏览器或恶意浏览器可能造成的滥用。

注意:此功能需要安装和设置端点验证扩展程序。

为此,您可以在 Access Context Manager 自定义访问权限级别中添加一个条件。以下是您可以调整的示例条件:

  device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
  

如需详细了解如何配置、检查和管理此状态,请参阅 Chrome 浏览器属性。

安装 Chrome 企业进阶版扩展程序

Chrome 企业进阶版扩展程序是安全网关不可或缺的一部分,有助于进行身份验证。为安全网关的所有用户安装该扩展程序。如需了解如何部署扩展程序,请参阅查看和配置应用和扩展程序。如需安装 Chrome 企业进阶版扩展程序,请执行以下操作:

  1. 前往 Google 管理控制台。
  2. 依次点击 Chrome 浏览器 > 应用和扩展程序。
  3. 点击用户和浏览器标签页。
  4. 如需添加 Chrome 扩展程序,请点击 + 按钮,然后选择按 ID 添加 Chrome 应用或扩展程序。
  5. 使用以下 ID 搜索安全企业浏览器扩展程序,然后将其安装政策设置为强制安装,以便为组织部门或群组中的所有用户安装该扩展程序:

    ekajlcmdfcigmdbphhifahdfjbkciflj
  6. 点击已安装的扩展程序,然后在扩展程序政策字段中输入以下 JSON 值:

    {
      "securityGateway": {
        "Value": {
          "authentication": {},
          "context": { "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" },
          "serviceDiscovery": { "routes": {} }
        }
      }
    }

    请替换以下内容:

    • PROJECT_ID:配置了安全网关的项目的 ID
    • SECURITY_GATEWAY_ID:安全网关的 ID

  7. 如需保存配置,请点击保存。

旧版 PAC 文件设置

启用服务发现后,Chrome 浏览器客户端可以自动检测流量,并通过安全网关将流量路由到您配置的应用,而无需使用 PAC 文件进行手动路由配置。

如果您的安全网关未启用服务发现功能,则表示您使用的是旧版设置。您需要配置 PAC 文件,以控制 Chrome 浏览器客户端上的路由。

如需检查您是否采用旧版设置,请使用以下命令查看是否已启用服务发现:

gcloud

gcloud beyondcorp security-gateways describe SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global | grep -i "serviceDiscovery"
      

REST

curl --silent \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID" | grep -i "serviceDiscovery"
      

如果该命令未返回任何输出,则表示您的网关使用的是旧版设置。对于使用旧版设置的网关,路由由托管的 PAC 文件处理。

第 1 步:创建并托管 PAC 文件

  1. 使用以下 JavaScript 创建一个名为 pac_config.js 的文件,并将 HOST_NAME 替换为您的应用域名(例如 myapp.example.com):

    function FindProxyForURL(url, host) {
      const PROXY = "HTTPS via.prod.securegateway.goog:443";
      const sites = ["HOST_NAME"];
    
      for (const site of sites) {
        if (shExpMatch(url, 'https://' + site + '/*') || shExpMatch(url, '*.' + site + '/*')) {
          return PROXY;
        }
      }
      return 'DIRECT';
    }
  2. 将 PAC 文件上传到托管服务,例如 Cloud Storage 存储桶。

    • 确保该文件可公开下载。
    • 将 HTTP 标头 Cache-Control 设置为 no-cache,以便浏览器始终提取最新的路由规则。
  3. 复制已上传的 PAC 文件的公开网址。

第 2 步:在 Google 管理控制台中应用 PAC 文件

  1. 前往 Google 管理控制台。
  2. 依次前往设备 > Chrome > 设置。
  3. 选择您的组织部门或群组,然后点击代理模式。
  4. 在代理模式下,选择始终使用以下指定的代理自动配置。
  5. 在提供的字段中输入托管的 PAC 文件的公开网址。
  6. 点击保存。

第 3 步:配置 Chrome 企业进阶版扩展程序

扩展程序需要处理身份验证。此扩展程序政策与标准配置不同,因为它不包含 serviceDiscovery 代码块。

  1. 在 Google 管理控制台中,依次点击 Chrome 浏览器 > 应用和扩展程序。
  2. 前往用户和浏览器标签页,确保已添加并强制执行安全企业浏览器扩展程序 (ekajlcmdfcigmdbphhifahdfjbkciflj)。
  3. 点击该扩展程序,然后在扩展程序政策字段中输入以下 JSON 值:

    {
      "securityGateway": {
        "Value": {
          "authentication": {},
          "context": {
            "resource": "projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID"
          }
        }
      }
    }
  4. 点击保存。

过渡到服务发现设置

如需将旧版安全网关从 PAC 文件设置转换为较新的服务发现设置,您必须手动启用该功能并更新配置。

  1. 在安全网关上启用服务发现:更新现有网关以启用服务发现。

    gcloud

    gcloud beyondcorp security-gateways update SECURITY_GATEWAY_ID \
    --project=PROJECT_ID \
    --location=global \
    --service-discovery={}
          

    REST

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{ "service_discovery": {} }' \
    "https://beyondcorp.googleapis.com/v1/projects/PROJECT_ID/locations/global/securityGateways/SECURITY_GATEWAY_ID?updateMask=service_discovery"
          
  2. 设置网关级访问权限政策:在网关级向用户授予 roles/beyondcorp.serviceDiscoveryUser 角色,以便他们可以使用服务发现功能。按照添加服务发现网关级绑定部分中的说明操作。

  3. 更新 Chrome 企业进阶版 扩展程序配置:按照安装 Chrome 企业进阶版 扩展程序部分中的说明更新扩展程序政策。新的 JSON 配置必须包含 "serviceDiscovery": { "routes": {} } 块。

  4. 移除旧版 PAC 文件:服务发现功能启用后,就不再需要旧版 PAC 文件。

    1. 在 Google 管理控制台中,依次点击设备 > Chrome > 设置 > 用户和浏览器设置 > 网络。
    2. 找到代理模式设置。
    3. 移除代理自动配置 (PAC) 网址,或将设置从始终使用以下指定的代理自动配置切换为适合您网络的模式,例如允许用户进行配置。
    4. 点击保存。

最终用户体验

设置完成后,访问受保护 SaaS 应用的最终用户会根据应用于该应用的访问权限政策获得或拒绝访问权限。

在 Chrome 中访问应用

需要使用 Chrome 企业进阶版扩展程序,才能通过安全网关引导流量。该扩展程序负责处理用户与安全网关之间的身份验证。该扩展程序会通过网域政策自动安装。

当用户访问您配置的 SaaS 应用时,其流量会通过安全网关,安全网关会检查用户是否满足访问权限政策。如果用户通过了访问权限政策检查,则会获得对应用的访问权限。

当授权政策拒绝浏览器访问应用时,用户会收到 Access denied 消息。

后续步骤