本页面简要介绍了如何创建基本访问权限级别。要创建 自定义访问权限级别和使用 Google Cloud 控制台中的高级模式,请参阅 创建自定义访问权限级别。
本页重点介绍如何实现访问权限级别。请参见以下示例:
准备工作
- 了解访问权限级别。
创建基本访问权限级别
控制台
要创建基本访问权限级别,请执行以下操作:
在 Google Cloud 控制台中打开 Access Context Manager 页面。
如果出现提示,请选择您的组织。
在 Access Context Manager 页面的顶部,点击新建。
在新建访问权限级别窗格中,执行以下操作:
在访问权限级别标题字段中,输入访问权限级别的标题。标题最多不能超过 50 个字符,以字母开头,并且只能包含数字、字母、下划线和空格。
在条件部分中,点击要添加的属性类型对应的添加按钮,然后提供要应用于该属性的值。
如需可添加属性的完整列表,请阅读访问权限级别属性。
例如,如果您希望访问权限级别考虑请求来自于您网络的何处,应选择 IP 子网属性。
重复此步骤,向同一个条件添加多个属性。 如果一个条件具有多个属性,访问请求必须满足所有属性。
一个访问权限级别条件可以包含每种类型的 属性。一些属性包含其他选项,例如设备政策属性。
访问权限级别支持基于用户身份的条件。不过,如需向条件添加身份 必须使用 gcloud CLI 或 API 创建或更新访问权限级别。
使用当满足条件时返回选项,指定您是希望相应条件要求请求满足所有指定属性 (TRUE),还是必须满足除这些属性之外的所有属性 (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
、OR
description
(可选)访问权限级别的详细说明。
POLICY 是您组织的访问权限政策的 ID。如果您设置了默认政策,则此参数是可选的。
或者,您可以添加任何在 gcloud 范围适用的标志。
basic-level-spec YAML 文件
使用 gcloud
命令行工具创建访问权限级别时,必须提供 YAML
文件中找到 basic-level-spec
选项。YAML 文件会为访问权限级别定义一个或多个条件。条件须至少包含一个属性。如果某个条件包含多个属性,则这些属性将
可组合为 AND 运算(全部必须为 true)或 NAND
操作(none 不能为 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 页面。
如果出现提示,请选择您的组织。
在 Access Context Manager 页面的顶部,点击新建。
在新建访问权限级别窗格的条件部分中,点击添加属性,然后点击 IP 子网。
在 IP 子网框中,选择公共 IP 或专用 IP。
如果您选择公共 IP,请输入一个或多个 IPv4 或 IPv6 范围 采用 CIDR 地址段格式。
在本例中,要将访问权限仅授予审核人员,请输入 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 | . | . | ... . | . | . | ... . | . | . | ...
点击导入广告联盟。
Access Context Manager 使用 CSV 文件填充 VPC 网络 VPC 网络地址和IP 子网方框中。
如需了解 VPC 网络名称和专用 IP 地址格式,请参阅在访问权限级别中使用内部 IP 地址。
点击保存。
gcloud
为包含一个或多个访问权限级别的 YAML 文件创建 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。
按用户或服务账号授予访问权限
在基于身份授予访问权限时,可以与服务账号一并使用,此举通常很有用,例如,启用 Cloud Functions 来访问数据。
此示例介绍了如何向特定用户和服务授予访问权限 同时加入现有的访问权限级别以展示 嵌套访问权限级别。在这种情况下,指定的用户会包含在 访问权限级别,而不管他们是否符合 现有访问权限级别与现有访问权限级别相比,此新访问权限级别的限制更少。
控制台
Google Cloud 控制台目前不支持向
访问权限级别。要向访问权限级别添加主账号,必须使用 gcloud
gcloud 命令行工具或 API。
gcloud
创建一个 YAML 文件,其中包含列出要为其提供访问权限的主账号的条件。
在此示例中,您要添加系统管理员 (
sysadmin@example.com
) 和服务账号 (service@project.iam.gserviceaccount.com
)。- members: - user:sysadmin@example.com - serviceAccount:service@project.iam.gserviceaccount.com
添加一个条件,其中列出您要包含在此访问权限级别中的现有访问权限级别。
在此示例中,假设访问权限级别分别命名为
Device_Trust
和IP_Trust
,并且247332951433
是访问政策的名称。- members: - user:sysadmin@example.com - serviceAccount:service@project.iam.gserviceaccount.com - 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.iam.gserviceaccount.com
)。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project.iam.gserviceaccount.com" ] } ] } }
其中:
NAME 是访问权限级别的唯一名称,必须以字母开头,并且只包含字母、数字和下划线。
TITLE 是直观易懂的标题,必须为政策所独有。
添加一个条件,其中列出您要授予的现有访问权限级别 包括在此访问权限级别中
在此示例中,假设访问权限级别分别命名为
Device_Trust
和IP_Trust
,并且247332951433
是访问政策的名称。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project.iam.gserviceaccount.com" ] }, { "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.iam.gserviceaccount.com" ] }, { "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。