Conceder acceso personalizado a datos de dimensión (Analysis Services)

Se aplica a: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Después de permitir el acceso de lectura a un cubo, puede establecer permisos adicionales que permitan o denieguen explícitamente el acceso a miembros de la dimensión (incluidas las medidas que contiene la Dimensión de Medidas que contengan todas las medidas utilizadas en un cubo). Por ejemplo, si hay varias categorías de distribuidores, conviene establecer permisos para excluir datos de un tipo de negocio específico. La ilustración siguiente representa el antes y el después a la denegación de acceso al tipo de negocio Warehouse en la dimensión Reseller.

Tablas dinámicas con y sin tablas dinámicas de miembro de

De forma predeterminada, si puede leer datos de un cubo de SQL Server Analysis Services, automáticamente tiene permisos de lectura en todas las medidas y miembros de dimensión asociados a ese cubo. Mientras que es posible que este comportamiento sea suficiente para múltiples escenarios, en ocasiones los requisitos de seguridad requieren una estrategia de autorización más segmentada, con diferentes niveles de acceso para los distintos usuarios, en la misma dimensión.

Puede restringir el acceso si elige los miembros a los que permitir (AllowedSet) o denegar (DeniedSet) el acceso. Para ello, seleccione o anule la selección de los miembros de la dimensión que vaya a incluir o excluir del rol.

La seguridad básica de las dimensiones es más sencilla; basta con seleccionar los atributos de dimensión y las jerarquías de atributo que quiera incluir o excluir del rol. La seguridad avanzada resulta más compleja y requiere conocimientos expertos en la generación de scripts MDX. Ambos enfoques se describen a continuación.

Nota:

Las siguientes instrucciones presuponen que existe una conexión de cliente que emite consultas en MDX. Si el cliente usa DAX, como Power View en Power BI, la seguridad de dimensión no es evidente en los resultados de la consulta.

Requisitos previos

No todas las medidas o miembros de dimensión se pueden usar en escenarios de acceso personalizados. Si hay un rol que restringe el acceso a una medida o miembro predeterminado o a medidas que forman parte de expresiones de medida, se producirá un error en la conexión.

Busque obstrucciones en la seguridad de dimensiones: medidas predeterminadas, miembros predeterminados y medidas usadas en expresiones de medida

  1. En SQL Server Management Studio, haga clic con el botón derecho en un cubo y seleccione Script Cube as ALTER To New Editor de Power Query Window (Script Cube as | ALTER To | New Editor de Power Query Window).

  2. Busque DefaultMeasure. Debería encontrar una para el cubo y una para cada perspectiva. Al definir la seguridad de dimensiones, evite restringir el acceso a las medidas predeterminadas.

  3. A continuación, busque MeasureExpression. Una expresión de medida es una medida basada en un cálculo que suele incluir otras medidas. Compruebe que la medida que quiere restringir no se usa en una expresión. También puede seguir adelante y restringir el acceso, siempre que se asegure de excluir todas las referencias a esa medida en el cubo.

  4. Por último, busque DefaultMember. Tome nota de cualquier atributo que sirva como miembro predeterminado de un atributo. Evite colocar restricciones en esos atributos a la hora de configurar la seguridad de dimensiones.

