本页面简要介绍了如何创建基本访问权限级别。如需在 Google Cloud 控制台中创建自定义访问权限级别并使用高级模式,请参阅创建自定义访问权限级别。
本页重点介绍如何实现访问权限级别。请参见以下示例:
准备工作
- 了解访问权限级别。
创建基本访问权限级别
控制台
要创建基本访问权限级别,请执行以下操作:
在 Google Cloud 控制台中打开 Access Context Manager 页面。
如果出现提示,请选择您的组织。
在 Access Context Manager 页面的顶部,点击新建。
在新建访问权限级别窗格中,执行以下操作:
在访问权限级别标题字段中,输入访问权限级别的标题。 标题最多不能超过 50 个字符,以字母开头,并且只能包含数字、字母、下划线和空格。
在条件部分,点击要添加的属性类型对应的添加按钮,然后提供要应用于该属性的值。
如需可添加属性的完整列表,请阅读访问权限级别属性。
例如,如果您希望访问权限级别考虑请求来自于您网络的何处,应选择 IP 子网属性。
重复此步骤,向同一个条件添加多个属性。 如果一个条件具有多个属性,访问请求必须满足所有属性。
访问权限级别条件可以包含每种类型的属性。一些属性包含其他选项,例如设备政策属性。
访问权限级别支持基于用户身份的条件。但是,如需向条件添加身份,您必须使用 gcloud CLI 或 API 创建或更新访问权限级别。
使用如果满足条件,则返回选项,指定条件是作为 AND 运算(要求请求满足所有指定属性 [TRUE])还是作为否定 (NAND) 运算(当请求不满足至少一个指定属性 [FALSE] 时满足)进行求值。
例如,如果要拒绝来自网络某个 IP 地址范围的请求,请使用 IP 子网属性指定 IP 地址范围,然后将条件设置为 FALSE。
(可选)点击添加其他条件 (Add another condition),向您的访问权限级别添加其他条件,然后重复前面两个步骤。
例如,如果要拒绝访问更宽的 IP 地址范围内的 IP 地址子集,请创建新条件,为IP 子网属性指定子集 IP 地址范围,然后将条件设置为返回 FALSE。
重复此步骤,向同一个访问权限级别添加多个条件。
如果您创建了多个条件,请使用将条件与以下项组合来指定您是否希望访问权限级别要求请求至少满足其中一个条件 (OR) 或所有条件 (AND)。
点击保存。
gcloud
准备工作
- 如果您的组织还没有访问权限政策,请为其创建访问权限政策。
要使用 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、ORdescription(可选)访问权限级别的详细说明。
POLICY 是您组织的访问权限政策的 ID。如果您设置了默认政策,则此参数为可选参数。
或者,您可以添加任何在 gcloud 范围适用的标志。
basic-level-spec YAML 文件
使用 gcloud 命令行工具创建访问权限级别时,您必须为 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 的实现示例。
控制台
在 Google Cloud 控制台中打开 Access Context Manager 页面。
如果出现提示,请选择您的组织。
在 Access Context Manager 页面的顶部,点击新建。
在新建访问权限级别窗格的条件部分中,点击添加属性,然后点击 IP 子网。
在 IP 子网框中,选择公共 IP 或专用 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 子网。
Option 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 | . | . | ... . | . | . | ... . | . | . | ...
点击导入网络。
Access Context Manager 会使用 CSV 文件,分别在 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] 版本)的设备授予访问权限的访问权限级别。
使用端点验证,将设备相关信息提供给 Access Context Manager。 在决定是否授予访问权限时,可以检查以下条件:
- 屏幕锁定已启用
- 存储加密已启用
- 设备正在运行指定的操作系统类型和版本
在本示例中,假设您的组织仅使用安装了 Chrome 操作系统或 Windows 的机器。为了增加一层安全保障,您想要创建一个访问权限级别,以防止使用其他操作系统的任何人访问。此外,为了管理风险,您希望确保只有特定版本的操作系统可以获得访问权限。
控制台
在 Google Cloud 控制台中打开 Access Context Manager 页面。
如果出现提示,请选择您的组织。
在 Access Context Manager 页面的顶部,点击新建。
在新建访问权限级别窗格的条件部分中,点击添加属性,然后点击设备政策。
添加设备政策属性:
点击添加操作系统政策,然后点击 Chrome 操作系统政策。
在最低版本 (Minimum version) 框中,输入您要允许的最低 Chrome 操作系统版本。
针对 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资源。在本示例中,要仅允许达到最低可接受 Chrome 操作系统和 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。
按用户或服务账号授予访问权限
人类用户的访问权限级别通常会将身份与其他上下文(例如 IP 地址)结合使用。相比之下,服务账号的访问权限级别是根据特定服务账号身份定义的。例如,Cloud Functions 需要一个身份才能与其他 Google Cloud 服务交互。
以下信息介绍了如何向特定用户和服务账号授予访问权限,同时包含现有访问权限级别,以展示嵌套访问权限级别的示例。在这种情况下,无论指定用户是否满足现有访问权限级别中指定的条件,他们都会包含在此访问权限级别中。此新访问权限级别可视为比现有访问权限级别限制更少的层级。
控制台
Google Cloud 控制台目前不支持向访问权限级别添加主账号。如果要向访问权限级别添加主账号,则必须使用 gcloud 命令行工具或 API。
gcloud
创建一个 YAML 文件,其中包含一个列出您要向其提供访问权限的主账号的条件。
添加系统管理员 (
sysadmin@example.com) 和服务账号 (service@project.)。- members: - user:sysadmin@example.com - serviceAccount:service@project.添加一个条件,列出您要包含在此访问权限级别中的现有访问权限级别。
在此示例中,假设访问权限级别分别命名为
Device_Trust和IP_Trust,并且247332951433是访问政策的名称。- members: - user:sysadmin@example.com - serviceAccount:service@project. - requiredAccessLevels: - accessPolicies/247332951433/accessLevels/Device_Trust - accessPolicies/247332951433/accessLevels/IP_Trust保存文件。在本示例中,该文件命名为 CONDITIONS.yaml。
使用
create命令创建访问权限级别。gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --combine-function=OR \ --policy=POLICY
其中:
NAME 是访问权限级别的唯一名称,必须以字母开头,并且只包含字母、数字和下划线。
TITLE 是人类可读的标题。必须为政策所独有。
POLICY 是您组织的访问权限政策的 ID。如果您设置了默认政策,则此参数是可选的。
combine-function设置为OR。默认值AND要求满足所有条件才能授予访问权限级别。即使不满足其他条件,OR值也会向主账号授予访问权限。
您看到的输出结果应该类似于以下内容:
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
创建请求正文,以创建
AccessLevel资源,其中包含列出您要向其提供访问权限的主账号的条件。在此示例中,您要添加系统管理员 (
sysadmin@example.com) 和服务账号 (service@project.)。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project." ] } ] } }
其中:
NAME 是访问权限级别的唯一名称,必须以字母开头,并且只包含字母、数字和下划线。
TITLE 是人类可读的标题。必须为政策所独有。
添加一个条件,列出您要包含在此访问权限级别中的现有访问权限级别。
在此示例中,假设访问权限级别分别命名为
Device_Trust和IP_Trust,并且247332951433是访问政策的名称。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project." ] }, { "requiredAccessLevels": [ "accessPolicies/247332951433/accessLevels/Device_Trust", "accessPolicies/247332951433/accessLevels/IP_Trust" ] } ] } }
将
combiningFunction设置为OR。combiningFunction的默认值AND要求满足所有条件才能授予访问权限级别。即使不满足其他条件(例如 IP 地址或从其他必需访问权限级别继承的条件),OR值也将为主账号提供访问权限。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project." ] }, { "requiredAccessLevels": [ "accessPolicies/247332951433/accessLevels/Device_Trust", "accessPolicies/247332951433/accessLevels/IP_Trust" ] } ], "combiningFunction": "OR" } }
通过调用
accessLevels.create,创建访问权限级别。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
其中:
- POLICY 是您组织的访问权限政策的 ID。