Crear niveles de acceso basados en el dispositivo

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

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

Un nivel de acceso es un conjunto de atributos que se usa para permitir el acceso a los recursos según información contextual sobre la solicitud. Como administrador, puedes crear niveles de acceso básicos o personalizados mediante los atributos de dispositivo recopilados por la Verificación de extremos.

Antes de comenzar

Crea un nivel de acceso

Consola

  1. En Google Cloud Console, 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 nivel de acceso.

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

    Crea un nivel de acceso básico

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

      El título debe tener 50 caracteres como máximo, 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 deseas 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 de Access Context Manager.

    Crea un nivel de acceso personalizado

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

      El título debe tener 50 caracteres como máximo, 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.

      A fin de buscar los atributos de dispositivo disponibles para tu expresión CEL, consulta los atributos del dispositivo que recopila Endpoint Verification.

      La siguiente expresión 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 de Access Context Manager.

CLI de gcloud

Para crear niveles de acceso, usa el método de creación de niveles de acceso de gcloud.

  1. Crea un archivo .yaml.

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

      Ejemplo: Para limitar el acceso solo a los usuarios con almacenamiento encriptado por 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 encriptado por dispositivo y con el estado de 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 archivo YAML de nivel de acceso de ejemplo.

    A fin de encontrar los atributos de dispositivo disponibles para las especificaciones de nivel personalizado, consulta Atributos de dispositivos 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 obtener 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
      

    Aquí:

    • 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 un máximo de 50 caracteres, comenzar con una letra y solo puede contener 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. Para 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 el formato de un solo par clave-valor: “expresión: “CEL_EXPRESSION”.

    • 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 mediante 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: Es 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 un máximo de 50 caracteres, comenzar con una letra y solo puede contener números, letras y guiones bajos.
  • ACCESS_LEVEL_NAME: Es el nombre único del nivel de acceso. Debe tener el siguiente formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: Es un título legible. Debe ser único para la política.
  • DESCRIPTION: Una descripción del nivel de acceso y su uso
  • CONDITION: Es una lista de requisitos para el nivel de acceso que se otorgará.

Método HTTP y 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: Es 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 un máximo de 50 caracteres, comenzar con una letra y solo puede contener números, letras y guiones bajos.
  • ACCESS_LEVEL_NAME: Es el nombre único del nivel de acceso. Debe tener el siguiente formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: Es un título legible. Debe ser único para la política.
  • DESCRIPTION: Una descripción del nivel de acceso y su uso
  • CEL_EXPRESSION: una expresión CEL que se evalúa como un valor booleano.

Método HTTP y 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 nivel de acceso, consulta Crea un nivel de acceso básico.

¿Qué sigue?