使用访问权限级别定义访问权限政策

本页面介绍了如何使用访问权限级别定义情境感知访问权限政策。

访问权限级别是基于请求来源而为请求分配的一组属性。您可以使用设备类型、IP 地址和用户身份等信息,指定要授予的访问权限级别。例如,您可以为来自公司网络内部的连接分配 High_Trust 级别,为运行已获批准的操作系统的外部设备分配 Medium_Trust 级别。

访问权限政策是所有 Access Context Manager 资源(例如访问权限级别和服务边界)的容器。

如需详细了解访问权限级别和访问权限政策,请参阅 Access Context Manager 概览。

限制

定义访问权限级别时,存在以下限制:

  • 您不能将 IP 地址用作 Docker 连接的属性,也不能在使用 kubectl 或托管式 Looker 实例连接到专用集群时使用专用 IP 地址。
  • 无论 Access Context Manager 政策如何,始终允许数据洞察不受限制地访问Cloud de Confiance by S3NS API。
  • 设备属性不适用于非 Google OAuth 客户端应用。
  • 您无法使用限定范围的访问权限级别。

使用访问权限级别定义政策

控制台

创建基本访问权限级别:

  1. 在 Cloud de Confiance 控制台中,打开 Access Context Manager 页面。

    转到 Access Context Manager 页面

  2. 如果系统提示您,请选择一个项目。

  3. 在 Access Context Manager 页面上,点击新建。

  4. 在新建访问权限级别窗格中,执行以下操作:

    1. 在访问权限级别标题字段中,输入访问权限级别的标题。 标题最多不能超过 50 个字符,以字母开头,并且只能包含数字、字母、下划线和空格。

    2. 在条件部分,点击要添加的属性类型对应的添加按钮,然后提供要应用于该属性的值。

      如需可添加属性的完整列表,请参阅访问权限级别属性。

      例如,如果您希望访问权限级别考虑请求来自于您网络的何处,应选择 IP 子网属性。

      重复此步骤,向同一个条件添加多个属性。 如果一个条件具有多个属性,访问请求必须满足所有属性。

      访问权限级别条件可以包含每种类型的属性。一些属性包含其他选项,例如设备政策属性。

      访问权限级别支持基于用户身份的条件。但是,如需向条件添加身份,您必须使用 gcloud CLI 或 API 创建或更新访问权限级别。

    3. 使用如果满足条件,则返回选项,指定条件是作为 AND 运算(要求请求满足所有指定属性 [TRUE])还是作为否定 (NAND) 运算(当请求不满足至少一个指定属性 [FALSE] 时满足)进行求值。

      例如,如果要拒绝来自网络某个 IP 地址范围的请求,请使用 IP 子网属性指定 IP 地址范围,然后将条件设置为 FALSE。

    4. (可选)点击添加其他条件 (Add another condition),向您的访问权限级别添加其他条件,然后重复前面两个步骤。

      例如,如果要拒绝访问更宽的 IP 地址范围内的 IP 地址子集,请创建新条件,为IP 子网属性指定子集 IP 地址范围,然后将条件设置为返回 FALSE。

      重复此步骤,向同一个访问权限级别添加多个条件。

    5. 如果您创建了多个条件,请使用将条件与以下项组合来指定您是否希望访问权限级别要求请求至少满足其中一个条件 (OR) 或所有条件 (AND)。

    6. 点击保存。

gcloud

如果您没有组织的访问权限政策,请先创建一个,然后再继续。

使用 gcloud access-context-manager levels create 命令创建访问权限级别:

gcloud access-context-manager levels create LEVEL_NAME OPTIONS \
    --policy=POLICY

替换以下内容:

  • LEVEL_NAME:访问权限级别的唯一名称。必须以字母开头,并且只包含字母、数字和下划线。名称最多可以包含 50 个字符。

  • OPTIONS:下表中的必需选项。

    选项
    basic-level-spec

    一个 YAML 文件,用于为访问权限级别指定一个或多个条件。

    title

    访问权限级别的简短标题。访问权限级别的标题会显示在 Cloud de Confiance 控制台中。

    combine-function

    (可选)确定条件的合并方式。

    有效值:AND、OR

    description

    (可选)访问权限级别的详细说明。

  • POLICY:贵组织的访问权限政策的 ID。 如果您设置了默认政策,则此参数为可选参数。

(可选)您可以添加任何 gcloud 标志。

basic-level-spec YAML 文件

