Crear niveles de acceso basados en dispositivos

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

Un nivel de acceso es un conjunto de atributos que se usa para permitir el acceso a recursos basados en sobre la información contextual de la solicitud. Como administrador, puedes crear los niveles de acceso básicos o los personalizados mediante 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 una un nivel de acceso 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, ingrese el título del el nivel de acceso.

      El título debe tener 50 caracteres como máximo, comenzar con una letra y contener solo 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 quieres aplicar de manera forzosa la aprobación del administrador en los dispositivos, Selecciona Exigir aprobación del administrador.

    4. Haz clic en Guardar.

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

    Crea un nivel de acceso personalizado

    1. En el cuadro Título del nivel de acceso, ingrese el título del el nivel de acceso.

      El título debe tener 50 caracteres como máximo, comenzar con una letra y puede contener solo 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 valor.

      Si quieres encontrar los atributos de dispositivos disponibles para tu expresión CEL, sigue estos pasos: consulta los atributos del dispositivo que recopila Endpoint Verification.

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

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      Para ver ejemplos y más información sobre Common Expression Language (CEL) y 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 página de 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 del nivel de acceso.

      Ejemplo: Para limitar el acceso solo a los usuarios con almacenamiento encriptado en el 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 único par clave-valor: expression: "CEL_EXPRESSION"

      Ejemplo: Para limitar el acceso solo a los usuarios con almacenamiento encriptado en el dispositivo y, con el estado de dispositivo aprobado, ingresa lo siguiente en el .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 con todos los atributos posibles, consulta este ejemplo de archivo YAML de nivel de acceso.

    Para encontrar los atributos de dispositivos disponibles para especificaciones de nivel personalizado, haz lo siguiente: consulta Atributos de dispositivos recopilados por Endpoint Verification

  2. Crea el nivel de acceso:

    • Para obtener 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 50 caracteres como máximo, 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. En el caso de un nivel de acceso, contiene una expresión CEL con el formato par clave-valor único: `expression: "CEL_SPECIFICION".

    • 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 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 50 caracteres como máximo, deben comenzar con una letra y solo pueden contener números, letras y guiones bajos.
  • ACCESS_LEVEL_NAME: Es el nombre único para el nivel de acceso. Debe incluir lo siguiente: formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: Es un título legible por humanos. Debe ser único para la política.
  • DESCRIPTION: Es 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: 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 50 caracteres como máximo, deben comenzar con una letra y solo pueden contener números, letras y guiones bajos.
  • ACCESS_LEVEL_NAME: Es el nombre único para el nivel de acceso. Debe incluir lo siguiente: formato: accessPolicies/POLICY_ID/accessLevels/LEVEL_ID.
  • TITLE: Es un título legible por humanos. Debe ser único para la política.
  • DESCRIPTION: Es 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 las dependencias de nivel de acceso, consulta Crea un nivel de acceso básico.

¿Qué sigue?