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

基于证书的访问权限可通过设备的 X.509 证书识别设备,从而保护对许多 Google 资源的访问。基于证书的访问权限可确保只有可信设备上具有 Google 生成证书的用户才可以通过 Identity-Aware Proxy TCP 转发获得管理员权限,或通过 VPC Service Controls 服务边界访问 Google Cloud API。

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

如需查看基于证书的访问权限支持的 VPC Service Controls 服务、工具和客户端库列表,请参阅基于证书的访问权限服务、工具和客户端库

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

  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 资源的精细访问权限控制。 对于基于证书的访问权限,端点验证还负责为每台可信设备生成、注册和出示通过 Google 验证的 X.509 证书。

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

首次安装的用户都应该拥有最新版本,但必须使用以下版本的端点验证才能支持基于证书的访问权限:

  • 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 CLI 创建您的自定义访问权限级别,则可以使用以下命令:

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 CLI 示例中 TITLE 的值)按访问权限级别限制访问权限。

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

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

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

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

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

控制台

让用户转到安全的 Cloud Console,并验证他们可以访问受基于证书的 VPC Service Controls 访问权限保护的服务。

转到安全的 Cloud Console

如果用户尝试在 Cloud Console 中访问受基于证书的访问保护且不在政策中的服务,则系统会显示以下错误消息:

VPC Service Controls: Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier

gcloud

  1. 让用户安装或更新 gcloud CLI,以确保他们具有基于证书的访问权限(264.0.0 或更高版本)的版本。

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

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

    gcloud config set context_aware/use_client_certificate true
    
  3. 然后,用户便可照常登录 gcloud CLI:

    gcloud auth login
    

    完成上述步骤后,您的用户便可以重新使用 gcloud CLI 对虚拟机实例进行管理和访问 Google Cloud API。