""

Applying Custom Security on Web Intelligence Documents

Uno de los principales obstáculos que debe superar un desarrollador de Web Intelligence es cómo lidiar con la seguridad de los datos. De hecho, la búsqueda de seguridad de datos sigue siendo la principal preocupación para muchas empresas que intentan garantizar la disponibilidad, integridad y confidencialidad de la información comercial, protegiendo tanto la base de datos de las fuerzas destructivas como las acciones no deseadas o la visualización de datos no deseados de usuarios no autorizados.En SAP BusinessObjects tenemos varias formas de configurar una hoja de ruta de seguridad en términos de acceso a datos de autorización, pero esta vez me gustaría hablar sobre cómo usar la seguridad personalizada en nuestros documentos WebI mediante una tabla simple, uniones forzadas en el Diseñador de universos y la herramienta WebI para mostrar solo los datos que un usuario está autorizado a ver.

Tenemos el siguiente escenario: Imagine que tenemos un grupo con diferentes niveles de jerarquía en términos de niveles de acceso a datos. Cuanto más alto se encuentre en la organización, más datos tendrá acceso. De esta manera, el primer nivel dentro de la jerarquía puede ver todos los datos, el segundo nivel en la jerarquía puede ver sus datos de nivel y los niveles a continuación, pero no tendrá acceso a la información del primer nivel, el tercer nivel puede ver sus propios datos y niveles a continuación , pero no tendrá acceso a información de segundo y primer nivel ... y así sucesivamente.

 

Veamos ahora un enfoque paso a paso sobre cómo lograr esto

Lo primero que debe hacer es un ejercicio para definir cuál es la estructura de la jerarquía, especificando el nivel de cada individuo y la fecha a la que tendrá acceso. Después de eso, tenemos que crear una tabla en nuestra base de datos donde almacenaremos grupos, usuarios y privilegios. Los campos clave para este propósito son:

BO_User: Esto se verificará con los usuarios actuales que tienen acceso a la webi.

Nivel más alto: Nivel en la jerarquía a la que pertenece el usuario. Para este ejemplo tendremos 4 niveles de organización donde 0 es el nivel más alto y 3 es el más bajo.

Level_value: se verificará en la tabla de hechos.

Una vez que tengamos la tabla con todos los datos relacionados ya almacenados, es hora de asignarla en la metacapa de SAP BusinessObjects. Para este propósito, tenemos que importar el universo afectado y crear una tabla derivada que recupere todos los datos relacionados para un usuario determinado (esto significa todos los datos que un usuario puede ver de acuerdo con su nivel de acceso a datos). El código SQL debería ser similar al siguiente:

SEL       BO_User, Level_Organization_3 FROM  CLARIBA.SECURITY a

IZQUIERDA UNIRSE

(SEL Level_Organization_0 , Level_Organization_1 , Level_Organization_2 , Level_Organization_3 FROM CLARIBA.FACT_TABLE GROUP BY 1,2,3,4) b

ON (

(Highest_Level=0 AND UPPER (a.level_value) = b.Level_Organization_0) OR (Highest_Level=1 AND UPPER (a.level_value) = b.Level_Organization_1) OR (Highest_Level=2 AND UPPER (a.level_value) = b.Level_Organization_2) OR (Highest_Level=3 AND UPPER (a.level_value) = b.Level_Organization_3) )

WHERE security_group=' CLARIBA'

 

Esta tabla derivada en particular creará un par de objetos que se usarán en la WebI que queremos proteger (BO_User y Level_Organization_3).

El tercer paso es desarrollar y aplicar la seguridad en la WebI donde queremos llevar a cabo la restricción de datos. Para este propósito tenemos que crear dos nuevas dimensiones y un detalle. Asegúrese de que su consulta incluya esos objetos recién creados.

First task is discovering which users are trying to access the WebI. We can get their login by creating a new dimension named “BO_User” that contains the following formula:

 = CurrentUser ()

 

Once we know who is trying to access WebI, we have to control if the BO_User matches with the User name that we had in our table.  We can create a dimension named “FlagBOuser” with the following formula:

= If (Inferior ([BO_User]) = Inferior ([Nombre de usuario]); 1; 0)

 

Next step is to control what level of data access this BO_user will have. In other words we are applying a kind of row/column level security. For this purpose we create a detail object named “Level_Organization” with the following code:

= If ([FlagBOUser] = 1; [Level_Organization_3])

 

Una vez que tenemos estos objetos de información, el último paso es arrastrar y soltar tanto FlagBOuser como Level_Organization como filtros globales a nivel de documento. De esta forma, aplicamos la restricción de datos a cada bloque de datos que se muestra en el informe.

Las condiciones que se aplicarán son simples: "FlagBOuser" debe ser igual a 1, lo que significa que un usuario determinado que tenemos corresponde a un usuario en la tabla de la base de datos y "Level Organization" no es nulo, lo que significa que tenemos datos para mostrar .

En este punto del ejercicio, deberíamos poder restringir el contenido de los datos que se muestran en la WebI de acuerdo con un usuario determinado que quiera acceder a él.

Por último, pero no menos importante, también podemos controlar algunas celdas particulares, como la información de subtotales, creando una bandera que garantice que solo los empleados que tienen permiso puedan ver este contenido.

= If (Lower ([BOUser]) InList ("SilviaR"; "JoseY”); 1; 0)

 

Como hemos visto en este ejemplo, esta seguridad personalizada en WebI proporciona una alternativa a otros tipos de seguridad que podemos aplicar en nuestro sistema BO (como la seguridad de fila / nivel en Universe Designer). Podemos lograr una solución de seguridad de datos bastante agradable con simplicidad, efectividad y requisitos de mantenimiento reducidos.

Si tiene alguna pregunta, no dude en dejar un comentario a continuación.

EspañolEnglish