Inserción de contenido de Power BI con entidades de servicio y un certificado
La autenticación basada en certificados le permite autenticarse mediante Microsoft Entra ID con un certificado de cliente. El certificado de cliente puede ser en un dispositivo Windows, Android o iOS, o conservarse en una instancia de Azure Key Vault.
Este método de autenticación permite administrar certificados desde una ubicación central mediante la entidad de certificación (CA), para la rotación o la revocación.
Puede obtener más información sobre los certificados en Microsoft Entra ID en la página Flujos de credenciales de cliente de GitHub.
Método
Paso 1: Inserción del contenido con la entidad de servicio
Para insertar el contenido con una entidad de servicio, siga las instrucciones de Inserción de contenido de Power BI con entidades de servicio y un secreto de aplicación.
Nota
Si ya tiene contenido insertado mediante una entidad de servicio, omita este paso y continúe con el paso 2.
Paso 2: Creación de un certificado
Puede adquirir un certificado de una entidad de certificación de confianza, o bien generarlo personalmente.
En esta sección se describe la creación de un certificado mediante Azure Key Vault y la descarga del archivo .cer, que contiene la clave pública.
Inicie sesión en Microsoft Azure.
Busque y seleccione el vínculo Almacenes de claves.
Seleccione el almacén de claves al que quiera agregar un certificado.
Seleccione Certificados.
Seleccione Generar o importar.
Configure los campos Creación de certificado de esta forma:
Método de creación de certificados: General
Nombre del certificado: escriba un nombre para el certificado
Tipo de entidad de certificación (CA) : certificado autofirmado
Asunto: un nombre distintivo X.500
Nombres DNS: 0 nombres DNS
Período de validez (en meses) : escriba la duración de validez del certificado
Tipo de contenido: PKCS #12
Tipo de acción de duración: Renovar automáticamente cuando se llegue a un porcentaje determinado de duración
Porcentaje de duración: 80
Configuración de directiva avanzada: no configurado
Seleccione Crear. El certificado recién creado está deshabilitado de forma predeterminada. Puede tardar hasta cinco minutos en habilitarse.
Seleccione el certificado que ha creado.
Seleccione Descargar en formato CER. El archivo descargado contiene la clave pública.
Paso 3: Configuración de la autenticación de certificado
En la aplicación Microsoft Entra, seleccione la pestaña Certificados y secretos.
Seleccione Cargar certificado y cargue el archivo .cer que ha creado y descargado en el paso 2 de este tutorial. El archivo .cer contiene la clave pública.
Paso 4: Obtención del certificado de Azure Key Vault
Use Managed Service Identity (MSI) para obtener el certificado de Azure Key Vault. Este proceso implica obtener el certificado .pfx que contiene las claves pública y privada.
Consulte el ejemplo de código para leer el certificado desde Azure Key Vault. Si quiere usar Visual Studio, consulte Configuración de Visual Studio para usar MSI.
private X509Certificate2 ReadCertificateFromVault(string certName)
{
var serviceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback));
CertificateBundle certificate = null;
SecretBundle secret = null;
certificate = keyVaultClient.GetCertificateAsync($"https://{KeyVaultName}.vault.azure.net/", certName).Result;
secret = keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier).Result;
return new X509Certificate2(Convert.FromBase64String(secret.Value));
}
Paso 5: Autenticación mediante una entidad de servicio y un certificado
Puede autenticar la aplicación que usa una entidad de servicio y un certificado almacenado en Azure Key Vault mediante la conexión a Azure Key Vault.
Para conectarse y leer el certificado de Azure Key Vault, consulte la siguiente muestra de código.
Nota
Si ya tiene un certificado creado por la organización, cargue el archivo .pfx en Azure Key Vault.
// Preparing needed variables
var Scope = "https://analysis.windows.net/powerbi/api/.default"
var ApplicationId = "{YourApplicationId}"
var tenantSpecificURL = "https://login.microsoftonline.com/{YourTenantId}/"
X509Certificate2 certificate = ReadCertificateFromVault(CertificateName);
// Authenticating with a SP and a certificate
public async Task<AuthenticationResult> DoAuthentication(){
IConfidentialClientApplication clientApp = null;
clientApp = ConfidentialClientApplicationBuilder.Create(ApplicationId)
.WithCertificate(certificate)
.WithAuthority(tenantSpecificURL)
.Build();
return await clientApp.AcquireTokenForClient(Scope).ExecuteAsync();
}
Configuración de Visual Studio para usar MSI
Al crear la solución insertada, podría resultar útil configurar Visual Studio para usar Managed Service Identity (MSI). MSI es una característica que le permite administrar su identidad de Microsoft Entra. Una vez que se ha configurado, permitirá que Visual Studio se autentique en la instancia de Azure Key Vault.
Nota
El usuario que inicie sesión en Visual Studio requerirá permisos de Azure Key Vault para obtener el certificado.
Abra el proyecto en Visual Studio.
Seleccione Herramientas>Opciones.
Busque y seleccione Selección de cuenta.
Agregue la cuenta que tenga acceso a la instancia de Azure Key Vault.
Contenido relacionado
- Configuración de Power BI Embedded
- Tutorial: Inserción de contenido de Power BI por medio de una aplicación de ejemplo de inserción para los clientes
- Objetos de aplicación y de entidad de servicio en Microsoft Entra ID
- Inserción de un informe en una instancia local de SQL Server Analysis Services (SSAS)