使用基于证书的访问权限保护资源

基于证书的访问权限可通过设备的 X.509 证书识别设备,从而保护对许多 Google 资源的访问。此功能以 BeyondCorp Enterprise 的现有情境感知访问权限功能(端点验证、Access Context Manager、VPC Service Controls 和 Identity-Aware Proxy TCP 转发)为基础构建,确保只有具有 Google 生成的证书的可信设备上的用户能够通过 IAP TCP 转发具有管理员权限,或使用 Google Cloud Console 或 Go 版 Google Cloud 客户端库访问 Google Cloud API。

这样可以提供更强的设备身份信号,更重要的是只有在同时存在凭据和原始设备证书的情况下才授予访问权限,从而有助于更好地保护用户,避免凭据盗用或意外丢失。

以下 VPC Service Controls 服务、命令行界面 (CLI) 和工具以及客户端库支持基于证书的访问权限:

服务 Compute Engine、Google Kubernetes Engine (GKE)、Pub/Sub、Cloud Spanner、Cloud Key Management Service、Cloud Storage、BigQuery、Cloud Logging
CLI/工具 gcloud、gsutil、Terraform、IAP 桌面设备
客户端库 Go、Python、Java

此功能可按照以下步骤设置:

  1. 将 Endpoint Verification 部署到组织中的设备。
  2. 在 Access Context Manager 中创建需要匹配设备证书才能访问的访问权限级别。
  3. 通过 IAP TCP 转发或 VPC Service Controls 服务边界应用访问权限级别来实施访问权限限制。
  4. 您的用户启用对现在受基于证书的访问权限保护的虚拟机实例或 Google Cloud API 的访问权限。

部署 Endpoint Verification

借助 Endpoint Verification,您可以构建访问组织数据的设备清单。作为 BeyondCorp Enterprise 解决方案的一部分,它还提供关键设备信任和基于安全性的访问权限控制,并帮助实施对 Google Cloud 资源的精细访问权限控制。 对于基于证书的访问权限,Endpoint Verification 还负责为每台可信设备生成、注册和展示经 Google 验证的 X.509 证书。

在 Mac、Windows 和 Linux 用户的桌面设备和笔记本电脑上,Endpoint Verification 作为 Chrome 扩展程序运行。管理员可以通过 Google Workspace 管理控制台将其部署到组织的公司自有设备上,组织的成员也可以自行安装

首次安装时,用户应使用最新版本,但必须使用以下版本的 Endpoint Verification 才能支持基于证书的访问权限:

  • Endpoint Verification Chrome 扩展程序:1.0.38 或更高版本
  • 原生帮助程序:Mac 为 0.4.40.0 或更高版本、Windows 为 0.4.36.0 或更高版本、Linux 为 20191007 或更高版本

创建访问权限级别

您需要通过在 Access Context Manager 中创建自定义访问级别来定义在确定对资源的访问时需要证书的访问级别。

用于访问权限级别名称、说明、方便用户使用的标题等值对您来说都有意义的,但自定义访问权限级别的表达式必须为:

certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE

例如,如果您使用 gcloud 工具创建您的自定义访问权限级别,则可以使用以下命令:

gcloud access-context-manager levels create LEVEL_NAME \
  --title=TITLE \
  --custom-level-spec=FILE \
  --description=DESCRIPTION \
  --policy=POLICY_NAME

通过 FILE 引用的 .yaml 文件的内容就是自定义表达式:

expression: "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE"

应用访问权限级别

现在访问权限级别已创建,最后一个管理步骤是通过应用该访问权限级别来实施其限制。

强制限制对虚拟机的管理访问

您可以通过 IAP TCP 转发应用虚拟机实例的管理访问权限的访问权限级别(通过 SSH 和 RDP):

  • 对于获授予 IAP-Secured Tunnel User 角色的用户或群组,请修改权限以添加条件。
  • 使用您之前定义的访问权限级别的名称(可能是 gcloud 工具示例中 TITLE 的值)按访问权限级别限制访问权限。

对 Google Cloud API 实施访问权限限制

每当用户尝试通过创建 VPC Service Controls 服务边界来访问某些管理 API 时,您可以强制执行基于证书的访问权限。创建(或修改)服务边界时,对于基于证书的访问权限,需要该选项来为边界外的请求指定访问权限级别。

使用您之前创建的自定义访问权限级别的名称(gcloud 工具示例中 TITLE 的值)将其包含在服务边界内。

允许用户访问受保护的资源

在基于证书的访问权限限制生效后,您的用户必须启用他们自己的对受保护资源的访问权限。

  • 让您的用户安装或更新 gcloud 工具,以确保他们的版本支持基于证书的访问权限。

    已安装 gcloud 工具的用户可以使用命令 gcloud --version 确认他们拥有的是 264.0.0 或更高版本。如果需要,他们可以使用以下命令更新他们的版本:

    gcloud components update
    
  • 用户必须运行以下命令才能开始使用基于证书的访问权限:

    gcloud config set context_aware/use_client_certificate true
    
  • 然后,他们可以像往常一样登录 gcloud 工具:

    gcloud auth login
    

完成这些步骤后,您的用户可以恢复为使用 gcloud 工具来管理性访问虚拟机实例以及访问 Google Cloud API。