SAP DWC viene con controles de acceso a datos (DAC) integrados. Se utilizan para hacer cumplir una seguridad de nivel de fila y están totalmente integrados en SAP DWC. Un ejemplo de integración es que una ejecución de persistencia de vista es compatible con DAC y garantiza que el filtrado funcione correctamente en el resultado persistente.
SAP HANA también admite de forma nativa la seguridad a nivel de fila al ofrecer privilegios analíticos. En comparación con SAP DWC, ofrecen un conjunto diferente de capacidades. Dependiendo de su escenario, puede tener un interés específico en usar algunas de estas capacidades o reutilizar las definiciones de privilegios analíticos que ha creado anteriormente.
Esta publicación de blog esboza una configuración que le permite usar la seguridad nativa de nivel de fila de SAP HANA en el contexto de SAP DWC. Tenga en cuenta que estas definiciones no aparecen en SAP DWC y, por lo tanto, no están integradas en el concepto de autorización estándar.
Como punto de partida, asumimos la siguiente configuración en SAP DWC: un espacio contiene los datos y los expone a través del uso compartido en un segundo espacio para consumo externo.
Con los nombres de vista que usaremos a través de la publicación del blog, se lee así:
Tenemos un espacio llamado Consumo con una vista que expone datos para informes, por ejemplo, SAP SAC y tenemos un espacio separado Entrante alojar los datos en sí. Compartir espacio cruzado permite que ver_CONSUMO el acceso a ver datos.
Sin ninguna seguridad a nivel de fila, los filtros de la solicitud de datos se propagan directamente a través de la vista de consumo a la vista de datos. La dirección de las flechas sigue la dirección de la solicitud.
Lo que necesitamos es una forma de fusionar los filtros de la solicitud de SAC Story con los filtros, reflejando las autorizaciones del usuario actual de la aplicación. La siguiente imagen ilustra este objetivo: los filtros SAC y el filtro de autorización se fusionan en un nuevo filtro efectivo. Este filtro combinado se envía a la vista de datos. Como resultado, el usuario ve solo la parte de los datos que se ajusta a ambas definiciones de filtro.
Tenga en cuenta que la fusión con el filtro de autorización debe realizarse cerca o incluso mejor directamente en el nivel de la vista de consumo, y no muy por debajo en la capa de datos. Esto evita la acumulación de definiciones de autorización y, además, permite que todas las vistas por debajo del consumo se beneficien del conjunto completo de filtros.
Nota: Utilicé el término «Filtro de historia». Esto debería hacer referencia al conjunto efectivo de filtros que se encuentran en las solicitudes de datos a SAP DWC. A veces, los filtros definidos en la interfaz de usuario de SAP SAC no se incluyen en las solicitudes a SAP DWC.
La solución descrita en la publicación del blog utiliza los privilegios analíticos de HANA para realizar la combinación. Ampliamos nuestra configuración de muestra con una vista de HANA (incluidos los privilegios analíticos) y redirigimos las solicitudes para pasar a través de esta nueva entidad.
Cómo crear una vista de HANA con privilegios analíticos
Crear un usuario SQL abierto en el Entrante space crea un nuevo esquema en HANA con el nombre, por ejemplo, Entrante#Filtro. Dentro de este nuevo esquema, el usuario de SQL tiene permisos suficientes para crear una vista, y aquí está el truco principal, ¡con privilegios analíticos!
Puede pensar que esta vista de HANA consta de dos partes:
La imagen ilustra el nuevo flujo de solicitud: La vista de consumo solicita los datos de la vista Ver_DATA_AP (con privilegios analíticos). Después de la fusión de filtros, la solicitud se reenvía a la vista Ver datos (sin privilegios analíticos).
Después de entender el concepto general, podemos comenzar con la implementación real. Como es de esperar, hay varios pequeños detalles que tenemos que considerar. Si se siente perdido en los detalles, vuelva a la descripción general, vuelva al camino correcto y luego continúe con el paso a paso.
Comenzamos creando todas las entidades relevantes sin los privilegios analíticos. Después de probar el flujo de datos y la configuración, habilitamos los privilegios analíticos.
La muestra utilizará los siguientes datos de la empresa que puede descargar aquí:
https://github.com/SAP-samples/data-warehouse-cloud-content/blob/main/Sample_Bikes_Sales_content/CSV/Products.csv
Configuración del espacio
Ver con datos de prueba
Nota: La vista con los datos de prueba no se comparte con el espacio de consumo. No queremos exponer datos desprotegidos.
Para cada espacio, SAP DWC crea un conjunto de usuarios de HANA. Cada uno de estos usuarios se utiliza para tareas específicas. Como ejemplo, todas las solicitudes a través de la interfaz Ina/MDS (por ejemplo, SAP SAC) se ejecutan con un usuario siguiendo la convención de nomenclatura
Como nos gusta permitir el acceso desde el Entrante espacio a nuestra nueva vista de HANA, debemos otorgar derechos a los usuarios de HANA creados por SAP DWC. Esto es similar al concepto de espacio compartido cruzado de SAP DWC. Preparemos el paso de otorgamiento identificándolos.
Otorgaremos derechos a los usuarios para la vista previa de datos en ENTRANTE y CONSUMO y para el acceso del INA en el CONSUMO espacio. Esto es suficiente para propósitos de informes.
Obtener lista de usuarios
Ejecute la siguiente instrucción:
select * from sys.users where
usergroup_name="DWC_SPACE_USERS"
and user_name like 'CONSUMPTION#INA%' ;
Mantenga esta ventana abierta o anote los usuarios de la lista.
Esta sección trata sobre la creación de la vista de HANA y la concesión de derechos de ejecución para el ENTRANTE usuarios
Crear vista
Ejecute la siguiente instrucción
create or replace view View_DATA_AP
as select * from "INBOUND"."View_DATA";
with STRUCTURED PRIVILEGE CHECK;
Esto crea la vista con privilegios analíticos.
Nota: Si recibe un mensaje de error sobre privilegios insuficientes, se ha perdido la opción de exposición para consumo en ver datos.
Crear proveedor de condiciones
El proveedor de condiciones es un procedimiento sql que devuelve el filtro de autorización. Para nuestro ensayo inicial, devolveremos un filtro ficticio que permite todo. Para una validación de prueba del filtro y la fusión, cambie el valor devuelto de ‘1=1’ a ‘”PRODUCTID”=”BX-1011” ‘.
Más adelante, en la parte 2 de este blog, se volverá a implementar para devolver el filtro de autorización para un usuario de aplicación determinado.
CREATE or replace procedure APP_USER_DEPENDENT_FILTER_VIEW_HANA (OUT OUT_FILTER VARCHAR(5000))
LANGUAGE SQLSCRIPT SQL SECURITY DEFINER READS SQL DATA AS
BEGIN
-- Dummy filter to return all data
OUT_FILTER = '1=1';
-- Static test filter for a single product
-- OUT_FILTER = ' "PRODUCTID"=''BX-1011'' ';
END;
Crear privilegio analítico
Cree un privilegio estructurado que vincule el proveedor de condiciones y la vista de HANA que acabamos de crear.
create structured privilege View_HANA_Analytical_Priv
for select
on View_DATA_AP
CONDITION PROVIDER APP_USER_DEPENDENT_FILTER_VIEW_HANA;
Asignar privilegio analítico al usuario
Asigne este privilegio a los usuarios de HANA relevantes. Aquí nos restringimos a los de vista previa de datos en ambos espacios e ina/MDS en el espacio de consumo.
El usuario requerido para la vista previa de datos tiene el mismo nombre que el espacio.
GRANT STRUCTURED PRIVILEGE View_HANA_Analytical_Priv TO INBOUND;
GRANT STRUCTURED PRIVILEGE View_HANA_Analytical_Priv TO CONSUMPTION;
El usuario requerido para el acceso a Ina/MDS (por ejemplo, Modelo Analítico o SAC Stories) se ha derivado en los pasos anteriores:
GRANT STRUCTURED PRIVILEGE View_HANA_Analytical_Priv TO CONSUMPTION#INA<uid>
Ahora necesitamos importar la definición de nuestra vista HANA en el ENTRANTE espacio. como el Importar => Mesas remotas en el explorador del repositorio no expone esquemas SQL como fuente, usamos el siguiente enfoque:
Vista de importación
Compartir mesa
El siguiente paso es compartir la mesa (aunque en realidad es una vista) con el espacio de consumo.
Crear una vista Ver_CONSUMO basado en la tabla compartida Ver_DATA_AP. Esta vista expone datos filtrados por los privilegios analíticos que definimos en el procedimiento del proveedor de condiciones.
Hagamos algunas pruebas para validar nuestra configuración. Si esto funciona como se esperaba, comience con la segunda parte de esta publicación de blog. Describe una implementación de muestra para Autorizaciones.
Acceso SQL
Acceso Ina/MDS
Hay dos formas de crear solicitudes de datos para la interfaz Ina/MDS.
Elija uno de ellos y verifique si ve los mismos datos de prueba que a través del acceso SQL. Si esto falla y SQL funciona como se esperaba, es probable que la concesión de privilegios para el usuario de Ina/MDS en el consumo de espacio fuera incorrecta.
Nota: La instrucción sql CALL SYS.GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS (‘
Filtrar y fusionar
Ajuste la definición de filtro devuelta por la función del proveedor de condiciones. En lugar de ‘1=1’, cámbielo para que devuelva ‘”PRODUCTID”=”BX-1011” ‘. Como resultado, debería ver un conjunto de datos restringido. Esto prueba que la combinación de filtros funciona como se esperaba.
Felicitaciones, ahora tenemos la configuración completa para usar los privilegios analíticos de HANA. El siguiente paso es una implementación más sofisticada que se puede utilizar para proyectos reales. La parte 2 de este blog cubrirá esto.
Quizás se pregunte qué más se podría hacer con una vista de HANA como parte de las definiciones de vista en SAP DWC. Aquí me gustaría recomendar los siguientes blogs. Se ocupan de las características de HANA de enmascaramiento de datos y anonimización de datos.
Enmascaramiento de datos: un paseo por el parque con SAP Data Warehouse Cloud
Acceso a datos compatible: un requisito clave de autoservicio en 2020
Me encantaría escuchar sus pensamientos, ideas y comentarios en esta publicación de blog. ¡Házmelo saber en los comentarios!
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073