创建基于设备的访问权限级别

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本文档介绍了管理员如何使用 Access Context Manager 根据设备特性(基于设备的访问权限级别)创建访问权限级别。

访问权限级别是一组特性,用于根据请求的上下文信息允许访问资源。作为管理员,您可以使用端点验证收集的设备属性来创建基本访问权限级别或自定义访问权限级别。

准备工作

创建访问权限级别

控制台

  1. 在 Google Cloud Console 中,转到 Access Context Manager 页面。

    转到 Access Context Manager

  2. 如果系统提示,请选择您的组织。

  3. Access Context Manager 页面上,点击 创建访问权限级别

  4. 新建访问权限级别窗格中,创建基本访问权限级别或自定义访问权限级别。有关说明,请展开此部分。

    创建基本访问权限级别

    1. 访问权限级别标题框中,输入访问权限级别的标题。

      标题不得超过 50 个字符,以字母开头,且只能包含数字、字母、下划线和空格。

    2. 在以下条件中创建条件部分,选择基本模式

    3. 条件部分,选择设备属性:
      1. 点击 Device Policy
      2. 选择必需属性。

        例如,如果您要对设备强制执行管理员审批,请选择需要管理员批准

    4. 点击保存

    新创建的访问权限级别会显示在 Access Context Manager 页面上。

    创建自定义访问权限级别

    1. 访问权限级别标题框中,输入访问权限级别的标题。

      标题不得超过 50 个字符,以字母开头,且只能包含数字、字母、下划线和空格。

    2. 在以下条件中创建条件部分,选择高级模式
    3. 条件部分中,输入您的自定义访问权限级别的表达式。条件必须解析为单个布尔值。

      如需查找 CEL 表达式的可用设备属性,请参阅端点验证收集的设备属性

      以下 CEL 表达式仅允许从加密设备访问:

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      有关通用表达式语言 (CEL) 支持和自定义访问权限级别的示例和详细信息,请参阅自定义访问权限级别规范

    4. 点击保存

    新创建的访问权限级别会显示在 Access Context Manager 页面上。

gcloud CLI

如需创建访问权限级别,请使用 gcloud access-context-manager level create 方法。

  1. 创建一个 .yaml 文件。

    • 对于基本访问权限级别,请指定访问权限级别的设备政策属性。

      示例:如需仅允许具有加密设备存储空间的用户进行访问,请在 .yaml 文件中输入以下内容。

        - devicePolicy:
            allowedEncryptionStatuses
              - ENCRYPTED
      
    • 对于自定义访问权限级别,请指定格式为单个键值对的 CEL 表达式:expression: "CEL_EXPRESSION"

      示例:要仅允许具有加密设备存储空间且设备已获批准的用户访问,请在 .yaml 文件中输入以下内容。

      expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && device.is_admin_approved_device"
      

    如需查看设备政策访问权限级别属性及其 YAML 格式的列表,请参阅设备政策属性。如需查看包含所有可用属性的综合 YAML 文件,请参阅访问权限级别 YAML 文件示例

    要查找适用于自定义级别规范的设备属性,请参阅端点验证收集的设备属性

  2. 创建访问权限级别。

    • 对于基本访问权限级别,请运行以下命令:

      gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
      --title=TITLE \
      --basic-level-spec=FILE_NAME.yaml\
      --policy=POLICY_NAME
      
    • 对于自定义访问权限级别,请运行以下命令:

      gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
      --title=TITLE \
      --custom-level-spec=FILE_NAME.yaml\
      --policy=POLICY_NAME
      

    其中:

    • ACCESS_LEVEL_NAME 是访问权限级别的唯一名称。它必须采用以下格式:accessPolicies/POLICY_ID/accessLevels/LEVEL_ID

    • LEVEL_ID 是访问权限级别的名称。名称不得超过 50 个字符,以字母开头,且只能包含数字、字母和下划线。

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

    • FILE_NAME.yaml 文件的名称。对于基本访问权限级别,它包含设备政策属性。对于自定义访问权限级别,它包含一个 CEL 表达式,格式为单个键值对:`expression: "CEL_EXPRESSION"。

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

    您将看到类似如下所示的输出:

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

使用 accessPolicies.accessLevels.create 方法创建访问权限级别。

创建基本访问权限级别

在使用任何请求数据之前,请先进行以下替换:

  • POLICY_ID:您的组织的访问权限政策的 ID。
  • LEVEL_ID:访问权限级别的名称。名称不得超过 50 个字符,以字母开头,且只能包含数字、字母和下划线。
  • ACCESS_LEVEL_NAME:访问权限级别的唯一名称。它必须采用以下格式:accessPolicies/POLICY_ID/accessLevels/LEVEL_ID
  • TITLE:简单易懂的标题。它必须是此政策的专属网址。
  • DESCRIPTION:有关访问权限级别及其用途的说明。
  • CONDITION:要授予的访问权限级别要求列表。

HTTP 方法和网址:

POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels

请求 JSON 正文:


For basic access levels:

{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
  "description": DESCRIPTION,

  "basic": {
  "conditions": [
    {
    CONDITION
    }
   ],
  }
 },
}

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"

PowerShell

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:


{
  "name": "operations/accessPolicies/84961948973/accessLevels/deviceEncrypted/create/1666896068847514",
  "metadata": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
    "name": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
    "title": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
    "basic": {
      "conditions": [
        {
          "devicePolicy": {
            "allowedEncryptionStatuses": [
              "ENCRYPTED"
            ]
          }
        }
      ]
    }
  }
}

创建自定义访问权限级别

在使用任何请求数据之前,请先进行以下替换:

  • POLICY_ID:您的组织的访问权限政策的 ID。
  • LEVEL_ID:访问权限级别的名称。名称不得超过 50 个字符,以字母开头,且只能包含数字、字母和下划线。
  • ACCESS_LEVEL_NAME:访问权限级别的唯一名称。它必须采用以下格式:accessPolicies/POLICY_ID/accessLevels/LEVEL_ID
  • TITLE:简单易懂的标题。它必须是此政策的专属网址。
  • DESCRIPTION:有关访问权限级别及其用途的说明。
  • CEL_EXPRESSION:计算布尔值的 CEL 表达式。

HTTP 方法和网址:

POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels

请求 JSON 正文:


{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
  "description": DESCRIPTION,

  "custom": {
   "conditions": [
     {
      "expr": {
     CEL_EXPRESSION
     }
    }
   ]
  }
 },
}

如需发送请求,请选择以下方式之一:

curl

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"

PowerShell

将请求正文保存在名为 request.json 的文件中,然后执行以下命令:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content

您应该收到类似以下内容的 JSON 响应:


{
  "name": "operations/accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName/create/1666936427127701",
  "metadata": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
    "name": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName",
    "title": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelTitle",
    "custom": {
      "expr": {
        "expression": "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED"
      }
    }
  }
}

如需详细了解如何创建具有各种条件和访问权限级别依赖项的访问权限级别,请参阅创建基本访问权限级别

后续步骤