Automatización de tareas de modelos semánticos y áreas de trabajo de Premium con entidades de servicio

Las entidades de servicio son un registro de aplicación de Microsoft Entra ID que crea en el inquilino para realizar operaciones de nivel de servicio y recursos desatendidos. Se trata de un tipo único de identidad de usuario con el nombre de la aplicación, el identificador de la aplicación, el identificador del inquilino y el secreto de cliente o el certificado como contraseña.

Power BI Premium usa la misma funcionalidad de entidad de servicio que Power BI Embedded. Para más información, consulte Inserción de contenido de Power BI con entidad de servicio y secreto de aplicación.

En Power BI Premium, las entidades de servicio también se pueden usar con el punto de conexión XMLA (análisis XML) para automatizar tareas de administración de modelos semánticos tales como aprovisionamiento de áreas de trabajo, implementación de modelos y actualización de modelos semánticos mediante:

  • PowerShell.
  • Mediante Azure Automation.
  • Azure Logic Apps.
  • Aplicaciones cliente personalizadas

Solo las nuevas áreas de trabajo admiten conexiones de punto de conexión XMLA mediante entidades de servicio. No se admiten las áreas de trabajo clásicas. Una entidad de servicio tiene los permisos necesarios para realizar tareas en las áreas de trabajo a las que se asignan. Los permisos se asignan mediante el acceso al área de trabajo, de forma muy similar a las cuentas UPN (nombre principal de usuario) normales.

Para realizar operaciones de escritura, la carga de trabajo de los modelos semánticos de la capacidad debe tener el punto de conexión XMLA habilitado para operaciones de lectura y escritura. Los modelos semánticos publicados desde Power BI Desktop deben tener habilitada la característica formato de metadatos mejorado.

Creación de una entidad de servicio

Las entidades de servicio se crean como registro de aplicación en Azure Portal o mediante PowerShell. Al crear la entidad de servicio, asegúrese de copiar y guardar por separado el nombre de la aplicación, el identificador de la aplicación (cliente), el identificador de directorio (inquilino) y el secreto de cliente. Para conocer los pasos para crear una entidad de servicio, consulte:

Creación de un grupo de seguridad de Microsoft Entra

De forma predeterminada, las entidades de servicio tienen acceso a cualquier configuración de inquilino para la que estén habilitadas. En función de la configuración de administración, el acceso puede incluir grupos de seguridad específicos o toda la organización.

Para restringir el acceso de la entidad de servicio a una configuración de inquilino específica, puede permitir acceso a grupos de seguridad específicos. También puede crear un grupo de seguridad dedicado para entidades de servicio y excluirlo de la configuración de inquilino que desee. Para crear grupos de seguridad y agregar entidades de servicio, consulte Creación de un grupo básico e incorporación de miembros mediante Microsoft Entra ID.

Habilitación de entidades de servicio

Antes de poder empezar a usar entidades de servicio en Power BI, el administrador debe habilitar primero el acceso a la entidad de servicio en el portal de administración de Power BI.

  1. Vaya al portal de administración de Power BI y seleccione Configuración de inquilinos.
  2. Desplácese hasta Configuración del desarrollador y, a continuación, expanda Permitir que las entidades de servicio usen las API de Power BI.
  3. Seleccione Habilitado.
  4. Para aplicar permisos a un grupo de seguridad, seleccione Grupos de seguridad específicos (recomendado).
  5. Escriba el nombre del grupo.
  6. Seleccione Aplicar.

Captura de pantalla en la que se muestra el portal de administración con la configuración de inquilinos seleccionada. Permitir que las entidades de servicio usen API de Power BI está expandido con resaltado habilitado.

Acceso al área de trabajo

Para que la entidad de servicio tenga los permisos necesarios para realizar operaciones de áreas de trabajo y de modelos semánticos de Premium, debe agregar la entidad de servicio como administrador o miembro del área de trabajo. Aquí se describe el uso del acceso al área de trabajo en el servicio Power BI, pero también puede consultar el artículo sobre la adición de API de REST de usuario de grupo.

  1. En el servicio Power BI, en un área de trabajo, seleccione Más>Acceso al área de trabajo.

    Captura de pantalla que muestra una lista de áreas de trabajo. El icono más y el acceso al área de trabajo están resaltados.

  2. Busque por nombre de aplicación, agregue la entidad de servicio como administrador o miembro al área de trabajo.

    Captura de pantalla que muestra el cuadro de diálogo de acceso que muestra un nombre de entidad de seguridad de servicio. Administración está seleccionada.

Cadenas de conexión para el punto de conexión XMLA

Cuando haya creado una entidad de servicio, habilitado las entidades de servicio para el inquilino y agregado la entidad de servicio al acceso al área de trabajo, utilícela como identidad de usuario en cadenas de conexión con el punto de conexión XMLA. La diferencia es que, en lugar de los parámetros user id y password, se especifica el identificador de aplicación, el identificador de inquilino y el secreto de aplicación.

Data Source=powerbi://api.powerbi.com/v1.0/myorg/<workspace name>; Initial Catalog=<dataset name>;User ID=app:<appId>@<tenantId>;Password=<app_secret>;

PowerShell

Abra una sesión de PowerShell para ejecutar el código de ejemplo siguiente.

Uso del módulo SQLServer

En el ejemplo siguiente, se usan AppId, TenantId y AppSecret para autenticar una operación de actualización del modelo semántico:

Param (
        [Parameter(Mandatory=$true)] [String] $AppId,
        [Parameter(Mandatory=$true)] [String] $TenantId,
        [Parameter(Mandatory=$true)] [String] $AppSecret
       )
$PWord = ConvertTo-SecureString -String $AppSecret -AsPlainText -Force

$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord

Invoke-ProcessTable -Server "powerbi://api.powerbi.com/v1.0/myorg/myworkspace" -TableName "mytable" -DatabaseName "mydataset" -RefreshType "Full" -ServicePrincipal -ApplicationId $AppId -TenantId $TenantId -Credential $Credential

Objetos de administración de análisis (AMO) y ADOMD.NET

Al conectarse con aplicaciones cliente y aplicaciones web, puede utilizar los paquetes instalables de la versión 15.1.42.26 (junio de 2020) y versiones posteriores de las bibliotecas cliente de AMO y ADOMD de NuGet para admitir entidades de servicio en las cadenas de conexión con el uso de la siguiente sintaxis: app:AppID y la contraseña o cert:thumbprint.

En el ejemplo siguiente, se usan los valores appID y password para realizar una operación de actualización de la base de datos modelo:

string appId = "xxx";
string authKey = "yyy";
string connString = $"Provider=MSOLAP;Data source=powerbi://api.powerbi.com/v1.0/<tenant>/<workspacename>;Initial catalog=<datasetname>;User ID=app:{appId};Password={authKey};";
Server server = new Server();
server.Connect(connString);
Database db = server.Databases.FindByName("adventureworks");
Table tbl = db.Model.Tables.Find("DimDate");
tbl.RequestRefresh(RefreshType.Full);
db.Model.SaveChanges();