Seguridad básica de dimensiones

  1. En SQL Server Management Studio, conéctese a la instancia de SQL Server Analysis Services, expanda Roles para la base de datos adecuada en Explorador de objetos y, a continuación, haga clic en un rol de base de datos (o cree un nuevo rol de base de datos).

    El rol ya debe disponer de acceso de lectura al cubo. Consulte Conceder permisos de cubo o modelo (Analysis Services) si necesita ayuda con este paso.

  2. En Dimension Data Basic(Datos de | dimensiónbásico), seleccione la dimensión para la que está estableciendo permisos.

  3. Elija la jerarquía de atributos. No estarán disponibles todos los atributos. Solamente los atributos con AttributeHierarchyEnabled aparecen en la lista Jerarquía de atributos .

  4. Elija los miembros a los que permitir o denegar el acceso. La opción predeterminada es permitir el acceso a través de Seleccionar todos los miembros . Se recomienda mantener esta opción predeterminada y posteriormente desactivar la selección de miembros individuales que no deben estar visibles en las cuentas de usuario y grupo de Windows en el panel Pertenencia a través de este rol. La ventaja es que los miembros nuevos que se agregan en operaciones de procesamiento posteriores estarán automáticamente disponibles para las personas que se conecten a este rol.

    También puede Anular la selección de todos los miembros para revocar el acceso global y, después, elegir los miembros a los que se permitirá el acceso. En futuras operaciones de procesamiento, los nuevos miembros no estarán visibles hasta que edite manualmente la seguridad de los datos de las dimensiones para permitir el acceso a los mismos.

  5. Opcionalmente, haga clic en Avanzadas con el fin de habilitar Totales visuales para esta jerarquía de atributos. Esta opción vuelve a calcular las agregaciones en función de los miembros disponibles en el rol.

    Nota:

    Cuando se aplican permisos que eliminan miembros de una dimensión, los totales agregados no se recalculan de forma automática. Imagine que el miembro Todos de una jerarquía de atributos arroja un recuento de 200 antes de aplicar los permisos. Después de aplicar los permisos que deniegan el acceso a algunos de los miembros, Todos sigue dando un resultado de 200, pese a que los valores de los miembros que pueden ver el usuario son muchos menos. Para evitar confundir a los consumidores del cubo, puede configurar el miembro Todos para que sea la suma de solamente los miembros que pertenecen al rol, en lugar de la suma de todos los miembros de la jerarquía de atributos. Para invocar este comportamiento, puede habilitar Visual Totals en la pestaña Avanzadas cuando configure la seguridad de las dimensiones. Una vez que lo haya habilitado, el agregado se calcula en tiempo de consulta en lugar de recuperarse a partir de agregados previamente calculados. Esto puede tener una repercusión apreciable en el rendimiento de la consulta, por tanto, úselo únicamente cuando sea necesario.

Ocultar medidas

En Conceder acceso personalizado a los datos de celda (Analysis Services), se explicó que ocultar completamente todos los aspectos visuales de una medida, y no solo sus datos de celda, requiere permisos en miembros de dimensión. En esta sección, se describe cómo denegar el acceso a los metadatos del objeto de una medida.

  1. En Dimension Data | Basic, desplácese hacia abajo en la lista Dimensión hasta llegar a las dimensiones del cubo y, a continuación, seleccione Dimensiones de medidas.

  2. En la lista de medidas, desactive la casilla para las medidas que no deben aparecer para los usuarios que se conecten a través de este rol.

Nota:

Consulte los requisitos previos para saber cómo identificar medidas que pueden romper la seguridad del rol.

Seguridad de dimensión avanzada

Si tiene conocimientos expertos de MDX, otro método consiste en escribir expresiones MDX que establezcan criterios según los cuales se permita o deniegue el acceso a los miembros. Haga clic en Creardatos | de dimensión de rol | avanzados para proporcionar el script.

Puede usar el Generador MDX para escribir instrucciones MDX. Consulte MDX Builder (Analysis Services - Datos multidimensionales) para obtener más información. La pestaña Avanzada presenta las siguientes opciones:

Atributo
Seleccione el atributo para el que desea administrar la seguridad de los miembros.

Conjunto de miembros permitido
El elemento AllowedSet puede dar como resultado ningún miembro (predeterminado), todos los miembros o algunos miembros. Si permite el acceso a un atributo y no define ningún miembro del conjunto permitido, se concede acceso a todos los miembros. Si permite acceso a un atributo y define un conjunto específico de miembros de atributos, solo estarán visibles los miembros permitidos explícitamente.

Si se crea un elemento AllowedSet, tendrá un efecto dominó cuando el atributo participe en una jerarquía de varios niveles. Por ejemplo, un caso en el que el rol permite el acceso al estado de Washington (una situación en la que el rol otorga permisos a la división comercial de Washington de una empresa). Para las personas que se conecten a través de este rol, las consultas que incluyan antecesores (Estados Unidos) o descendentes (Seattle y Redmond) solamente verán miembros en una cadena que incluye el estado de Washington. Dado que no se han permitido de forma explícita otros estados, el efecto será el mismo que si se hubieran denegado.

