Roles

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

Los roles de los modelos tabulares definen permisos de miembro para un modelo. Los miembros del rol pueden realizar en el modelo las acciones definidas por el permiso de rol. Los roles que se han definido con permisos de lectura también pueden proporcionar seguridad adicional en el nivel de fila mediante filtros de fila.

Para Azure Analysis Services y conjuntos de datos de Power BI, los usuarios deben estar en el identificador de Microsoft Entra y los nombres de usuario y grupos especificados deben ser por dirección de correo electrónico de la organización o UPN. Para SQL Server Analysis Services, los roles contienen miembros de usuario por nombre de usuario de Windows o por grupo de Windows y permisos (lectura, proceso, administrador). Para Azure Analysis Services y los modelos semánticos de Power BI, los usuarios deben estar en Azure Active Directory y los nombres de usuario y grupos especificados deben ser por dirección de correo electrónico de la organización o UPN. Para SQL Server Analysis Services, los roles contienen miembros de usuario por nombre de usuario de Windows o por grupo de Windows y permisos (lectura, proceso, administrador).

Importante

Al usar Visual Studio para crear roles y agregar usuarios de la organización a un proyecto de modelo tabular que se implementará en Azure Analysis Services o Power BI, use el área de trabajo integrada.

Importante

Para que los usuarios se conecten a un modelo implementado mediante una aplicación cliente de informes, debe crear al menos un rol con al menos permiso de lectura para el que esos usuarios sean miembros.

La información de este artículo está pensada para los autores de modelos tabulares que definen roles mediante el cuadro de diálogo Administrador de roles en SSDT. Los roles definidos durante la creación del modelo se aplican a la base de datos del área de trabajo del modelo. Una vez implementada una base de datos modelo, los administradores de bases de datos de modelos pueden administrar (agregar, editar, eliminar) miembros de rol mediante SSMS.

Descripción de los roles

Los roles se usan en Analysis Services para administrar el acceso a los datos del modelo. Hay dos tipos de roles:

  • El rol de servidor, un rol fijo que proporciona acceso de administrador a una instancia de servidor de Analysis Services. Los roles de servidor no se aplican a Power BI. En su lugar, Power BI usa roles de área de trabajo.

  • Los roles de base de datos, que son roles definidos por los autores del modelo para controlar el acceso de los usuarios que no son administradores a una base de datos de modelo y a los datos.

Los roles definidos para un modelo tabular son roles de base de datos. Es decir, los roles contienen miembros que constan de usuarios o grupos que tienen permisos específicos que definen la acción que pueden realizar esos miembros en la base de datos modelo. Se crea un rol como un objeto independiente en la base de datos y solo se aplica a la base de datos en la que se crea ese rol. Los usuarios y grupos se incluyen en el rol del autor del modelo, que de forma predeterminada tiene permisos de administrador en el servidor de bases de datos del área de trabajo; para un modelo implementado, por un administrador.

Los roles de los modelos tabulares se pueden definir aún más con filtros de fila, también conocidos como seguridad de nivel de fila. Los filtros de fila usan expresiones DAX para definir las filas de una tabla, así como las filas relacionadas en las distintas direcciones, que los usuarios pueden consultar. Los filtros de fila que usen expresiones de DAX solo se pueden definir para los permisos de lectura y de lectura y procesamiento. En Power BI, los roles de modelo se definen en Power BI Desktop y solo se aplican a la seguridad de nivel de fila. Para más información, consulte Filtros de fila más adelante en este artículo.