使用 gcloud CLI 创建访问权限级别时,您必须为 basic-level-spec 选项提供 YAML 文件。YAML 文件定义了访问权限级别的一个或多个条件。条件必须至少包含一个属性。如果一个条件包含多个属性,则这些属性会组合为 AND 运算(所有属性都必须为 true)或 NAND 运算(至少有一个属性必须为 false),具体取决于条件中的 negate 属性是否设置为 true。

如需查看可包含在 YAML 文件中的属性的完整列表,请参阅访问权限级别属性。

如需详细了解访问权限级别和 YAML,请参阅访问权限级别的示例 YAML。

示例命令

gcloud access-context-manager levels create Device_Trust \
    --basic-level-spec=corpdevspec.yaml \
    --combine-function=AND \
    --description='Access level that conforms to corporate spec.' \
    --title='Device_Trust Extended' \
    --policy=1521580097614100

API

如果您没有组织的访问权限政策,请先创建一个,然后再继续。

要创建访问权限级别,请调用 accessLevels.create。

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels

POLICY 是您组织的访问权限政策的 ID。

请求正文

请求正文必须包含一个 AccessLevel 资源,用于指定您希望新访问权限级别满足的条件。每个 Condition 都有一个或多个属性,这些属性会作为 AND 运算(所有属性都必须为 true)或 NAND 运算(至少一个属性必须为 false)进行求值,具体取决于 negate 字段是否设置为 true。评估结果决定了条件是否满足。

响应正文

如果成功,调用的响应正文将包含一个 Operation 资源,用于提供与 POST 操作相关的详细信息。

常见政策配置

以下示例介绍了一些实现访问权限级别的实用方法,以供您的组织借鉴之用。这些示例假设您的组织已经有访问权限政策。

限制公司网络上的访问权限

本示例介绍如何创建仅允许从指定范围 IP 地址(例如公司网络中的 IP 地址)访问的访问权限级别条件。

限制获得访问权限的 IP 地址范围,令组织内外部攻击者更难以泄露数据。

对于此示例,假设您要创建的访问权限级别将允许一组内部审核员访问名为 sensitive-data 的项目的 Cloud Logging 服务。这些审核人员的所有设备的 IP 属于 203.0.113.0 到 203.0.113.127 这一子网范围。您知道,除了审核人员使用的设备之外,不会有任何设备分配给该子网。

如果您想使用专用 IP 地址范围(例如 192.168.0.0/16 或 172.16.0.0/12),请参阅允许从内部 IP 地址访问受保护的资源,了解更多信息以及使用 VPC Service Controls 的实现示例。

控制台

  1. 在 Cloud de Confiance 控制台中,打开 Access Context Manager。

    转到 Access Context Manager 页面

  2. 如果系统提示您,请选择项目。

  3. 在 Access Context Manager 页面的顶部,点击新建。

  4. 在新建访问权限级别窗格的条件部分中,点击添加属性,然后点击 IP 子网。

  5. 在 IP 子网框中,选择公共 IP 或专用 IP。

    • 如果您选择公共 IP,请输入一个或多个格式为 CIDR 块的 IPv4 或 IPv6 范围。

      在此示例中,如需仅限审计者访问,请在 IP 子网框中输入 203.0.113.0/25。

    • 如果您选择专用 IP,请点击选择 VPC 网络。您可以使用导入选项列表中提供的三个选项之一来指定 VPC 网络。

      • 选项 1:

        1. 选择浏览贵组织中的 VPC 网络,然后选择 VPC 网络。

        2. 点击添加所选 VPC 网络。

        3. 点击选择 IP 子网,然后选择子网。

        4. 点击添加 IP 子网。

      • 选项 2:

        1. 选择手动输入 VPC 网络地址,然后输入一个或多个 VPC 网络。

        2. 点击添加 VPC 网络。

        3. 点击选择 IP 子网,然后选择子网。

        4. 点击添加 IP 子网。

      • Option 3:

        1. 选择上传 CSV 文件(覆盖现有网络)。

          如果您使用 CSV 文件向访问权限级别添加 VPC 网络和子网,Access Context Manager 会覆盖之前选择的 VPC 网络和子网。

        2. 点击浏览,然后上传 CSV 文件。在 CSV 文件中,您必须按以下格式指定 VPC 网络和子网:

          VPC_NETWORK_NAME_1       | IP_RANGE_1       | IP_RANGE_2       | ...
          VPC_NETWORK_NAME_2       | .                | .                | ...
          .                        | .                | .                | ...
          .                        | .                | .                | ...
          
        3. 点击导入网络。

          Access Context Manager 会使用 CSV 文件,分别在 VPC 网络地址和 IP 子网框中填充 VPC 网络名称和子网信息。

      如需了解 VPC 网络名称和专用 IP 地址格式,请参阅在访问权限级别中使用内部 IP 地址。

  6. 点击保存。

