Introducción

Completado

Desarrollar una solución de automatización es útil cuando es necesario reproducir las operaciones de administración. La automatización da lugar a una administración de soluciones más rápida y precisa.

Al desarrollar aplicaciones que insertan contenido de Power BI, hay muchas oportunidades disponibles para la automatización, incluida la administración del ciclo de vida, la adición de nuevos inquilinos (clientes) en una aplicación multiinquilino y varias operaciones de TI.

Existen tres bibliotecas de automatización que puede usar:

  • Microsoft Graph

  • API de REST de Microsoft Power BI

  • API REST de Azure Resource Manager (ARM) para Power BI Embedded

Microsoft Graph

Microsoft Graph proporciona un modelo de programación unificado. Expone las API REST y una biblioteca cliente para acceder a los datos y realizar operaciones en varios servicios en la nube de Microsoft. De relevancia para automatizar las soluciones de Power BI, Microsoft Graph puede configurar objetos de seguridad de Microsoft Azure Active Directory. La aplicación o los scripts de PowerShell pueden invocar llamadas a Graph API.

El siguiente script muestra cómo instalar el módulo de PowerShell de Azure AD para Graph en PowerShell. Para más información, consulte Instalación de Azure Active Directory PowerShell para Graph.

Install-Module -Name AzureAD

Los siguientes bloques de código contribuyen a la primera parte de un script de instalación de PowerShell para configurar objetos de seguridad para una nueva aplicación que inserta contenido de Power BI. En concreto, los bloques de código muestran cómo completar las siguientes acciones (en orden):

  1. Generar un secreto de aplicación de Azure AD.

  2. Creación de un registro de aplicación de Azure AD

  3. Crear la entidad de servicio del registro de la aplicación de Azure AD.

  4. Asignar al usuario actual como propietario del registro de la aplicación de Azure AD.

  5. Agregar la entidad de servicio al grupo de seguridad Aplicaciones de Power BI.

El primer bloque de código inicializa dos variables. La variable $appDisplayName almacena el nuevo nombre de la aplicación de Azure AD y la variable $adSecurityGroupName almacena el nombre de un grupo de seguridad existente. En la configuración del inquilino de Power BI, un administrador de Power BI ya ha asignado este grupo de seguridad al permitir el uso de entidades de servicio.

# The new app display name
$appDisplayName = "My app"

# The name of an existing security group
$adSecurityGroupName = "Power BI Apps"

El siguiente bloque de código se conecta con una cuenta autenticada para usar solicitudes de cmdlet de Azure AD. También inicializa variables con datos útiles sobre el inquilino y la cuenta de usuario actual. Estos datos se usarán en bloques de código posteriores.

$authResult = Connect-AzureAD

$tenantId = $authResult.TenantId.ToString()
$tenantDomain = $authResult.TenantDomain

$userAccountId = $authResult.Account.Id
$user = Get-AzureADUser -ObjectId $userAccountId

El siguiente bloque de código genera un secreto de aplicación que se convierte en la contraseña de un registro de aplicación de Azure AD. El secreto de la aplicación se basa en un GUID y es válido durante un año a partir de la fecha actual.

# Generate an app secret
$newGuid = New-Guid
$appSecret = ([System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(($newGuid))))+"="
$startDate = Get-Date
$passwordCredential = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordCredential
$passwordCredential.StartDate = $startDate
$passwordCredential.EndDate = $startDate.AddYears(1)
$passwordCredential.KeyId = $newGuid
$passwordCredential.Value = $appSecret

El siguiente bloque de código crea un registro de aplicación Azure AD mediante el secreto de la aplicación.

# Create an Azure AD app
$replyUrl = "https://localhost:5001/signin-oidc"

$aadApplication = New-AzureADApplication `
    -DisplayName $appDisplayName `
    -PublicClient $false `
    -AvailableToOtherTenants $false `
    -ReplyUrls @($replyUrl) `
    -Homepage $replyUrl `
    -PasswordCredentials $passwordCredential

El siguiente bloque de código crea la entidad de servicio del registro de la aplicación. También asigna al usuario actual como propietario y agrega la entidad de servicio al grupo de seguridad.

# Create the app's service principal
$appId = $aadApplication.AppId
$appObjectId = $aadApplication.ObjectId
$serviceServicePrincipal = New-AzureADServicePrincipal -AppId $appId
$serviceServicePrincipalObjectId = $serviceServicePrincipal.ObjectId

# Assign the current user as the app owner
Add-AzureADApplicationOwner -ObjectId $aadApplication.ObjectId -RefObjectId $user.ObjectId

