Crea niveles de acceso basados en el dispositivo

En este documento, se muestra cómo los administradores pueden crear niveles de acceso según los atributos del dispositivo (niveles de acceso basados en el dispositivo) mediante Access Context Manager.

Un nivel de acceso es un conjunto de atributos que se utiliza para permitir el acceso a los recursos según la información contextual sobre la solicitud. Como administrador, puedes crear niveles de acceso básicos o personalizados mediante los atributos del dispositivo que recopila Endpoint Verification.

Antes de comenzar

Crea un nivel de acceso

Consola

  1. En la consola de Google Cloud, ve a la página Access Context Manager.

    Ir a Access Context Manager

  2. Si se te solicita, selecciona tu organización.

  3. En la página Access Context Manager, haz clic en Crear un nivel de acceso.

  4. En el panel Nuevo nivel de acceso, crea un nivel de acceso básico o uno personalizado. Para obtener instrucciones, expande la sección requerida.

    Crea un nivel de acceso básico

    1. En el cuadro Título del nivel de acceso, ingresa un título para el nivel de acceso.

      El título debe tener como máximo 50 caracteres, comenzar con una letra y solo puede contener números, letras, guiones bajos y espacios.

    2. En la sección Crear condiciones en, selecciona Modo básico.

    3. En la sección Condiciones, selecciona los atributos del dispositivo:
      1. Haz clic en Device Policy.
      2. Selecciona los atributos obligatorios.

        Por ejemplo, si quieres aplicar la aprobación del administrador en los dispositivos, selecciona Requerir aprobación del administrador.

    4. Haz clic en Guardar.

    El nivel de acceso recién creado se muestra en la página Access Context Manager.

    Crea un nivel de acceso personalizado

    1. En el cuadro Título del nivel de acceso, ingresa un título para el nivel de acceso.

      El título debe tener como máximo 50 caracteres, comenzar con una letra y solo puede contener números, letras, guiones bajos y espacios.

    2. En la sección Crear condiciones en, selecciona Modo avanzado.
    3. En la sección Condiciones, ingresa las expresiones para tu nivel de acceso personalizado. La condición debe resolverse en un solo valor booleano.

      Si quieres encontrar los atributos de dispositivo disponibles para tu expresión de CEL, consulta los atributos del dispositivo que recopila la Verificación de extremos.

      La siguiente expresión de CEL permite el acceso solo desde los dispositivos encriptados:

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      Para ver ejemplos y más información sobre la compatibilidad con Common Expression Language (CEL) y los niveles de acceso personalizados, consulta la especificación de niveles de acceso personalizados.

    4. Haz clic en Guardar.

    El nivel de acceso recién creado se muestra en la página Access Context Manager.

gcloud CLI

Para crear niveles de acceso, usa el método gcloud access-context-manager levels create.

  1. Crea un archivo .yaml.

    • Para un nivel de acceso básico, especifica los atributos de política de dispositivo para el nivel de acceso.

      Ejemplo: Para limitar el acceso solo a los usuarios con almacenamiento encriptado del dispositivo, ingresa lo siguiente en el archivo .yaml.

        - devicePolicy:
            allowedEncryptionStatuses
              - ENCRYPTED
      
    • Para un nivel de acceso personalizado, especifica una expresión CEL con el formato de un solo par clave-valor: expression: "CEL_EXPRESSION"

      Ejemplo: Para limitar el acceso solo a los usuarios con almacenamiento del dispositivo encriptado y el estado del dispositivo aprobado, ingresa lo siguiente en el archivo .yaml.

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

    Para obtener una lista de los atributos de nivel de acceso a la política de dispositivos y su formato YAML, consulta Atributos de política de dispositivo. Para obtener un archivo YAML completo de todos los atributos posibles, consulta este ejemplo de archivo YAML de nivel de acceso.

    Si quieres encontrar los atributos de dispositivo disponibles para las especificaciones de nivel personalizado, consulta Atributos del dispositivo recopilados por la verificación de extremos.

  2. Crea el nivel de acceso:

    • Para un nivel de acceso básico, ejecuta el siguiente comando:

      gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
      --title=TITLE \
      --basic-level-spec=FILE_NAME.yaml\
      --policy=POLICY_NAME
      
    • Para un nivel de acceso personalizado, ejecuta el siguiente comando:

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

    Donde:

    • ACCESS_LEVEL_NAME es el nombre único para el nivel de acceso. Debe tener el siguiente formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.

    • LEVEL_ID es un nombre para el nivel de acceso. El nombre debe tener como máximo 50 caracteres, comenzar con una letra y solo puede incluir números, letras y guiones bajos.

    • TITLE es un título legible. Debe ser único para la política.

    • FILE_NAME es el nombre del archivo .yaml. En el caso de un nivel de acceso básico, contiene atributos de política de dispositivo. Para un nivel de acceso personalizado, contiene una expresión CEL con formato de un solo par clave-valor: “expresión: “CEL_ agente”.

    • POLICY_NAME es el nombre de la política de acceso de tu organización.

    Verás un resultado similar al siguiente:

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

API

Crea un nivel de acceso con el método accessPolicies.accessLevels.create.

Crea un nivel de acceso básico

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • POLICY_ID: El ID de la política de acceso de tu organización
  • LEVEL_ID: Es un nombre para el nivel de acceso. El nombre debe tener como máximo 50 caracteres, comenzar con una letra y solo puede incluir números, letras y guiones bajos.
  • ACCESS_LEVEL_NAME: Es el nombre único para el nivel de acceso. Debe tener el siguiente formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: Es un título legible. Debe ser única para la política.
  • DESCRIPTION: Es una descripción del nivel de acceso y su uso.
  • CONDITION: Es una lista de requisitos para el nivel de acceso que se otorgará.

HTTP method and URL:

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

Cuerpo JSON de la solicitud:


For basic access levels:

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

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:


{
  "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"
            ]
          }
        }
      ]
    }
  }
}

Crea un nivel de acceso personalizado

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • POLICY_ID: El ID de la política de acceso de tu organización
  • LEVEL_ID: Es un nombre para el nivel de acceso. El nombre debe tener como máximo 50 caracteres, comenzar con una letra y solo puede incluir números, letras y guiones bajos.
  • ACCESS_LEVEL_NAME: Es el nombre único para el nivel de acceso. Debe tener el siguiente formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: Es un título legible. Debe ser única para la política.
  • DESCRIPTION: Es una descripción del nivel de acceso y su uso.
  • CEL_EXPRESSION: Es una expresión de CEL que se evalúa como un valor booleano.

HTTP method and URL:

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

Cuerpo JSON de la solicitud:


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

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:


{
  "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"
      }
    }
  }
}

Para obtener más información sobre cómo crear niveles de acceso con varias condiciones y dependencias de niveles de acceso, consulta Crea un nivel de acceso básico.

¿Qué sigue?