Crea niveles de acceso basados en el dispositivo

En este documento, se muestra cómo los administradores pueden crear niveles de acceso basados en atributos de dispositivos (niveles de acceso basados en dispositivos) con Access Context Manager.

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

Antes de comenzar

Crea un nivel de acceso

Console

  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 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 de texto Título del nivel de acceso, ingresa un título para el nivel de acceso.

      El título debe tener un máximo de 50 caracteres y 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 Política de dispositivo.
      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 creado recientemente se muestra en la página Access Context Manager.

    Crea un nivel de acceso personalizado

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

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

      Para encontrar los atributos de dispositivo disponibles para tu expresión CEL, consulta los atributos de dispositivo que recopila Endpoint Verification.

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

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

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

    4. Haz clic en Guardar.

    El nivel de acceso creado recientemente 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 la política del 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 par clave-valor único: 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 integral de todos los atributos posibles, consulta este ejemplo de archivo YAML de nivel de acceso.

    Para encontrar los atributos de dispositivo disponibles para las especificaciones de niveles personalizados, consulta Atributos de dispositivos recopilados por Endpoint Verification.

  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

    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. En el caso de un nivel de acceso básico, contiene atributos de la política de dispositivo. Para un nivel de acceso personalizado, contiene una expresión CEL con el formato de un solo par clave-valor: "expression: "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 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 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 por humanos. 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 que se otorgue el nivel de acceso.

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: 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 por humanos. Debe ser único para la política.
  • DESCRIPTION: Una descripción del nivel de acceso y su uso.
  • CEL_EXPRESSION: Es 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?