Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En esta página, se detallan los objetos y atributos que se usan a fin de compilar las expresiones de Common Expression Language (CEL) para niveles de acceso personalizados. Se incluyen ejemplos.
Contiene atributos que describen el dispositivo desde el que se originó la solicitud.
Atributos de origin
En esta sección, se enumeran los atributos que admite el objeto origin.
Atributos
ip
Tipo
string
Descripción
La dirección IP desde la que se originó la solicitud Si no se puede determinar la dirección IP, origin.ip evalúa un error. Te recomendamos que uses
inIpRange para verificar si la dirección IP de origen está en un
rango de direcciones IP específico en lugar de hacer una comparación de cadenas.
Ejemplo:
inIpRange(origin.ip,["203.0.113.24"])
region_code
Tipo
string
Descripción
El código ISO 3166-1 alpha-2 para el país o la región en la que se originó la solicitud. Si el código regional no se puede
determinado, origin.region_code evalúa
a un error.
En esta sección, se enumeran los atributos que admite el objeto levels.
Atributos
level name
Tipo
boolean
Descripción
level name corresponde al nombre de un nivel de acceso existente.
Cuando se usa, también se deben cumplir las condiciones del nivel de acceso especificado, además de los otros requisitos del nivel de acceso personalizado.
Ejemplo:
levels.allow_corp_ips
En el que allow_corp_ips es el nombre de un nivel de acceso.
Atributo device
En esta sección, se enumeran los atributos que admite el objeto device. Si no hay ningún dispositivo
asociados con los identificadores en la solicitud, todos los siguientes
atributos se evaluará como un error.
Atributos
encryption_status
Tipo
enum
Descripción
Describe el estado de encriptación del dispositivo.
Valores de enumeración
enumDeviceEncryptionStatus{// The encryption status of the device is not specified or not known.ENCRYPTION_UNSPECIFIED==0;// The device does not support encryption.ENCRYPTION_UNSUPPORTED==1;// The device supports encryption, but is currently unencrypted.UNENCRYPTED==2;// The device is encrypted.ENCRYPTED==3;}
Si el administrador de dominio aprobó el dispositivo.
Ejemplo:
device.is_admin_approved_device==true
is_corp_owned_device
Tipo
boolean
Descripción
Si el dispositivo pertenece a la organización.
Ejemplo:
device.is_corp_owned_device==true
is_secured_with_screenlock
Tipo
boolean
Descripción
Si el dispositivo tiene habilitada la función de bloqueo de pantalla.
Ejemplo:
device.is_secured_with_screenlock==true
os_type
Tipo
enum
Descripción
Identifica el sistema operativo que usa el dispositivo.
Valores de enumeración
enumOsType{// The operating system of the device is not specified or not known.OS_UNSPECIFIED==0;// A desktop Mac operating system.DESKTOP_MAC==1;// A desktop Windows operating system.DESKTOP_WINDOWS==2;// A desktop Linux operating system.DESKTOP_LINUX==3;// An Android operating system.ANDROID==4;// An iOS operating system.IOS==5;// A desktop ChromeOS operating system.DESKTOP_CHROME_OS==6;}
El objeto vendors se usa para acceder a datos proporcionados por proveedores de administración de extremos y seguridad de terceros. Cada proveedor puede propagar tres atributos compartidos de nivel superior: is_compliant_device, is_managed_device y device_health_score.
Además, los proveedores pueden proporcionar sus propias claves y valores a los que se hace referencia con el atributo data.
Las claves disponibles para el atributo data varían de un proveedor a otro. Asegúrate de que sea coherente cuando compares el valor clave de tu expresión de política. Por ejemplo, si esperas que el valor de la clave sea una string o un booleano, asegúrate de compararlo con una string o un booleano en la expresión de la política correspondiente. Ten en cuenta que cuando el valor es un número entero, debes compararlo con un número doble en la expresión de la política.
Valores de enumeración
// Health score of the device as provided by the vendor (possibly third party).enumDeviceHealthScore{// The health score for the device is not specified or unknown.DEVICE_HEALTH_SCORE_UNSPECIFIED=0;// The health of the device is very poor.VERY_POOR=1;// The health of the device is poor.POOR=2;// The health of the device is ok.NEUTRAL=3;// The health of the device is good.GOOD=4;// The health of the device is very good.VERY_GOOD=5;}
Está administrado por el navegador, a nivel del navegador o a nivel del perfil, y por la empresa del dominio correcto.
Se considera que un navegador está administrado si las políticas se administran y se envían de forma central, y que el dominio del navegador o perfil administrado coincida con el dominio esperado en el servidor.
Los siguientes son los estados de administración de Chrome disponibles:
Estado
MANAGED
El cliente administra el navegador o perfil.
UNMANAGED
Ningún cliente administra el navegador o el perfil.
Comprueba si el sistema operativo del dispositivo es al menos una versión determinada. Te recomendamos que uses esta función con el atributo device.os_type.
Ejemplo:
device.versionAtLeast("10.0")==true
certificateBindingState(origin, device)
Tipo
(Peer, DeviceType) -> integer
Descripción
Verifica si el certificado de cliente asociado con el origen coincide con el dispositivo y si informa el estado.
El estado que muestra la función puede ser uno de los siguientes:
Prueba si el operando de cadena comienza con el argumento de prefijo.
Ejemplo:
"Sample string".startsWith("Sample")
endsWith()
Tipo
string.(string) -> bool
Descripción
Prueba si el operando de cadena termina con el argumento de sufijo.
Ejemplo:
"Sample string".endsWith("string")
origin.clientCertFingerprint()
Tipo
Origin.() -> cadena
Descripción
Muestra la huella digital del certificado asociado con el origen. Puedes usarla en macros para probar certificados de dispositivos.
Ejemplo:
// Checks if the enterprise certificate associated with the origin matches the device.device.certificates.exists(cert,cert.is_valid && cert.cert_fingerprint==origin.clientCertFingerprint())
Macros para expresiones CEL
Puedes usar las siguientes macros en las expresiones en CEL para los niveles de acceso personalizados:
Macro
Descripción
has(e.f)
Comprueba si un campo está disponible. Consulta Selección de campos para obtener más información. Ejemplo:
Comprueba si un predicado es válido para todos los elementos de una e de lista o las claves de un e de mapa. Aquí, x es un identificador que se usará en p y que se vincula al elemento o la clave. La macro all() combina los resultados de predicado por elemento con el operador and (&&), de modo que, si algún predicado se evalúa como falso, la macro se evalúa como falso y se ignoran los errores de otros predicados. Ejemplo:
El resultado es falso porque no todos los elementos son mayores que 1: [1,2,3].all(x, x > 1)
e.exists(x, p)
Es similar a la macro all(), pero combina los resultados del predicado con el operador or (||). Ejemplo:
Esto muestra un valor verdadero porque hay al menos un elemento en la lista mayor que 1: [1,2,3].exists(x, x > 1)
Verifica si el certificado empresarial asociado con el dispositivo coincide con el emisor: device.certificates.exists(cert, cert.is_valid && cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN")
e.exists_one(x, p)
Es similar a la macro exists(), pero se evalúa como verdadero solo si el predicado de exactamente un elemento o una clave se evalúa como verdadero y el resto como falso. Cualquier otra combinación de resultados booleanos se evalúa como falsa, y cualquier error de predicado provoca que la macro genere un error. Ejemplo:
El resultado es falso porque más de un elemento es mayor que 1: .
[1,2,3].exists_one(x, x > 1)
Expresiones de CEL de ejemplo
En esta sección, se incluyen ejemplos de expresiones CEL que se usan para crear niveles de acceso personalizados.
En este ejemplo, se representa un nivel de acceso que requiere que se cumplan las siguientes condiciones para permitir una solicitud:
Se cumple una de las siguientes condiciones:
El dispositivo desde el cual se originó la solicitud usa un sistema operativo Windows de escritorio y es propiedad de tu organización.
El dispositivo que originó la solicitud usa una computadora con sistema operativo Mac, el administrador del dominio lo aprueba, y tiene, al menos, MacOS 10.11.
En este ejemplo, se representa un nivel de acceso que requiere que se cumpla la siguiente condición para permitir una solicitud:
La función de extensión certificateBindingState determina que el certificado que se presenta en el momento de la solicitud coincide con uno de los certificados de dispositivo que se registró cuando el dispositivo se inscribió en la verificación de extremos.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2024-10-13 (UTC)"],[],[]]