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

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

如果您没有公钥基础架构 (PKI),则可以使用由端点验证预配的证书

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

准备工作

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

确保您使用以下任一方法对资源强制执行 CBA: Google Cloud

当您对 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 证书的公用名。

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

验证政策配置(可选)

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

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

  3. 验证适用对象的值是否为机器。在 Chrome 操作系统上,适用于的值为当前用户

  4. 确保政策的状态没有冲突。如果状态确实存在冲突,请参阅了解 Chrome 政策管理了解详情。

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

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

支持以下命令行工具:

  • Google Cloud CLI

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

由于设备证书存储在原生密钥库中,因此 Google Cloud CLI 随附一个名为企业证书代理 (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

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

后续步骤