sql-server sql-server-2005 reporting-services ssas reportingservices-2005

sql server - Dimensión de seguridad en SSAS y SSRS



sql-server sql-server-2005 (3)

Creo que necesita ver su fuente de datos en SSRS en el servidor de informes, y asegurarse de que esté configurado para usar las ventanas de los usuarios registrados que una vez autenticada, podría ser lo que está buscando.

Estoy atascado con un problema de implementación de seguridad en el nivel de dimensión en SSAS. Esto es lo que hice: 1. Definí un rol en SSAS y la seguridad aplicada a nivel de dimensión (desmarcar dimensiones de cubo a las que no quiero que acceda esta función y establecer Conjuntos Permitidos y Denegados). 2. Probado usando Cube Browser, funcionó bien. 3. Probado usando SSRS, sin cambios, aún pude consultar las dimensiones y obtener resultados que no quiero.

Pregunta: ¿Es posible propagar la seguridad que defino en el nivel de Cubo a SSRS? Me gustaría creer que sí lo es.

Si es así, aquí está lo que necesito:

  1. Los usuarios iniciarán sesión en el Administrador de informes utilizando la identidad de Windows (Autenticación integrada en IIS encendido -done)
  2. Capture esta identidad para descubrir el rol de SSAS al que pertenecen - Supongo que esto sería a través de una consulta, no parece funcionar automáticamente (¿Cómo hacer esto?)
  3. El usuario trabaja dentro de las restricciones de este rol en SSRS (seguridad basada en roles aplicada a nivel SSAS), es decir, si la dimensión X no está disponible para el usuario, no debería poder consultarla. (¿Como hacer esto?)

He referido bastantes blogs sobre esto e incluso encontré uno - http://www.sqlmag.com/Article/ArticleID/96763/sql_server_96763.html

pero este parece tener más información sobre cómo configurarlo dentro de SSAS, en lugar de cómo usar esto en SSRS.

Cualquiera que haya trabajado en este enfoque O entienda esto, hágamelo saber.


No he hecho esto en SSAS, pero lo he hecho en el motor. Jeremiah Peschka tiene un blog sobre la configuración de seguridad basada en filas , y si vas a hacer esto con la seguridad integrada de Windows, entonces puedes usar la función user_name () para obtener el nombre del inicio de sesión actual. Utilizará una tabla de búsqueda para cada dimensión, con una fila para cada fila de dimensión más el nombre del usuario. Al realizar consultas, únase a la tabla de seguridad de dimensión de esta manera:

FROM dbo.Customers cs INNER JOIN dbo.CustomersSecurity css ON cs.CustomerId = css.CustomerId AND css.UserName = User_Name()

De esta forma, su unión solo devolverá los registros de los clientes que el usuario puede ver.

El inconveniente es que si usa particiones, el motor no construirá un buen plan de ejecución para arrancar únicamente los registros correctos de las particiones adecuadas en función de lo que su usuario pueda ver. Por ejemplo, si inicia sesión como usuario que solo puede ver registros en Florida, y sus datos están divididos por estado, no importará: el motor seguirá escaneando todas las particiones, ya que no podrá predecir el información del usuario cuando se construye el plan.


Todo lo que necesitas hacer es:

En el origen de datos en el informe de SSRS, especifique el Nombre de rol creado en la base de datos SSAS de la siguiente manera:

Origen de datos = LOCALHOST; Catálogo inicial = XXXXX; Roles = RoleName

Gracias Sameer