创建基本访问权限级别

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

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

准备工作

创建基本访问权限级别

控制台

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

  1. 在 Cloud Console 中打开 Access Context Manager 页面。

    打开 Access Context Manager 页面

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

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

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

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

      默认情况下,您在基本模式中创建条件。如果您想要使用高级模式创建条件,请参阅创建自定义访问权限级别

    2. 条件部分中,点击添加属性,然后选择要添加到条件的属性。

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

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

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

    3. 使用当满足条件时 (When condition is met) 选项,指定您是希望访问权限级别要求请求满足所有指定属性 (TRUE),还是必须满足除这些属性之外的所有属性 (FALSE)。

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

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

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

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

    5. 条件部分中,使用合并条件选项,指定您是希望访问权限级别要求请求满足所有访问权限级别条件 (AND),还是仅满足以下条件之一 (OR)。

    6. 点击保存

gcloud

准备工作

要使用 gcloud 命令行工具创建访问权限级别,请使用 gcloud access-context-manager levels create 命令。

gcloud access-context-manager levels create LEVEL_NAME OPTIONS \
    --policy=POLICY_NAME

其中:

  • LEVEL_NAME 是访问权限级别的唯一名称,必须以字母开头,并且只包含字母、数字和下划线。名称最多可以包含 50 个字符。

  • OPTIONS 指下表中的必需选项。

    选项
    basic-level-spec

    .yaml 文件,用于为访问权限级别指定一个或多个条件。

    title

    访问权限级别的简短标题。访问权限级别的标题显示在 Cloud Console 中。

    combine-function

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

    有效值:ANDOR

    description

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

  • POLICY_NAME 是您组织的访问权限政策名称。

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

basic-level-spec .yaml 文件

使用 gcloud 命令行工具创建访问权限级别时,必须为 basic-level-spec 选项提供 .yaml 文件。.yaml 文件会为访问权限级别定义一个或多个条件。条件须至少包含一个属性。

如需可包含在 .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'

API

准备工作

要创建访问权限级别,请调用 accessLevels.create

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

其中:

  • POLICY_NAME 是您组织的访问权限政策名称。

请求正文

请求正文必须包含一个 AccessLevel 资源,用于指定新访问权限级别所需的条件。

响应正文

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

实现示例

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

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

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

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

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

控制台

  1. 在 Cloud Console 中打开 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. 为访问权限级别创建一个 .yaml 文件,其中包括一个或多个格式为 CIDR 地址块的 IPv4 或 IPv6 范围。

    在本示例中,要将访问权限仅授予审核人员,您可以在 .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
    

    其中:

    • NAME 是访问权限级别的唯一名称,必须以字母开头,并且只包含字母、数字和下划线。

    • TITLE 是直观易懂的标题,必须为政策所独有。

    • POLICY_NAME 是您组织的访问权限政策名称。

    您应看到如下输出:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/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_NAME/accessLevels
    

    其中:

    • POLICY_NAME 是您组织的访问权限政策名称。

按网络上的设备限制访问权限

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

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

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

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

控制台

  1. 在 Cloud Console 中打开 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 文件,其中包含具有操作系统限制的设备政策。

    在本示例中,要仅允许达到最低可接受 Chrome 操作系统和 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
    

    其中:

    • NAME 是访问权限级别的唯一名称,必须以字母开头,并且只包含字母、数字和下划线。

    • TITLE 是直观易懂的标题,必须为政策所独有。

    • POLICY_NAME 是您组织的访问权限政策名称。

    您应看到如下输出:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/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_NAME/accessLevels
    

    其中:

    • POLICY_NAME 是您组织的访问权限政策名称。

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

在基于身份授予访问权限时,可以与服务帐号一并使用,此举通常很有用。例如,启用 Cloud Function 来访问数据。

本示例说明如何为不符合其他访问权限级别标准的特定用户和服务帐号授予访问权限。在本示例中,假设您拥有系统管理员和服务帐号,您希望为其提供对某项目的服务访问权限,而无论其他访问权限级别中指定的条件如何。

控制台

Cloud Console 当前不支持将成员添加到访问权限级别。如果要将成员添加到访问权限级别,则必须使用 gcloud 命令行工具或 API。

gcloud

  1. 创建包含一个条件的 .yaml 文件,其中列出要为其提供访问权限的成员。

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

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
  2. 添加一个条件,其中列出您不希望应用于成员的访问权限级别。 求反是通过在步骤 4 中将合并函数设置为 OR 来实现的。

    在此示例中,假设访问权限级别分别命名为 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. 创建访问权限级别。

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --combine-function=OR \
       --policy=POLICY_NAME
    

    其中:

    • NAME 是访问权限级别的唯一名称,必须以字母开头,并且只包含字母、数字和下划线。

    • TITLE 是直观易懂的标题,必须为政策所独有。

    • POLICY_NAME 是您组织的访问权限政策名称。

    • combine-function 设置为 OR。默认值 AND 要求满足所有条件才能授予访问权限级别。即使不满足其他条件(例如 IP 地址或从其他必需访问权限级别继承的条件),OR 值也将为成员提供访问权限。

    您应看到如下输出:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/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. 添加一个条件,其中列出您不希望应用于成员的访问权限级别。 求反是通过在以下步骤中将合并函数设置为 OR 来实现的。

    在此示例中,假设访问权限级别分别命名为 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_NAME/accessLevels
    

    其中:

    • POLICY_NAME 是您组织的访问权限政策名称。