使用企业证书启用基于证书的访问权限

本页面介绍了如何使用企业证书启用基于证书的访问权限 (CBA)

如果您没有公钥基础设施 (PKI),可以使用端点验证提供的证书

零信任访问模式的一项重要要求是仅允许访问已获授权的设备。情境感知访问权限 CBA 使用存储在设备上的安全密钥库中的证书及其私钥来确定设备是否已获得授权。如需启用此功能,请完成以下步骤。

准备工作

确保您已为 Google Cloud 项目创建 CBA 访问权限级别。如果您需要创建访问权限级别,请参阅为基于证书的访问创建访问权限级别

请使用以下方法之一,确保在 Google Cloud 资源上强制执行 CBA:

当您对 Google Cloud 资源强制执行 CBA 时,授权用户必须同时提供有效的设备证书,才能访问Google Cloud 资源。

上传信任锚

如需允许情境感知访问权限收集和验证设备的的企业证书,您必须上传用于颁发设备证书的信任锚。信任锚是指自签名根 CA 证书以及相关的中间证书和从属证书。如需上传信任锚,请完成以下步骤:

  1. Google 管理控制台中,依次前往设备 > 网络 > 证书,然后选择要为其上传信任锚的组织部门。确保您选择的组织部门包含您要向其授予访问权限的用户。

  2. 选择添加证书,然后输入根证书的名称。

  3. 点击上传以上传证书。

  4. 选择启用端点验证,然后点击添加

要上传的证书应该是 CA 证书,即安装在公司设备上的客户端证书的颁发者。如果贵公司没有 CA 证书和相应的客户端证书,您可以通过 Google Cloud 证书授权机构服务创建。将客户端证书安装到原生密钥库中的步骤因操作系统而异,不在本文档的讨论范围内。

配置用户的 Chrome 浏览器以使用企业证书

按照设置端点验证中的说明,为组织中的所有用户安装 Chrome 端点验证扩展程序。此扩展程序用于将证书元数据同步到 Google Cloud的后端。

设置浏览器扩展程序后,请配置 AutoSelectCertificateForURLs Chrome 政策,以允许端点验证搜索设备证书并通过 Chrome 收集。

  1. 确保用户的 Chrome 浏览器由 Chrome 浏览器云管理服务管理:

  2. 在管理控制台中,添加 AutoSelectCertificateForUrls 政策:

    1. 依次前往设备 > Chrome > 设置 > 用户和浏览器设置 > 客户端证书

    2. 选择适当的组织单元。

    3. 添加政策。

      以下示例添加了 AutoSelectCertificateForUrls 政策:

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

      在此示例中,CERT_ISSUER 是 CA 证书的通用名称。

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

验证政策配置(可选)

  1. 在 Chrome 浏览器中,输入 chrome://policy

  2. 验证 AutoSelectCertificateForUrls 是否列在 Chrome 政策下。

  3. 验证适用对象的值是否为机器。在 ChromeOS 上,应用对象的值为当前用户

  4. 确保政策的状态没有冲突。 如果状态确实存在冲突,请参阅了解 Chrome 政策管理以获取相关信息。

配置命令行工具以使用您的企业证书

如果组织中的用户需要从命令行访问 Google Cloud 资源,则必须完成以下步骤,才能在命令行工具中通过企业证书启用 CBA。

支持以下命令行工具:

  • Google Cloud CLI

  • Terraform CLI(仍需使用 gcloud CLI 来安装和配置辅助组件)。

由于设备证书存储在原生密钥库中,因此 Google Cloud CLI 与名为 Enterprise Certificate Proxy (ECP) 的开源组件捆绑在一起,以与密钥管理 API 进行交互。

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

支持以下操作系统及其各自的原生密钥库:

  • macOS(使用钥匙串)

  • 使用 CryptoAPI 的 Microsoft Windows

  • 使用 PKCS #11 的 Linux

必须使用必要的元数据信息配置 ECP,以便在密钥库中找到证书。

使用 Google Cloud CLI 安装和配置 ECP

  1. 安装 Google Cloud CLI 并启用 CBA。 安装时启用 bundled python 选项。

  2. 对于 macOS 和 Linux,请在下载 install.sh 脚本后运行该脚本:

    $ ./google-cloud-sdk/install.sh
    
  3. 使用 Google Cloud CLI 安装 ECP 帮助程序组件:

    gcloud components install enterprise-certificate-proxy
    
  4. 使用 Google Cloud CLI 初始化 ECP 证书配置:

Linux

$ gcloud auth enterprise-certificate-config create linux
  --label=<CERT_LABEL> --module=<PKCS11_MODULE_PATH> --slot=<SLOT_ID>

示例:

$ gcloud auth enterprise-certificate-config create linux
  --label="Google Endpoint Verification" --module=/usr/lib/x86_64-linux-gnu/pkcs11/libcredentialkit_pkcs11.so.0 --slot=0x1234567

macOS

$ gcloud auth enterprise-certificate-config create macos
  --issuer=<CERT_ISSUER>

示例:

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

Windows

$ gcloud auth enterprise-certificate-config create windows
  --issuer=<CERT_ISSUER> --provider=<PROVIDER> --store=<STORE>

示例:

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

您也可以手动配置 ECP。它以 JSON 文件形式存储在用户设备上的以下位置:

  • Linux 和 macOS:~/.config/gcloud/certificate_config.json

  • Windows:%APPDATA%\gcloud\certificate_config.json

如需查看有关配置和架构的其他示例,请参阅 GitHub 上的 ECP 文档

Linux

{
  "cert_configs": {
    "pkcs11": {
      "label": "<CERT_LABEL>",
      "slot": "<SLOT_ID>",
      "module": "<PKCS11_MODULE_PATH>"
    }
  },
  "libs": {
    "ecp": "/usr/lib/google-cloud-sdk/bin/ecp",
    "ecp_client": "/usr/lib/google-cloud-sdk/platform/enterprise_cert/libecp.so",
    "tls_offload": "/usr/lib/google-cloud-sdk/platform/enterprise_cert/libtls_offload.so"
  }
}

macOS

{
  "cert_configs": {
      "macos_keychain": {
        "issuer": "<CERT_ISSUER>"
      }
  },
  "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

{
  "cert_configs": {
    "windows_store": {
      "store": "MY",
      "provider": "current_user",
      "issuer": "<CERT_ISSUER>"
    }
  },
  "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"
  }
}

完成此配置后,用户可以通过启用 CBA 标志,使用命令行工具访问受保护的 Google Cloud 资源。

如需为 Google Cloud CLI 启用 CBA,请运行以下命令将 context_aware/use_client_certificate 属性设置为 true

$ gcloud config set context_aware/use_client_certificate true

如需为所有其他命令行工具(包括 Terraform)启用 CBA,请将环境变量 GOOGLE_API_USE_CLIENT_CERTIFICATE 设置为 true

后续步骤