本页面简要介绍了如何创建基本访问权限级别。要创建 自定义访问权限级别和使用 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。