0% encontró este documento útil (0 votos)
6 vistas7 páginas

Reglas y Scripts en SailPoint IIQ

Las reglas y scripts permiten personalizar SailPoint IdentityIQ al incrustar pequeños fragmentos de código o crear objetos de regla reutilizables. Se escriben utilizando el lenguaje de scripting beanshell y tienen acceso al contexto de la API de SailPoint y a los registros. Las reglas pueden devolver objetos y se utilizan para personalizar formularios, políticas, flujos de trabajo y más. El modelo de datos de SailPoint representa la información como objetos que se mapean a una base de datos SQL utilizando Hibernate. Las mejores prácticas para las reglas incluyen realizar consultas eficientes, limitar la recuperación de objetos y optimizar las reglas que se ejecutan de forma iterativa.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas7 páginas

Reglas y Scripts en SailPoint IIQ

Las reglas y scripts permiten personalizar SailPoint IdentityIQ al incrustar pequeños fragmentos de código o crear objetos de regla reutilizables. Se escriben utilizando el lenguaje de scripting beanshell y tienen acceso al contexto de la API de SailPoint y a los registros. Las reglas pueden devolver objetos y se utilizan para personalizar formularios, políticas, flujos de trabajo y más. El modelo de datos de SailPoint representa la información como objetos que se mapean a una base de datos SQL utilizando Hibernate. Las mejores prácticas para las reglas incluyen realizar consultas eficientes, limitar la recuperación de objetos y optimizar las reglas que se ejecutan de forma iterativa.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Reglas y Scripts: Pequeños fragmentos de código que personalizan IIQ

● El script está incrustado (solo se usa en ese lugar)


● La regla es un objeto que se puede usar en cualquier lugar y llamar varias veces.

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.

Todas las reglas de SailPoint reciben "contexto" y "registro".


● El contexto proporciona acceso a la API de SailPoint
● Permitir que los registros se escriban en log4j

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

● Marco de atributos extendidos


● Marca de tiempo de creación / modificación
método deepCopy()
● Cerraduras, desactivar banderas

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?

Hay documentación de API en BASE_URL/doc/javadoc

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

El contexto te permite buscar y recuperar objetos de la base de datos.

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

Llamar a getOptions sin buenas opciones de consulta será muy ineficiente

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

count(clase, OpcionesDeConsulta) te dirá cuántas de una búsqueda existen

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

Los filtros pueden ser y’d o o’d

Todos los detalles de configuración del sistema están disponibles para el contexto, incluidos los detalles sobre el actualmente
logged in user: [Link]()

[Link]() obtiene el userid del usuario que ha iniciado sesión

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.

CertificationGroup: Object that represents a certification campaign

Cada revisión de acceso en una campaña de certificación es su propio objeto de certificación.

Entidad de Certificación: Representa el objeto que se está certificando (a menudo Identidades o Roles)

A través de reglas, puedes programáticamente pasar de CertificationGroup a la CertificationDefinition y


Certificación.

ProvisioningPlan y ProvisioningProject son los dos objetos clave para la provisión.

ProvisioningPlan: Original submission of change to be made


Proyecto de Aprovisionamiento: Conjunto completo de requisitos para que se logre el plan de aprovisionamiento

ResultadoDeProvisionamiento: Estado del ProyectoDeProvisionamiento

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)

Reglas de certificación: Apoyar la manipulación del contenido y el comportamiento durante la certificación


campaña.

Reglas de aprovisionamiento: Impactar flujos de trabajo y políticas de aprovisionamiento.


Reglas de personalización: Se ejecutan para cada cuenta o grupo de cuentas introducido en IIQ desde un
aplicación. Podría permitirte modificar los datos o excluir datos.

Regla de correlación: Ayuda a mapear la cuenta a la identidad

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

métodos [Link] (lockIdentity, lockCert, unlockIdentity...) después de que estés


terminado, necesitas desbloquear el objeto (o establecer un tiempo de espera cuando lo bloquees inicialmente)

Los bloqueos de transacciones se liberan automáticamente

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]é().

el método search() es mucho más eficiente que getObjects()

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

Algunas reglas tienen objetos de estado para compartir datos.

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.

AP se puede modificar a través de páginas de UI en una aplicación.

Preguntas para poner a prueba tu conocimiento de Reglas, Scripts y Beanshell:


¿Qué argumentos se proporcionan automáticamente a cada regla?
¿Puedes introducir lógica personalizada en una biblioteca de reglas para ser llamada por otras reglas?
● ¿Puedes escribir reglas directamente en la consola iiq?
¿Puedes escribir la regla en código beanshell y envolverla en un documento xml para ser importada?
● V/F ¿Necesitas escribir scripts SQL para acceder a los datos almacenados en objetos de identidad?
¿Es getAllAttributes() un método real que puedes llamar para depurar y ver datos dentro de un iiq?
¿objeto?
¿Es toXml() un método real que puedes llamar para depurar y ver datos dentro de un objeto iiq?
¿Es la búsqueda o consulta el método que admite consultas de proyección y mejor memoria?
gestión?
¿QueryOptions realiza una función de filtrado?
¿QueryOptions permite búsquedas distintas?
¿QueryOptions permite ordenar los resultados?
¿QueryOptions permite límites en el conjunto de resultados?
● V/F El objeto de identidad contiene atributos que conectan con las cuentas de la identidad y
roles?
● V/F ¿Un paquete representa un derecho en el Catálogo de Derechos?
● V/F Un ManagedAttribute representa un derecho en el Catálogo de Derechos?
● V/F Un Plan de Aprovisionamiento puede aplicarse a muchas identidades?
● V/F ¿Un Proyecto de Provisionamiento puede requerir cosas que no están en el Plan de Provisionamiento?

● V/F El ProvisioningResult informa el nombre de la cuenta específica creada en la Cuenta


¿Crear operaciones?
● V/F ¿Las reglas de pre-iteración forman parte del proceso de certificación?
¿T/F Las reglas de exclusión son parte del proceso de agregación?
● V/F Es una buena idea llamar periódicamente a [Link]()
● F/V [Link]() deja los cursores de la base de datos intactos

● 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?

También podría gustarte