使用端点验证证书启用基于证书的访问

本页介绍如何使用已配置的端点验证证书启用基于证书的访问权限 (CBA)

您可以使用端点验证为设备自动配置自签名证书。通过端点验证预配的证书可让您在没有 PKI 基础架构的情况下使用 CBA。这些证书存储在 macOS 的钥匙串中、Windows 的证书存储区中以及 Linux 的文件系统中。

如果您有 PKI 基础架构,请参阅使用企业证书启用基于证书的访问权限,以启用 CBA。

您可以在以下操作系统上启用端点验证配置的证书:

  • 使用 Chrome 浏览器的 macOS 和 Windows
  • 使用 Google Cloud CLI 的 macOS、Windows 和 Linux

如果您的操作系统未列出,请参阅使用未完全支持的操作系统

准备工作

在继续之前,请确保您满足以下要求:

设置“端点验证”

按照说明为组织中的所有用户设备安装 Chrome 端点验证扩展程序。该扩展程序会在您的设备上预配自签名证书,并将证书元数据同步到 Google Cloud。

安装端点验证帮助程序应用。将端点验证与 CBA 搭配使用时,必须安装此应用。

配置用户的 Chrome 浏览器

如需将用户的 Chrome 浏览器配置为使用端点验证提供的证书,您必须配置 AutoSelectCertificateFor网址s Chrome 政策,以允许端点验证搜索设备证书并通过 Chrome 收集该证书。

  1. 确保用户的 Chrome 浏览器由 Chrome 浏览器云管理服务管理
  2. Google 管理控制台中,添加 AutoSelectCertificateForUrls 政策。

    1. 依次前往设备 > Chrome > 设置 > 用户和浏览器设置 > 客户端证书
    2. 选择适当的组织单元。
    3. 添加政策。以下示例添加了 AutoSelectCertificateForUrls 政策:

      {"pattern":"https://[*.]clients6.google.com","filter":{"ISSUER":{"CN":"Google Endpoint Verification"}}}
      {"pattern":"https://console-secure.cloud.google.com","filter":{"ISSUER":{"CN":"Google Endpoint Verification"}}}
      {"pattern":"https://storage.mtls.cloud.google.com","filter":{"ISSUER":{"CN":"Google Endpoint Verification"}}}
      

配置完成后,用户可以使用 Chrome 浏览器通过 console-secure.cloud.google.com 访问受保护的Google Cloud 资源。

(可选)验证政策配置

  1. 在 Chrome 浏览器中,输入 chrome://policy
  2. 验证 AutoSelectCertificateForUrls 是否列在 Chrome 政策下。
  3. 验证适用对象的值是否为机器。在 ChromeOS 上,应用对象的值为当前用户
  4. 确保政策的状态没有冲突。如果状态存在冲突,请参阅了解 Chrome 政策管理以获取相关信息。

配置命令行工具

您可以配置以下工具以使用端点验证提供的证书:

  • Google Cloud CLI
  • Terraform CLI(需要 gcloud CLI 来安装和配置辅助组件)

由于设备证书存储在 macOS 和 Windows 密钥库中,因此 gcloud CLI 与 Enterprise Certificate Proxy (ECP) 开源组件捆绑在一起,以与密钥管理 API 进行交互。

如果您使用的是 Windows 系统,则必须安装 Visual Studio C++ 运行时库。

  1. 安装 gcloud CLI。 在启用捆绑的 Python 选项的情况下进行安装。
  2. 启用 CBA
  3. 对于 macOS 和 Linux,请下载并运行 install.sh 脚本。

    ./google-cloud-sdk/install.sh
    
  4. Linux 用户,请前往启用 CBA 和 Endpoint Verification 配置的证书 步骤。macOS 和 Windows 用户,请完成以下步骤。

    1. 使用 gcloud CLI 安装 ECP 帮助程序组件。

      
      gcloud components install enterprise-certificate-proxy
      
    2. 使用 gcloud CLI 初始化 ECP 证书配置。

      macOS

      
      gcloud auth enterprise-certificate-config create macos \
      --issuer="Google Endpoint Verification"
      

      Windows

      
      gcloud auth enterprise-certificate-config create windows \
      --issuer="Google Endpoint Verification" \
      --provider=current_user \
      --store=MY
      

      (可选)运行以下命令,手动配置 ECP 证书。

      macOS

      ECP 配置存储在 ~/.config/gcloud/certificate_config.json 中的 JSON 文件中。

      {
        "cert_configs": {
            "macos_keychain": {
              "issuer": "Google Endpoint Verification"
            }
        },
        "libs": {
          "ecp": "<YOUR_GCLOUD_INSTALL_PATH>/google-cloud-sdk/bin/ecp",
          "ecp_client": "<YOUR_GCLOUD_INSTALL_PATH>/google-cloud-sdk/platform/enterprise_cert/libecp.dylib",
          "tls_offload": "<YOUR_GCLOUD_INSTALL_PATH>/google-cloud-sdk/platform/enterprise_cert/libtls_offload.dylib"
        }
      }
      

      Windows

      ECP 配置存储在 %APPDATA%\gcloud\certificate_config.json 中的 JSON 文件中。

      {
        "cert_configs": {
          "windows_store": {
            "store": "MY",
            "provider": "current_user",
            "issuer":"Google Endpoint Verification"
          }
        },
        "libs": {
          "ecp": "C:/Users/<USERNAME>/AppData/Local/Google/Cloud SDK/google-cloud-sdk/bin/ecp.exe",
          "ecp_client": "C:/Users/<USERNAME>/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/enterprise_cert/libecp.dll",
          "tls_offload": "C:/Users/<USERNAME>/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/enterprise_cert/libtls_offload.dll"
        }
      }
      
  5. 启用 CBA 和端点验证已配置的证书。

    • 对于 gcloud CLI,请运行以下命令。

      gcloud config set context_aware/use_client_certificate true
      
    • 对于所有其他命令行工具(包括 Terraform),请设置环境变量。

      export GOOGLE_API_USE_CLIENT_CERTIFICATE=1
      

使用不受完全支持的操作系统

如果您的操作系统不在支持的操作系统列表中,但您想使用已配置的端点验证证书,则可以免除对环境的基于证书的强制执行,而是使用其他类型的强制执行来保护环境。例如,使用公司自有设备政策。

请注意,基于证书的强制执行比其他类型的强制执行提供更强的保护,因为它会通过 mTLS 握手强制执行来自设备的每个请求。

以下示例展示了如何免除环境接受基于证书的强制执行,并使用其他类型的强制执行来保护环境。

在此示例中,某组织使用 macOS、Windows 和 ChromeOS 设备。组织希望保护源自Google Cloud 控制台的访问。

  1. 创建访问权限级别,以强制所有设备(需要公司自有设备政策的 ChromeOS 设备除外)都必须通过证书进行访问。将 YAML 文件替换为以下自定义表达式:

    certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
     || (device.os_type == OsType.DESKTOP_CHROME_OS && device.is_corp_owned_device)
    
  2. 完成上述流程中的步骤。

    1. 创建情境感知政策
    2. 设置端点验证
    3. 将用户的 Chrome 浏览器配置为使用端点验证提供的证书