# Add the service principal to the security group
Add-AzureADGroupMember -ObjectId $($adSecurityGroup.ObjectId) `
    -RefObjectId $($serviceServicePrincipalObjectId)

Las siguientes variables de script contienen información útil para la aplicación. Sus valores deben escribirse y agregarse al archivo de configuración de la aplicación.

  • $tenantDomain - Es necesario para autenticarse con Azure AD.

  • $tenantId - Es necesario para autenticarse con Azure AD.

  • $appId - Es necesario para generar un token de acceso de Azure AD.

  • $appSecret - Es necesario para generar un token de acceso de Azure AD. Sin embargo, los secretos no se deben implementar con la aplicación. En su lugar, se debe acceder a ellos a través de un medio controlado, como variables de entorno o Microsoft Azure Key Vault. Para más información, consulte Almacenamiento seguro de secretos de aplicación en el desarrollo en ASP.NET Core

La variable $serviceServicePrincipalObjectId almacena una referencia a la nueva entidad de servicio. En el tema siguiente, una continuación del script usará esta variable.

API de REST de Power BI

La API REST para Power BI proporciona puntos de conexión de servicio para recursos de inserción, administración, gobernanza y usuario. En cuanto a la automatización de las soluciones de Power BI, la API de REST de Power BI puede realizar las tareas siguientes:

  • Crear áreas de trabajo

  • Asignación de un área de trabajo a una capacidad

  • Configurar el acceso al área de trabajo

  • Crear y configurar contenido de Power BI

En el siguiente script se muestra cómo instalar el módulo de administración de Power BI en PowerShell. Para más información, consulte Cmdlets de Microsoft Power BI para Windows PowerShell y PowerShell Core.

Install-Module -Name MicrosoftPowerBIMgmt

Los siguientes bloques de código contribuyen a la segunda parte de un script de instalación de PowerShell. Es una continuación del script descrito en el tema anterior. Los bloques de código configuran el entorno de Power BI. En concreto, muestran cómo completar las tareas siguientes:

  • Cree un área de trabajo.

  • Agregue una entidad de servicio como administrador del área de trabajo.

  • Importar un archivo de Power BI Desktop para crear un conjunto de datos y un informe.

El primer bloque de código inicializa dos variables. La variable $workspaceName almacena el nuevo nombre del área de trabajo y la variable $pbixFilePath almacena la ruta de acceso a un archivo de Power BI Desktop.

# The new workspace name
$workspaceName = "Sales Reporting"

# The file path to a Power BI Desktop file (.pbix)
$pbixFilePath = "D:\Sales Analysis.pbix"

El siguiente bloque de código conecta el servicio de Power BI con una cuenta autenticada. A continuación, intenta recuperar una referencia al área de trabajo. Si se produce un error en el intento (porque el área de trabajo no existe), crea el área de trabajo. Por último, la variable $workspaceId almacena el identificador del área de trabajo (denominado GroupID).

Connect-PowerBIServiceAccount

# Create the workspace (if it doesn't already exist)
$workspace = Get-PowerBIWorkspace -Name $workspaceName

if (!$workspace) {
    $workspace = New-PowerBIWorkspace -Name $workspaceName
}

$workspaceId = $workspace.Id

El siguiente bloque de código agrega la entidad de servicio como administrador del área de trabajo.

# Add the service principal as a workspace admin
Add-PowerBIWorkspaceUser -Scope Organization `
    -Id $workspaceId `
    -AccessRight Admin `
    -Identifier $serviceServicePrincipalObjectId `
    -PrincipalType App

El siguiente bloque de código importa un archivo de Power BI Desktop en el nuevo área de trabajo.

# Import the Power BI Desktop file
$import = New-PowerBIReport -Path $pbixFilePath -Workspace $workspace -ConflictAction CreateOrOverwrite

La variable $workspaceId contiene información útil para la aplicación. Debe escribir el valor de la variable y agregarlo al archivo de configuración de la aplicación. Puede usar la variable para enumerar los artefactos del área de trabajo para recuperar las propiedades necesarias para insertarlos.

API REST de ARM para Power BI Embedded

La API REST de ARM para Power BI Embedded permite crear, recuperar, actualizar y eliminar capacidades de Power BI Embedded.

Nota

No puede usar esta API para administrar capacidades de Power BI Premium. Para más información, consulte Configuración y administración de capacidades en Power BI Premium.

Puede usar la operación Actualizar para escalar un recurso de capacidad; por ejemplo, cuando se produce un aumento repentino de la demanda de recursos computacionales. Otras operaciones suspenden o reanudan una capacidad.

Nota

Para más información sobre cómo administrar y escalar los recursos de capacidad, consulte el módulo Selección de un producto de análisis integrado de Power BI.

Para más información, consulte Referencia de la API REST de Azure Resource Manager para Power BI Embedded.