gcloud

  1. 为访问权限级别创建一个 YAML 文件,其中包含一个或多个格式为 CIDR 块的 IPv4 或 IPv6 范围。

    在此示例中,如需仅限审计员访问,您需要在 YAML 文件中输入以下内容:

    - ipSubnetworks:
      - 203.0.113.0/25
    

    如果您想使用专用 IP 地址,则需要在 YAML 文件中输入以下信息:

    - vpcNetworkSources:
      - vpcSubnetwork:
          network: VPC_NETWORK_NAME
          vpcIpSubnetworks:
          - IP_RANGE
    

    将 VPC_NETWORK_NAME 和 IP_RANGE 替换为在访问权限级别中使用内部 IP 地址部分中所述的值。

  2. 保存文件。在此示例中,该文件名为 CONDITIONS.yaml。

  3. 创建访问权限级别。

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    替换以下内容:

    • NAME:访问权限级别的唯一名称。必须以字母开头,并且只包含字母、数字和下划线。

    • TITLE:人类可读的标题。必须为政策所独有。

    • POLICY:贵组织的访问权限政策的 ID。如果您设置了默认政策,则此参数是可选的。

    您将看到如下所示的输出:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. 编写请求正文,创建一个 AccessLevel 资源,内含一个或多个格式为 CIDR 地址块的 IPv4 或 IPv6 范围。

    在本示例中,要将访问权限仅授予审核人员,您需要在请求正文中输入以下内容:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "ipSubnetworks": [
             "203.0.113.0/25"
           ]
         }
       ]
     }
    }

    替换以下内容:

    • NAME:访问权限级别的唯一名称。必须以字母开头,并且只包含字母、数字和下划线。

    • TITLE:人类可读的标题。必须为政策所独有。

    如果您想使用专用 IP 地址,则需要在请求正文中输入以下信息:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "vpcNetworkSources": [
            {
              "vpcSubnetwork": {
                "network": VPC_NETWORK_NAME,
                "vpcIpSubnetworks": [
                  IP_RANGE
                ]
              }
            }
           ]
         }
       ]
     }
    }

    将 VPC_NETWORK_NAME 和 IP_RANGE 替换为在访问权限级别中使用内部 IP 地址部分中所述的值。

  2. 通过调用 accessLevels.create,创建访问权限级别。

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY 是您组织的访问权限政策的 ID。

创建访问权限级别后,您必须使用访问权限绑定来应用该访问权限级别,以便强制执行。

按设备属性限制访问权限

本示例介绍如何创建访问权限级别,以规定仅为满足一组指定要求(例如特定操作系统 (OS) 版本)的设备授予访问权限。

使用端点验证,将设备相关信息提供给 Access Context Manager。 在决定是否授予访问权限时,可以检查以下条件:

  • 屏幕锁定已启用
  • 存储加密已启用
  • 设备正在运行指定的操作系统类型和版本

在本示例中,假设贵组织仅使用安装了 ChromeOS 或 Windows 的机器。为了增加一层安全保障,您想要创建一个访问权限级别,以防止使用其他操作系统的任何人访问。此外,为了管理风险,您希望确保只有特定版本的操作系统可以获得访问权限。

控制台

  1. 在 Cloud de Confiance 控制台中,打开 Access Context Manager 页面。

    转到 Access Context Manager 页面

  2. 如果系统提示您,请选择一个项目。

  3. 在 Access Context Manager 页面的顶部,点击新建。

  4. 在新建访问权限级别窗格的条件部分中,点击添加属性,然后点击设备政策。

  5. 添加设备政策属性:

    1. 点击添加操作系统政策,然后点击 Chrome 操作系统政策。

    2. 在最低版本框中,输入您要允许的 ChromeOS 最低版本。

    3. 针对 Windows 操作系统政策重复第 1 至 2 步。

  6. 点击保存。