Nota:

Si define un conjunto vacío ({}) de miembros de atributo, ningún miembro del atributo será visible para el rol de base de datos. La ausencia de un conjunto permitido no se interpreta como un conjunto vacío.

Conjunto de miembros denegado
La propiedad DeniedSet puede dar como resultado ningún miembro, todos los miembros (predeterminado) o algunos miembros del atributo. Cuando el conjunto que se ha denegado contiene únicamente un conjunto específico de miembros de atributo, el rol de base datos deniega el acceso solo a los miembros específicos, así como a los descendentes si el atributo es una jerarquía de múltiples niveles. Sigamos con el ejemplo de la división comercial en el estado de Washington. Si Washington se coloca en DeniedSet, las personas que se conecten a través de este rol verán el resto de estados salvo Washington y sus atributos descendentes.

Recuerde que según se indicó en la sección anterior, el conjunto denegado es una colección de tamaño fijo. Si al procesarse más veces se incorporan miembros nuevos, también tendrán el acceso denegado; tendrá que editar este rol para agregar a esos miembros a la lista.

Miembro predeterminado
La propiedad DefaultMember establece el conjunto de datos que se devuelve a un cliente cuando un atributo no se incluye explícitamente en una consulta. Cuando el atributo no se incluye explícitamente, SQL Server Analysis Services usa uno de los siguientes miembros predeterminados para el atributo :

  • Si el rol de base de datos define un miembro predeterminado para el atributo, SQL Server Analysis Services usa este miembro predeterminado.

  • Si el rol de base de datos no define un miembro predeterminado para el atributo, SQL Server Analysis Services usa el miembro predeterminado definido para el propio atributo. El miembro predeterminado para un atributo, a menos que se especifique lo contrario, es el miembro All (excepto si el atributo se define como no agregable).

Por ejemplo, imagine que un rol de base de datos especifica Male como miembro predeterminado para el atributo Gender . A menos que una consulta incluya explícitamente el atributo Gender y especifique un miembro diferente para este atributo, SQL Server Analysis Services devolvería un conjunto de datos que solo incluía clientes masculinos. Para obtener más información sobre cómo establecer el miembro predeterminado, vea Definir un miembro predeterminado.

Habilitar total visual
La propiedad VisualTotals indica si los valores de celdas agregados que se muestran se calculan en función de todos los valores de celda o únicamente en función de los valores de celda que están visibles para el rol de base de datos.

De forma predeterminada, la propiedad VisualTotals está deshabilitada (establecida en False). Esta configuración predeterminada maximiza el rendimiento porque SQL Server Analysis Services puede calcular rápidamente el total de todos los valores de celda, en lugar de tener que dedicar tiempo a seleccionar los valores de celda que se van a calcular.

Pero si la propiedad VisualTotals está deshabilitada, se podría producir un problema de seguridad si un usuario puede usar los valores de celdas agregados para deducir los valores para miembros de atributos a los que el rol de base de datos del usuario no tiene acceso. Por ejemplo, SQL Server Analysis Services usa los valores de tres miembros de atributo para calcular un valor de celda agregado. El rol de base de datos puede ver dos de estos tres miembros de atributo. Usando el valor de celdas agregado, un miembro de este rol de base de datos podría deducir el valor para el tercer miembro del atributo.

Si se establece la propiedad VisualTotals en True , se puede eliminar este riesgo. Si habilita la propiedad VisualTotals, un rol de base de datos solamente puede ver totales agregados para los miembros de dimensión para los que tiene permiso el rol.

Comprobación
Haga clic en esta opción para probar la sintaxis MDX que se define en esta página.

Consulte también

Otorgar permisos para cubos o modelos (Analysis Services)
Otorgar acceso personalizado a los datos de las celdas (Analysis Services)
Otorgar permisos para estructuras y modelos de minería de datos (Analysis Services)
Otorgar permisos para un objeto de origen de datos (Analysis Services)