本页介绍了如何使用访问权限级别定义情境感知访问权限政策。
访问权限级别是基于请求来源而为请求分配的一组属性。您可以使用设备类型、IP 地址和用户身份等信息,指定要授予的访问权限级别。例如,您可以为公司网络内连接分配 High_Trust
级别,为运行已批准操作系统的外部设备分配 Medium_Trust
级别。
访问权限政策是所有 Access Context Manager 资源(例如访问权限级别和服务边界)的容器。
如需详细了解访问权限级别和访问权限政策,请参阅 Access Context Manager 概览。
准备工作
定义访问权限级别时,存在以下限制:
- 您无法将 IP 地址用作 Docker 连接的属性,也无法在使用
kubectl
或托管式 Looker 实例连接到私有集群时使用专用 IP 地址。 - 无论 Access Context Manager 政策如何,Looker Studio 始终可以无限制地访问Google Cloud API。
- 设备属性不适用于非 Google OAuth 客户端应用。
使用访问权限级别定义政策
控制台
创建基本访问权限级别:
在 Google Cloud 控制台中,打开 Access Context Manager 页面。
如果系统提示您,请选择一个项目。
在 Access Context Manager 页面上,点击新建。
在新建访问权限级别窗格中,执行以下操作:
在访问权限级别标题字段中,输入访问权限级别的标题。标题最多不能超过 50 个字符,以字母开头,并且只能包含数字、字母、下划线和空格。
在条件部分中,点击要添加的属性类型对应的添加按钮,然后提供要应用于该属性的值。
如需可添加属性的完整列表,请参阅访问权限级别属性。
例如,如果您希望访问权限级别考虑请求来自于您网络的何处,应选择 IP 子网属性。
重复此步骤,向同一个条件添加多个属性。 如果一个条件具有多个属性,访问请求必须满足所有属性。
一个访问权限级别条件可以包含每种类型的属性各一个。一些属性包含其他选项,例如设备政策属性。
访问权限级别支持基于用户身份的条件。但是,如需向条件添加身份,您必须使用 gcloud CLI 或 API 创建或更新访问权限级别。
使用当满足条件时返回 (When condition is met, return) 选项,指定您是希望相应条件要求请求满足所有指定属性 (TRUE),还是必须满足除这些属性之外的所有属性 (FALSE)。
例如,如果要拒绝来自网络某个 IP 地址范围的请求,请使用 IP 子网属性指定 IP 地址范围,然后将条件设置为 FALSE。
(可选)点击添加其他条件 (Add another condition),向您的访问权限级别添加其他条件,然后重复前面两个步骤。
例如,如果要拒绝访问更宽的 IP 地址范围内的 IP 地址子集,请创建新条件,为IP 子网属性指定子集 IP 地址范围,然后将条件设置为返回 FALSE。
重复此步骤,向同一个访问权限级别添加多个条件。
如果您创建了多个条件,请使用与条件组合指定您是希望访问权限级别要求请求满足至少一项条件 (OR),还是所有条件 (AND)。
点击保存。
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
访问权限级别的简短标题。访问权限级别的标题显示在 Google Cloud 控制台中。
combine-function
(可选)确定条件的合并方式。
有效值:
AND
、OR
description
(可选)访问权限级别的详细说明。
POLICY:您组织的访问权限政策的 ID。 如果您已设置默认政策,则此参数为可选参数。
或者,您可以添加任何 gcloud 标志。
basic-level-spec YAML 文件
使用 gcloud CLI 创建访问权限级别时,必须为 basic-level-spec
选项提供 YAML 文件。YAML 文件会为访问权限级别定义一个或多个条件。条件须至少包含一个属性。如果条件包含多个属性,则系统会将这些属性组合为 AND 运算(所有属性都必须为 true)或 NAND 运算(所有属性都不能为 true),具体取决于条件中是否包含 negate
属性。
如需可包含在 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
都有一个或多个属性,这些属性会根据 negate
字段是否设置为 true
,作为 AND 运算(所有属性都必须为 true)或 NAND 运算(所有属性都不能为 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 的实现示例。
控制台
在 Google Cloud 控制台中,打开 Access Context Manager。
如果系统提示,请选择项目。
在 Chrome Enterprise 进阶版页面顶部,点击新建。
在新建访问权限级别窗格的条件部分中,点击添加属性,然后点击 IP 子网。
在 IP 子网框中,选择公共 IP 或专用 IP。
如果您选择 Public IP(公共 IP),请输入一个或多个格式为 CIDR 块的 IPv4 或 IPv6 范围。
在本示例中,如需将访问权限仅授予审核人员,请在 IP 子网框中输入
203.0.113.0/25
。如果您选择专用 IP,请点击选择 VPC 网络。您可以使用导入选项列表中的三个选项之一指定 VPC 网络。
选项 1:
选择浏览贵组织中的 VPC 网络,然后选择 VPC 网络。
点击添加所选的 VPC 网络。
点击选择 IP 子网,然后选择子网。
点击添加 IP 子网。
选项 2:
选择手动输入 VPC 网络地址,然后输入一个或多个 VPC 网络。
点击添加 VPC 网络。
点击选择 IP 子网,然后选择子网。
点击添加 IP 子网。
选项 3:
选择上传 CSV 文件(覆盖现有网络)。
如果您使用 CSV 文件向访问权限级别添加 VPC 网络和子网,Access Context Manager 会覆盖之前选择的 VPC 网络和子网。
点击浏览,然后上传 CSV 文件。在 CSV 文件中,您必须采用以下格式指定 VPC 网络和子网:
VPC_NETWORK_NAME_1 | IP_RANGE_1 | IP_RANGE_2 | ... VPC_NETWORK_NAME_2 | . | . | ... . | . | . | ... . | . | . | ...
点击导入网络。
使用 CSV 文件,Access Context Manager 会分别在 VPC 网络地址和 IP 子网框中填充 VPC 网络名称和子网信息。
如需了解 VPC 网络名称和专用 IP 地址格式,请参阅在访问权限级别中使用内部 IP 地址。
点击保存。
gcloud
为访问权限级别创建一个 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 地址部分中所述的值。
保存文件。在此示例中,文件名为
CONDITIONS.yaml
。创建访问权限级别。
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
编写请求正文,创建一个
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 地址部分中所述的值。
通过调用
accessLevels.create
,创建访问权限级别。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
POLICY 是您组织的访问权限政策的 ID。
创建访问权限级别后,您必须使用访问权限绑定将其应用,才能强制执行该级别。
按设备属性限制访问权限
本示例介绍如何创建访问权限级别,以规定仅为满足一组指定要求(例如特定操作系统 (OS) 版本)的设备授予访问权限。
使用端点验证,将设备相关信息提供给 Chrome Enterprise 进阶版。 在决定是否授予访问权限时,可以检查以下条件:
- 屏幕锁定已启用
- 存储加密已启用
- 设备正在运行指定的操作系统类型和版本
在本示例中,假设您的组织仅使用安装了 ChromeOS 或 Windows 的机器。为了增加一层安全保障,您想要创建一个访问权限级别,以防止使用其他操作系统的任何人访问。此外,为了管理风险,您希望确保只有特定版本的操作系统可以获得访问权限。
控制台
在 Google Cloud 控制台中,打开 Access Context Manager 页面。
如果系统提示您,请选择一个项目。
在 Chrome Enterprise 进阶版页面顶部,点击新建。
在新建访问权限级别窗格的条件部分中,点击添加属性,然后点击设备政策。
添加设备政策属性:
点击添加操作系统政策,然后点击 Chrome 操作系统政策。
在最低版本 (Minimum version) 框中,输入您要允许的最低 ChromeOS 版本。
针对 Windows 操作系统政策重复第 1 至 2 步。
点击保存。
gcloud
为访问权限级别创建 YAML 文件,其中包含具有操作系统限制的设备政策。
在本示例中,要仅允许达到最低可接受 ChromeOS 和 Windows 版本的设备,请在 YAML 文件中输入以下内容:
- devicePolicy: osConstraints: - osType: DESKTOP_CHROME_OS minimumVersion: 11316.165.0 - osType: DESKTOP_WINDOWS minimumVersion: 10.0.1809
保存文件。在此示例中,文件名为
CONDITIONS.yaml
。创建访问权限级别。
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
编写请求正文,创建一个包含具有操作系统限制的设备政策的
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:直观易懂的标题。必须为政策所独有。
通过调用
accessLevels.create
,创建访问权限级别。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
POLICY 是您组织的访问权限政策的 ID。
创建访问权限级别后,您必须使用访问权限绑定将其应用,才能强制执行该访问权限级别。
限制对具有有效证书的受信任公司设备的访问
您可以使用基于证书的访问权限 (CBA) 来要求使用经过验证的 X.509 证书才能访问 Google Cloud资源。额外的凭据可提供更强的设备身份信号,并要求在同时存在用户凭据和原始设备证书的情况下才授予访问权限,从而有助于更好地保护贵组织,避免凭据盗用或意外丢失。
在继续之前,请确保在需要访问Google Cloud 资源的所有设备上部署了 Endpoint Verification Chrome 扩展程序和 Endpoint Verification 帮助程序。这些设备会成为可信设备,您可以向其授予访问权限。如需了解详情,请参阅部署端点验证以与基于证书的访问权限搭配使用。
如需创建需要基于证书的访问权限的政策,您必须拥有具有自定义访问权限级别规范的访问权限级别。
控制台
在 Google Cloud 控制台中,打开 Access Context Manager 页面。
如果系统提示您,请选择一个项目。
点击创建访问权限级别。
在新建访问权限级别窗格中,选择高级模式。您必须拥有 Chrome 企业进阶版许可才能使用此模式。
在条件部分,在 CEL 表达式框中输入以下表达式。
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
点击保存。
gcloud
为包含证书强制执行的访问权限级别创建 YAML 文件。
expression: "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE"
保存文件。在此示例中,文件名为
CONDITIONS.yaml
。创建访问权限级别。
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
为访问权限级别创建请求正文文件,其中包含具有操作系统限制的设备政策。
{ "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." } } }
通过调用
accessLevels.create
,创建访问权限级别。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
POLICY 是您组织的访问权限政策的 ID。
创建访问权限级别后,您必须使用访问权限绑定将其应用,才能强制执行该级别。