De forma predeterminada, al crear un nuevo proyecto de modelo tabular, el proyecto no tiene ningún rol. Los roles se pueden definir mediante el cuadro de diálogo Administrador de roles en SSDT. Si los roles se definen durante la creación del modelo, se aplican a la base de datos del área de trabajo del modelo. Cuando se implementa el modelo, se aplican los mismos roles al modelo implementado. Una vez implementado un modelo, los miembros del rol de servidor ([Administrador de Analysis Services) y los administradores de bases de datos pueden administrar los roles asociados con el modelo y los miembros asociados a cada rol mediante SSMS.

Permisos

Los permisos de rol descritos en esta sección solo se aplican a Azure Analysis Services y SQL Server Analysis Services. En Power BI, los permisos se definen para el modelo semántico. Para más información, consulte Administración del acceso al modelo semántico.

Cada rol tiene un único permiso de base de datos definido (excepto en el caso del permiso de lectura y procesamiento combinado). De forma predeterminada, los roles tienen el permiso Ninguno. Es decir, una vez que se agreguen los miembros al rol con el permiso Ninguno, estos no podrán modificar la base de datos, ejecutar una operación de proceso, consultar los datos ni ver la base de datos a menos que se conceda un permiso diferente.

Un grupo o usuario puede ser miembro de cualquier número de roles, cada rol con un permiso diferente. Cuando un usuario es miembro de varios roles, los permisos definidos para cada uno de ellos son acumulativos. Por ejemplo, si un usuario es miembro de un rol que tiene el permiso de lectura y de otro que tiene el permiso Ninguno, dicho usuario tendrá permisos de lectura.

Cada rol puede tener uno de los permisos siguientes definidos:

Permisos Descripción Filtros de fila mediante DAX
None Los miembros no pueden realizar ninguna modificación en el esquema de la base de datos modelo y no pueden consultar los datos. No se pueden aplicar filtros de fila. No hay datos visibles para los usuarios de este rol
Leer Los miembros pueden consultar los datos (según los filtros de fila) pero no pueden ver la base de datos modelo en SSMS, no pueden realizar cambios en el esquema de la base de datos modelo y el usuario no puede procesar el modelo. Se pueden aplicar filtros de fila. Solamente están visibles para los usuarios los datos especificados en la fórmula DAX del filtro de fila.
Leer y actualizar Los miembros pueden consultar los datos (según los filtros de fila) y ejecutar operaciones de proceso mediante la ejecución de un script o un paquete que contenga un comando de proceso, pero no pueden realizar ningún cambio en la base de datos. No se puede ver la base de datos del modelo en SSMS. Se pueden aplicar filtros de fila. Solo se pueden consultar los datos especificados en la fórmula DAX del filtro de filas.
Proceso Los miembros pueden ejecutar operaciones de proceso mediante la ejecución de un script o un paquete que contenga un comando de proceso. No se puede modificar el esquema de la base de datos de modelo. No se pueden consultar los datos. No se puede consultar la base de datos modelo en SSMS. No se pueden aplicar filtros de fila. No se pueden consultar datos en este rol
Administrador Los miembros pueden realizar modificaciones en el esquema del modelo y pueden consultar todos los datos en el diseñador de modelos, el cliente de informes y SSMS. No se pueden aplicar filtros de fila. Todos los datos se pueden consultar datos en este rol.

Nota:

Los miembros con permisos de lectura y lectura y proceso pueden consultar datos basados en filtros de fila, pero no pueden ver la base de datos modelo en SSMS. Los miembros no pueden realizar cambios en el esquema de base de datos del modelo y no pueden procesar el modelo. Sin embargo, en SQL Server Analysis Services 2019 y versiones anteriores, los miembros pueden usar DMV para determinar las definiciones de medida. SQL Server Analysis Services 2022 y versiones posteriores bloquean el acceso a las DMV para mejorar la seguridad.

Filtros de fila

Los filtros de fila, conocidos normalmente como seguridad de nivel de fila en Power BI, definen qué filas de una tabla pueden consultar los miembros de un rol determinado. Los filtros de fila están definidos para cada tabla en un modelo mediante fórmulas DAX.

Los filtros de fila solo se pueden definir para los roles con permisos de lectura y lectura y proceso. De forma predeterminada, si no se define un filtro de fila para una tabla determinada, los miembros de un rol que tenga permisos de lectura o de lectura y procesamiento pueden consultar todas las filas de la tabla, a menos que se aplique un filtro cruzado de otra tabla.

Una vez definido un filtro de fila para una tabla determinada, una fórmula DAX, que debe devolver un valor TRUE/FALSE, será la que defina las filas que pueden ser consultadas por los miembros de ese rol en especial. Las filas no incluidas en la fórmula DAX no podrán ser consultadas. Por ejemplo, para los miembros del rol Sales, la tabla Customers con la siguiente expresión de filtros de fila, =Customers [Country] = "USA", los miembros del rol Sales, solo podrán ver a los clientes de Estados Unidos.

Los filtros de fila se aplican a las filas especificadas y también a las filas relacionadas. Si una tabla tiene varias relaciones, los filtros aplican seguridad a la relación que esté activa. Los filtros de fila se intersecarán con otros filtros de fila definidos para las tablas relacionadas, por ejemplo:

Tabla Expresión DAX
Region =Region[Country]="USA"
ProductCategory =ProductCategory[Name]="Bicycles"
Transacciones =Transactions[Year]=2020

El efecto neto de estos permisos en la tabla Transacciones es que los miembros podrán consultar filas de datos donde el cliente se encuentra en Estados Unidos, y la categoría de producto es bicicletas y el año es 2020. Los usuarios no podrán consultar ninguna transacción fuera de EE. UU., ni las transacciones que no sean bicicletas, ni las transacciones que no estén en 2020 a menos que sean miembros de otro rol que conceda estos permisos.

Puede usar el filtro, =FALSE() , para denegar el acceso a todas las filas de una tabla completa.

Para más información sobre los roles de modelo en Power BI, consulte Seguridad de nivel de fila en Power BI.

Seguridad dinámica

La seguridad dinámica proporciona una manera de definir la seguridad de nivel de fila en función del nombre de usuario del usuario que ha iniciado sesión actualmente o de la propiedad CustomData devuelta desde un cadena de conexión. Para implementar seguridad dinámica, debe incluir en el modelo una tabla con los valores de inicio de sesión (nombre de usuario de Windows) para los usuarios, así como un campo que se pueda utilizar para definir un permiso específico; por ejemplo, una tabla de los dimEmployees con un Id. de acceso (dominio \ nombredeusuario) junto con un valor de departamento para cada empleado.

Para implementar seguridad dinámica, puede utilizar las siguientes funciones como parte de una fórmula DAX para devolver el nombre del usuario que ha iniciado sesión actualmente, o la propiedad CustomData en una cadena de conexión:

Función Descripción
Función USERNAME (DAX) Devuelve el dominio\nombredeusuario del usuario que ha iniciado sesión actualmente.
Función CUSTOMDATA (DAX) Devuelve la propiedad CustomData en una cadena de conexión.

Puede utilizar la función LOOKUPVALUE para devolver valores para una columna en la que el nombre de usuario de Windows sea el mismo que el nombre de usuario devuelto por la función USERNAME o una cadena devuelta por la función CustomData. Las consultas se pueden restringir a los casos en que los valores devueltos por LOOKUPVALUE coincidan con los valores en la misma tabla o en una tabla relacionada.

Por ejemplo, con esta fórmula:

='dimDepartment'[DepartmentId]=LOOKUPVALUE('dimEmployees'[DepartmentId], 'dimEmployees'[LoginId], USERNAME(), 'dimEmployees'[LoginId], 'dimDepartment'[DepartmentId])

La función LOOKUPVALUE devuelve valores para la columna dimEmployees[DepartmentId] donde dimEmployees[LoginId] es el mismo que el LoginID del usuario que ha iniciado sesión actualmente, devuelto por USERNAME y los valores de dimEmployees[DepartmentId] son los mismos que los valores de dimDepartment[DepartmentId]. Los valores de DepartmentId devueltos por LOOKUPVALUE se usan para limitar las filas consultadas en la tabla de dimDepartment, y cualquier tabla relacionada por DepartmentId. Solo se devolverán las filas donde DepartmentId esté también en los valores de DepartmentId devueltos por la función LOOKUPVALUE.

dimEmployees

Apellidos Nombre LoginId DepartmentName DepartmentId
Brown Kevin Adventure-works\kevin0 Marketing 7
Bradley David Adventure-works\david0 Marketing 7
Dobney JoLynn Adventure-works\JoLynn0 Producción 4
Baretto DeMattos Paula Adventure-works\Paula0 Human Resources 2

dimDepartment

DepartmentId DepartmentName
1 Corporativos
2 Executive General and Administration
3 Gestión del inventario
4 Fabricación
5 Control de calidad
6 Research and Development
7 Ventas y marketing

Probar roles

Al crear un proyecto de modelo en Visual Studio, puede usar la característica Analizar en Excel para probar la eficacia de los roles que ha definido. En el menú Modelo del diseñador de modelos, al hacer clic en Analizar en Excel, y antes de que se inicie Excel, aparecerá el cuadro de diálogo Elegir credenciales y perspectivas . En este cuadro de diálogo, puede especificar el nombre de usuario actual, otro nombre de usuario, un rol y una perspectiva que usará para conectar con el modelo del área de trabajo como un origen de datos. Para obtener más información, consulte Analizar en Excel.

Roles de scripting

Los roles de los modelos implementados y los modelos semánticos se pueden crear mediante scripts mediante el lenguaje de scripting de modelos tabulares (TMSL) para crear o modificar el objeto Roles. Los scripts de TMSL se pueden ejecutar en SSMS o con el cmdlet Invoke-ASCmd de PowerShell.

Consulte también

Crear y administrar roles
Perspectivas
Analizar en Excel
Función USERNAME (DAX)
LOOKUPVALUE, función (DAX)
Función CUSTOMDATA (DAX)