gcloud

  1. 为包含具有操作系统限制条件的设备政策的访问权限级别创建 YAML 文件。

    在此示例中,如需仅允许具有可接受的最低 ChromeOS 和 Windows 版本的设备,您需要在 YAML 文件中输入以下内容:

    - devicePolicy:
        osConstraints:
          - osType: DESKTOP_CHROME_OS
            minimumVersion: 11316.165.0
          - osType: DESKTOP_WINDOWS
            minimumVersion: 10.0.1809
    
  2. 保存文件。在此示例中,该文件名为 CONDITIONS.yaml。

  3. 创建访问权限级别。

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    替换以下内容:

    • NAME:访问权限级别的唯一名称。必须以字母开头,并且只包含字母、数字和下划线。

    • TITLE:人类可读的标题。必须为政策所独有。

    • POLICY:贵组织的访问权限政策的 ID。如果您设置了默认政策,则此参数是可选的。

    您将看到如下所示的输出:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. 编写请求正文,创建一个包含具有操作系统限制的设备政策的 AccessLevel 资源。

    在此示例中,如需仅允许具有可接受的最低 ChromeOS 和 Windows 版本的设备,您需要在请求正文中输入以下内容:

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "devicePolicy": {
             "osConstraints": [
               {
                 "osType": "DESKTOP_CHROME_OS",
                 "minimumVersion": "11316.165.0"
               },
               {
                 "osType": "DESKTOP_WINDOWS",
                 "minimumVersion": "10.0.1809"
               }
             ]
           {
         }
       ]
     }
    }

    替换以下内容:

    • NAME:访问权限级别的唯一名称。必须以字母开头,并且只包含字母、数字和下划线。

    • TITLE:人类可读的标题。必须为政策所独有。

  2. 通过调用 accessLevels.create,创建访问权限级别。

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY 是您组织的访问权限政策的 ID。

创建访问权限级别后,您必须使用访问权限绑定来应用该访问权限级别,以便强制执行。

仅限具有有效证书的可信公司设备访问

您可以使用基于证书的访问权限 (CBA),要求使用经过验证的 X.509 证书来访问 Cloud de Confiance资源。额外的凭据可提供更强的设备身份信号,并要求同时提供用户凭据和原始设备证书才能授予访问权限,从而帮助保护您的组织免遭凭据盗窃或意外丢失。

在继续操作之前,请确保在需要访问Cloud de Confiance 资源的所有设备上部署了端点验证 Chrome 扩展程序和端点验证帮助程序应用。这些设备会成为可信设备,您可以向其授予访问权限。如需了解详情,请参阅部署端点验证以与基于证书的访问权限搭配使用。

如需创建需要基于证书的访问权限的政策,您必须具有包含自定义访问权限级别规范的访问权限级别。

控制台

  1. 在 Cloud de Confiance 控制台中,打开 Access Context Manager 页面。

    转到 Access Context Manager 页面

  2. 如果系统提示您,请选择一个项目。

  3. 点击创建访问权限级别。

  4. 在新建访问权限级别窗格中,选择高级模式。您必须拥有 Chrome 企业进阶版许可才能使用此模式。

  5. 在条件部分,在 CEL 表达式框中输入以下表达式。

    certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
    
  6. 点击保存。

gcloud

  1. 为包含证书强制执行的访问权限级别创建 YAML 文件。

    expression: "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE"
    
  2. 保存文件。在此示例中,该文件名为 CONDITIONS.yaml。

  3. 创建访问权限级别。

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

替换以下内容:

  • NAME:访问权限级别的唯一名称。名称必须以字母开头,且只能包含字母、数字和下划线。

  • TITLE:人类可读的标题。它在政策中必须是唯一的。

  • POLICY:贵组织的访问权限政策的 ID。如果您设置了默认政策,则此参数是可选的。

您将看到如下所示的输出:

Create request issued for: NAME
Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1234] to complete...done.
Created level NAME.

API

  1. 为访问权限级别创建请求正文文件,其中包含具有操作系统限制的设备政策。

    {
     "name": "require_certificate",
     "title": "Certificate-Based Access",
     "description": "An example certificate-based access level.",
     "custom": {
       "expr": {
         "expression": "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE",
         "title": "Require a valid certificate",
         "description": "Permits requests from a device with a valid mTLS certificate."
        }
      }
    }
  2. 通过调用 accessLevels.create,创建访问权限级别。

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY 是您组织的访问权限政策的 ID。

创建访问权限级别后,您必须使用访问权限绑定来应用该访问权限级别,以便强制执行。