Reglas y Scripts en SailPoint IIQ
Reglas y Scripts en SailPoint IIQ
Se pueden personalizar formularios, políticas de aprovisionamiento, flujos de trabajo, certificaciones, agregaciones, aprovisionamiento.
etc
Beanshell: Sintaxis similar a Java, pero se interpreta (no se compila). Las reglas y scripts se escriben en
beanshell. Beanshell importa por defecto algunas funcionalidades de Java.
Las reglas a menudo devuelven objetos (cadena, identidad, objeto de Java, etc.).
● Algunas reglas pueden devolver varios tipos de objeto, es decir, ya sea el nombre de identidad o el objeto de identidad.
La interfaz de usuario del editor de reglas muestra la intención de las reglas y los objetos pasados.
Las reglas también se pueden escribir en IDE e importarse -> el código de la regla de beanshell necesita estar envuelto
en un objeto XML.
IIQ Deployment Accelerator es un complemento de Eclipse para ayudar a acelerar el tiempo de desarrollo, incluyendo
verificación de sintaxis de beanshell y provisión de reglas de plantilla.
Namespace: Usa name = [Link][i] para obtener la variable y eval(name) para ver qué hay en
el espacio de nombres.
Bibliotecas de reglas: Colección de métodos que se gestionan desde otras reglas. Permitir código
reutilizar.
● En otra regla, utiliza ReferencedRules para importar la Biblioteca de Reglas y usarla
SailPoint is a Java app, so data is stored as objects. There is a SQL backend, and hibernate is
se utiliza para mapear entre java y SQL. XML se utiliza para la serialización de sus objetos.
La edición de datos de IIQ debe hacerse a través del modelo de objeto (o hibernate) y no directamente desde la base de datos.
La clase SailPointObject proporciona características y atributos importantes a todas las clases derivadas, incluyendo:
● Name
● ID único
● Descripción
● Propietario
Persistencia de Hibernate
● Serialización XML
Identidad, AtributoGestionado, Rol, Certificación, etc., se pueden extender para atributos adicionales.
(nombrados y no nombrados)
Hay métodos getter y setter predefinidos para todos los atributos predeterminados ([Link]()) y
hay métodos genéricos de obtención y establecimiento para atributos personalizados
([Link]("departamento");
toXml() se puede llamar en todos los objetos IIQ que permiten registrar el objeto y tener perspectiva sobre
¿Qué está pasando?
Contexto de SailPoint: Punto de entrada a la API: te permite recuperar otros objetos e interactuar con ellos.
Always available in every rule, script, workflow step, etc
getObjects() te permite obtener todos los objetos de un tipo dado (las opciones de consulta son un parámetro opcional)
search() te permite filtrar según el tipo de objeto y los criterios de búsqueda
getObjectByName()/getObjectById retrieves a single, specific object with given name/id
Consulta de Proyección: significativamente más eficiente que otras consultas, en lugar de consultar para un
objeto completo solo consultas por ciertos datos (como el nombre de identidad)
Es decir, [Link]([Link], queryOptions, "nombre") -> agregar nombre es lo que hace
esta es una consulta de proyección. Sin ella, se devolvería un iterador de objetos de identidad
(en lugar de un iterador de cadenas)
La consulta de proyección puede ser una cadena separada por comas: es decir, [Link]([Link],
queryOptions, “name, status”)
Mejor Práctica: Usa una consulta de proyección con recuperación de un solo objeto. Itera sobre la consulta de proyección
resultados, y uno por uno agarra la identidad y haz lo que necesites
Filter: Search criteria. Allows for complexity like [Link](“firstName”, “Ar”, [Link])
OpcionesDeConsulta: Combinación de 1+ filtros para reducir el espacio de búsqueda. También admite ordenamiento,
agrupamiento y paginación
Todos los detalles de configuración del sistema están disponibles para el contexto, incluidos los detalles sobre el actualmente
logged in user: [Link]()
Perfil de derecho: Objeto en un rol (paquete). Puede mostrar algo como miembros de este rol
debe tener el derecho A o el derecho B en una aplicación dada. Detalles sobre un Perfil de Derechos
te permitiría buscar un atributo administrado relacionado.
Entidad de Certificación: Representa el objeto que se está certificando (a menudo Identidades o Roles)
Personalizado: Objeto, envoltura alrededor de un mapa de atributos. Almacena pares de nombre y valor. Te permite...
ayudar a cumplir con los requisitos comerciales.
Configuración: Utilizado por el código principal de IIQ. También es un contenedor alrededor de un mapa de atributos. Almacena
datos específicos de configuració[Link], Configuración del Sistema, etc.
Reglas de agregado: Todo sobre la manipulación de datos a medida que los lees desde la fuente a medida que entran en IIQ.
Some aggregation rules are connector specific (build map, merge map)
Creation Rule: Only run when the rule is creating a new IIQ cube
Las reglas iterativas (reglas que se ejecutan una vez por cada cuenta) deben ser extremadamente eficientes.
Todos los conectores crean ResourceObjects a partir de cuentas / grupos a medida que se leen del objetivo.
sistema.
Los datos pueden necesitar ser preprocesados dependiendo del tipo de conector (es decir, jdbc).
● Build Map: Data manipulation prior to building the map
● Mapa de Fusión: Fusionando filas de datos para ser un solo objeto de recurso
● Mapa a ResourceObj: Masajeo de datos post fusión
Pre Iterar / Post Iterar: Regla que puede ejecutarse una vez antes (pre) y una vez después (post) de los datos
se lee de un archivo delimitado
Regla de Exclusión de Certificación: Filtrar elementos individuales / grupos de elementos que no desea
incluir (quizás quiera certificar todos los derechos, pero quiere filtrar el derecho de nacimiento)
Regla de Pre-delegación: Redirigir partes / toda la revisión de acceso de quien normalmente la revisaría
(quizás el equipo ejecutivo no hace sus propias revisiones)
Reglas de escalamiento: Reasigna el elemento de aprobación a un nuevo propietario si el aprobador no certifica de manera oportuna.
manera
Regla de Aprobación de Descripción: Segundo nivel de aprobación antes de que el sistema actúe sobre las decisiones
Regla de Entrada / Salida: Cuándo comenzar y cuándo finalizar cada período de certificación
Durante la provisión, se pueden utilizar reglas y ganchos de scripts para definir variables de forma programática.
valores.
Los valores de los atributos en las políticas de aprovisionamiento se pueden establecer con reglas y scripts también.
La salida estándar ([Link]()) va al registro de salida estándar, pero no debería estar en el código.
al pasar a producción. -> Utilice log4j (paquete de registro basado en Java). iiq 8.0 y versiones posteriores utilizan log4j2
Mejor práctica: Crear registradores personalizados, para permitir un registro granular (no debería entrar en conflicto con)
espacio de nombres sailpoint). En el archivo de propiedades log4j, se puede establecer el nivel de registro
An unset variables is null, an undeclared variable is void (b/c beanshell is loose typed). Make
sure variable is both declared and non [Link] void checking and null checking(var != void)
Bloqueo de objetos: Asegúrese de que múltiples procesos no intenten actualizar el mismo objeto al mismo tiempo.
tiempo.
Bloqueo Persistente: Puede persistir a través de transacciones, columna especial para ello en la base de datos, solo existe
for identity, certification, full text index, workflow case, work item
Bloqueos de transacción: Todos los demás bloqueos, sin columna de base de datos especial, el bloqueo solo existe para uno
transacción
La agregación, el MCM, la actualización, la certificación, etc. bloquea automáticamente esos objetos durante las actualizaciones
Al acceder y modificar un objeto, a veces necesitas guardar el objeto tú mismo (es decir, tú
escribió una regla que no devuelve nada para actualizar identidades, necesitas
[Link](identidad) y [Link]()
Mejor práctica: No dejar cursores abiertos. Es decir, si buscas y obtienes un iterador, itera.
a través de toda la lista o llama a [Link](iterator) sobre ella si sales del bucle antes
Si estás trabajando con un objeto específico que ya no necesitas, llama a decache en él.
[Link](object). Si estás iterando a través de muchos objetos, descache cada 100 más o menos.
[Link]é().
ProjectionQuery te da un cursor de base de datos en lugar de cargar todo el objeto en memoria, así que mucho
mejor rendimiento.
El filtrado ayuda a devolver la cantidad mínima de datos necesarios. Menos datos innecesarios, mejor.
Para las reglas iterativas (fusión de mapas, personalización de objetos de recursos) es muy importante ser eficiente.
Las reglas de exclusión de certificación y las reglas de predelegación necesitan iterar a través de todas las identidades en el
cert y todos los elementos de certificación respectivamente, por lo que es super importante que también sean eficientes.
Sacar funciones no iterativas de reglas iterativas (si necesitas datos de una base de datos externa, no lo haces)
quiero conectarme a esa base de datos nuevamente para cada ejecución adicional, hacer la búsqueda una vez y almacenarla como personalizada
El objeto Meter te permite evaluar qué tan rápido se están ejecutando las reglas y ver cómo los cambios en las reglas afectan.
rendimiento.
es decir
[Link]
[Link](“Rule 1”);
// hacer cosas
[Link]("Regla 2"):
Y SailPoint recogerá y proporcionará estadísticas (mínimo, máximo, promedio) sobre la velocidad de ejecución del código.
Cuando incorporas aplicaciones con el paquete de aceleración, sus reglas se configuran automáticamente en el
definición de aplicación. Puedes sobrescribir las reglas del paquete de aceleración donde quieras. Pero,
el paquete de acelerador permite a los BAs configurar SailPoint a través de páginas de interfaz de usuario de asistente, así que si sobrescribes eso
ya no será el caso.
No modifiques directamente las reglas del paquete de aceleración, ya que puede afectar la lógica del AP. Esas reglas pueden llamar
reglas específicas para el cliente al final de su procesamiento.
● V/F Es una buena práctica usar el objeto de registro pasado a cada regla para registrar
● V/F El paquete de acelerador incluye reglas que se pueden configurar a través de la interfaz de usuario?
¿El paquete de aceleración necesita ser configurado tal como está y no se puede editar?