""

SAP HANA Cloud Series Parte 6: Cómo aplicar Analytics Privileges

Antes de comenzar, si es nuevo en esta serie, vale la pena regresar y revisar las entradas anteriores antes de continuar, ya que cada una se basa en la anterior. Para recapitular brevemente, la Parte 1 trata sobre la creación de un entorno de desarrollo, la Parte 2 cubre estructuras de tablas y filas, las Parte 3 y Parte 4 le muestran cómo crear escenarios federados y la Parte 5 analiza las calculation views. Una vez que haya revisado y seguido todos los pasos de la serie hasta el momento, estará listo para trabajar en este último artículo de la serie.

Estamos completando nuestra serie SAP HANA con una exploración de los Analytic privileges, que cubre la seguridad general y cómo aplicar prácticamente los Analytic privileges para restringir los datos que un usuario ve de los modelos creados en su espacio de trabajo.

1. Analytic Privileges 

Los Analytic privileges otorgan a diferentes usuarios acceso a diferentes porciones de datos en la misma vista, según su rol comercial. Dentro de la definición de un Analytic privilege, las condiciones que controlan qué datos ven los usuarios se definen mediante SQL.  

El primer paso es crear un nuevo Analytic privilege, para ello cree un nuevo artefacto de base de datos SAP HANA y seleccione ‘Analytic Privilege’ en la sección correspondiente.

When the object has been created, open it and add the model you want to apply. In our case, it will be the calculation view ‘CUSTOMER_YEARS’. Select the column ‘SOURCE’ as an attribute restriction and add the restriction under the Restriction Type column, as shown here:

A continuación, debemos asignar este tipo de seguridad a la vista de cálculo. Abra la vista y, en el nodo Semantics, vaya a ‘View Properties’ > ‘General’ y luego, en la sección ‘Apply Privileges’ seleccione ‘SQL Analytic Privileges’:

Una vez que esta implementación se haya completado correctamente, también podemos implementar el archivo de analytic privileges. Para probar si el procedimiento funciona correctamente, intente realizar una vista previa de datos en la parte superior de la calculation view. Si todo es correcto mostrará un error como el siguiente:

Para corregir este error, debemos asignar este privilegio analítico a un rol y eso a su vez nos permitirá asignarlo a un usuario. 

Para ello, cree un rol como artefacto de base de datos y copie la siguiente configuración. Tenga en cuenta que el archivo de roles tiene 2 definiciones, una como ‘Object Privilege’ y otra como ‘Analytic Privileges’, asegúrese de declarar ambas en el mismo artefacto y luego impleméntelas, como se muestra aquí:

Ahora podemos asignar el rol a un usuario. Este usuario tendrá permiso para seleccionar en la calculation view y para ver cualquier dato etiquetado como ‘PREVIOUS’. Vaya al explorador de la base de datos y abra una nueva Consola SQL con el usuario administrador. En este ejemplo, el usuario es DBADMIN y se definió durante la creación del proyecto.

Las líneas a continuación crean un usuario y lo asignan al rol:

CREATE USER U_PREVIOUS PASSWORD “<password>” NO FORCE_FIRST_PASSWORD_CHANGE SET USERGROUP DEFAULT; 

GRANT HANACLOUD_HDI_DB_1."R_PREVIOUS" TO U_PREVIOUS; 

Conectémonos con el nuevo usuario y ejecutemos una selección en la vista de cálculo:

CONNECT U_PREVIOUS PASSWORD "<password>" SELECT * FROM "HANACLOUD_HDI_DB_1"."CUSTOMER_YEARS"

Tenga en cuenta que, aunque también hay datos de 2022 en el conjunto de datos, la salida solo muestra los datos históricos. Esto nos demuestra que la configuración de seguridad que implementamos funciona como se esperaba. Siguiendo los pasos explicados en esta sección, ahora puede crear y configurar la seguridad para restringir los datos que pueden ver los usuarios individuales.

2. Aplicar privilegios al usuario de la aplicación 

Entonces, en este punto, hemos visto cómo permitir que los usuarios accedan a algunas partes de los datos. Ahora exploraremos cómo otorgar a los usuarios de la aplicación acceso a todos los datos, usando un mecanismo ligeramente diferente. 

Para hacer esto, cree un nuevo analytic privilege como se describe anteriormente, agregue la vista de cálculo que desea proteger y no agregue ninguna restricción (si no hay restricciones, puede ver todos los datos disponibles). 

Asignar esto a un usuario técnico requiere un mecanismo especial. Cree una nueva carpeta en ‘src’ llamada ‘defaults’ y cree un nuevo rol llamado development_debug_role’. Ábralo y defina como ‘Analytic Privileges’ el analytic privilege que acabamos de crear y, finalmente, constrúyalo, como se muestra aquí.

Tenga en cuenta que no hay ‘Object Privileges’ ya que el usuario de la aplicación ya tiene privilegios de selección en el contenedor de forma predeterminada.

El último paso necesario es ajustar el archivo ‘package.json’ haciendo el siguiente cambio en la línea 7 y desplegando todo el proyecto:

Simplemente puede copiar toda la sección de código en su archivo package.json. Sin embargo, la forma más segura es ajustar el archivo como se indicó en los pasos anteriores. En caso de que copiar toda la sección del código no funcione para usted, es posible que deba ajustar "^4.*" y cambiarlo a "^3.*" para que el archivo funcione.

NB: Recuerde que la carpeta “default” y el rol dentro de “development_debug_role” deben crearse con el mismo nombre y usarse exactamente como en esta guía para que funcionen. 

En este punto, puede realizar una vista previa de datos de la vista de cálculo desde el espacio de trabajo y podrá recuperar todos los datos que contiene: 

El último paso es ajustar la vista para crear entradas de caché antes de que se apliquen los privilegios analíticos. Para esto, abra de nuevo el nodo de semántica de la calculation view, vaya a ‘View Properties’ > ‘Advanced’ > ‘Add Execution Hints’ y seleccione ‘Cache data in static cache before applying analytic privileges’, como se muestra aquí:

Con este último paso nos hemos asegurado de que se sigue manteniendo la caché, y por tanto también hemos mantenido el rendimiento del modelo mientras se aplica la seguridad.

3. Conclusiones 

En resumen, en el artículo de hoy hemos explicado cómo aplicar la configuración de seguridad necesaria según el usuario que acceda al modelo, desde un usuario normal hasta un usuario de la aplicación. Y hemos logrado todos estos pasos sin afectar negativamente el rendimiento del modelo. Entonces, si ha seguido la guía hasta este punto, ahora debería poder configurar la seguridad de cualquier modelo en cualquier situación. 

Y si ha seguido la serie hasta ahora, debería poder administrar un proyecto de extremo a extremo, desde la creación del entorno hasta la revisión de seguridad y rendimiento. Esperamos que haya encontrado útil nuestra serie SAP HANA. Si necesita regresar y revisar uno de los artículos anteriores de la serie, encontrará algunos enlaces útiles a continuación. Y mientras tanto, no se olvide de estar atento a nuestro blog para obtener más noticias y orientación útiles.


EspañolEnglish