创建基本访问权限级别

本页面简要介绍了如何创建基本访问权限级别。如需创建自定义访问权限级别并在 Google Cloud 控制台中使用高级模式,请参阅创建自定义访问权限级别

本页重点介绍如何实现访问权限级别。请参见以下示例:

准备工作

创建基本访问权限级别

控制台

要创建基本访问权限级别,请执行以下操作:

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

    打开 Access Context Manager 页面

  2. 如果出现提示,请选择您的组织。

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

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

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

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

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

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

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

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

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

    3. 使用当满足条件时,返回选项指定您是希望条件要求请求满足所有指定属性 (TRUE),还是必须满足除这些属性之外的所有属性 (FALSE)。

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

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

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

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

    5. 如果您创建了多个条件,请使用条件合并来指定您是希望访问权限级别要求请求满足至少一个条件 (OR),还是满足所有条件 (AND)。

    6. 点击保存

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

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

    有效值:ANDOR

    description

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

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

或者,您可以添加任何在 gcloud 范围适用的标志

基本级规范 YAML 文件

当您使用 gcloud 命令行工具创建访问权限级别时,必须为 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 都有一个或多个属性,这些属性会被评估为 AND 运算(所有值都必须为 true)或 NAND 运算(所有值都不能为 true),具体取决于 negate 字段是否设置为 true。生成的评估决定了是否满足条件。

响应正文

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

实现示例

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

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

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

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

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

控制台

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

    打开 Access Context Manager 页面

  2. 如果出现提示,请选择您的组织。

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

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

  5. IP 子网框中,输入一个或多个格式为 CIDR 的 IPv4 或 IPv6 范围。

    在本示例中,要将访问权限仅授予审核人员,请在 IP 子网框中输入 203.0.113.0/25。

  6. 点击保存

gcloud

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

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

    - ipSubnetworks:
      - 203.0.113.0/25
    
  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 是直观易懂的标题,必须为政策所独有。

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

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

    其中:

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

按设备属性限制访问权限

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

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

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

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

控制台

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

    打开 Access Context Manager 页面

  2. 如果出现提示,请选择您的组织。

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

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

  5. 添加设备政策属性:

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

    2. 最低版本 (Minimum version) 框中,输入您要允许的最低 Chrome 操作系统版本。

    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 资源。

    在本示例中,要仅允许达到最低可接受 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 是直观易懂的标题,必须为政策所独有。

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

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

    其中:

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

按用户或服务帐号授予访问权限

在与服务帐号结合使用时,基于身份授予访问权限通常很有用,例如,为了启用 Cloud Functions 函数来访问数据。

此示例介绍了如何向特定用户和服务帐号授予访问权限,同时还包含了现有访问权限级别,以展示嵌套访问权限级别的示例。在这种情况下,指定的用户包含在此访问权限级别中,无论他们是否符合现有访问权限级别中指定的条件。这一新访问权限级别可被视为比现有访问权限级别限制更宽的层级。

控制台

Google Cloud 控制台目前不支持将主帐号添加到访问权限级别。要向访问权限级别添加主账号,必须使用 gcloudgcloud 命令行工具或 API。

gcloud

  1. 创建一个 YAML 文件,其中包含的条件列出您要向其提供访问权限的主帐号。

    在此示例中,您要添加系统管理员 (sysadmin@example.com) 和服务账号 (service@project.iam.gserviceaccount.com)。

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
  2. 添加一个条件,列出要包含在此访问权限级别中的现有访问权限级别。

    在此示例中,假设访问权限级别分别命名为 Device_TrustIP_Trust,并且 247332951433 是访问政策的名称。

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
    - requiredAccessLevels:
        - accessPolicies/247332951433/accessLevels/Device_Trust
        - accessPolicies/247332951433/accessLevels/IP_Trust
    
  3. 保存文件。在本示例中,该文件命名为 CONDITIONS.yaml

  4. 使用 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

  1. 创建请求正文,以创建一个 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 是直观易懂的标题,必须为政策所独有。

  2. 添加一个条件,列出要包含在此访问权限级别中的现有访问权限级别。

    在此示例中,假设访问权限级别分别命名为 Device_TrustIP_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"
           ]
         }
       ]
     }
    }
    
  3. 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"
     }
    }
    
  4. 通过调用 accessLevels.create,创建访问权限级别。

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

    其中:

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