Vložení obsahu Power BI s použitím instančního objektu a certifikátuEmbed Power BI content with service principal and a certificate

Instanční objekt je metoda ověřování, která se dá použít k umožnění přístupu aplikaci Azure AD k obsahu a rozhraní API služby Power BI.Service principal is an authentication method that can be used to let an Azure AD application access Power BI service content and APIs.

Když vytvoříte aplikaci Azure Active Directory (Azure AD), vytvoří se instanční objekt služby.When you create an Azure Active Directory (Azure AD) app, a service principal object is created. Instanční objekt služby, označovaný také jako instanční objekt, umožňuje službě Azure AD ověřovat vaši aplikaci.The service principal object, also known simply as service principal, allows Azure AD to authenticate your app. Po ověření může aplikace pracovat s prostředky tenanta Azure AD.Once authenticated, the app can access Azure AD tenant resources.

K ověření používá instanční objekt ID aplikace Azure AD a jednu z následujících položek:To authenticate, the service principal uses the Azure AD app's Application ID, and one of the following:

  • Tajný kód aplikaceApplication secret
  • CertifikátCertificate

Poznámka

Místo pomocí tajných kódů doporučujeme back-endové služby zabezpečit pomocí certifikátů.We recommend that you secure your backend services using certificates, rather than secret keys. Další informace o získání přístupových tokenů z Azure AD pomocí tajných kódů nebo certifikátůLearn more about getting access tokens from Azure AD using secret keys or certificates.

Ověřování pomocí certifikátůCertificate-based authentication

Ověřování pomocí certifikátů vám umožňuje nechat se ověřit pomocí Azure Active Directory (Azure AD) a klientského certifikátu na zařízení s Windows, Androidem nebo iOS, nebo uchovaného v trezoru klíčů Azure Key Vault.Certificate-based authentication enables you to be authenticated by Azure Active Directory (Azure AD) with a client certificate on a Windows, Android or iOS device, or kept in an Azure Key Vault.

Použití této metody ověřování umožňuje správu certifikátů z centrálního místa pomocí certifikační autority, kdy je pak možné certifikáty rotovat nebo odvolávat.Using this method of authentication allows managing certificates from a central place, using the CA, for rotation or revocation.

Další informace o certifikátech zjistíte v Azure AD na stránce GitHubu Toky přístupových údajů klientů.You can learn more about certificates in Azure AD in the Client credential flows GitHub page.

MetodaMethod

Jestliže chcete použít instanční objekt a certifikát s vloženými analytickými funkcemi, postupujte podle následujících kroků:To use service principal and a certificate with embedded analytics, follow these steps:

  1. Vytvořte certifikát.Create a certificate.

  2. Vytvořte aplikaci Azure AD.Create an Azure AD Application.

  3. Nastavte ověřování certifikátem.Set up certificate authentication.

  4. Stáhněte si certifikát z Azure Key Vaultu.Get the certificate from Azure Key Vault.

  5. Proveďte ověření pomocí instančního objektu a certifikátu.Authenticate using service principal and a certificate.

1. krok – Vytvoření certifikátuStep 1 - Create a certificate

Certifikát můžete získat z důvěryhodné certifikační autority nebo si můžete vygenerovat certifikát sami.You can procure a certificate from a trusted Certificate Authority, or generate a certificate yourself.

Tato část popisuje vytvoření certifikátu pomocí Azure Key Vaultu a stažení souboru .cer, který obsahuje veřejný klíč.This section describes creating a certificate using Azure Key Vault, and downloading the .cer file which contains the public key.

  1. Přihlaste se k Microsoft Azure.Log into Microsoft Azure.

  2. Vyhledejte trezory klíčů a klikněte na odkaz Trezory klíčů.Search for Key Vaults and click the Key Vaults link.

    trezor klíčů

  3. Klikněte na trezor klíčů, do kterého chcete certifikát přidat.Click the key vault you want to add a certificate to.

    Výběr trezoru klíčů

  4. Klikněte na Certifikáty.Click Certificates.

    Snímek obrazovky se stránkou Trezory klíčů se zvýrazněnými certifikáty

  5. Klikněte na Vygenerovat/importovat.Click Generate/Import.

    Snímek obrazovky s podoknem Certifikát se zvýrazněnou položkou Generovat / Importovat

  6. Nakonfigurujte pole Vytvořit certifikát následujícím způsobem:Configure the Create a certificate fields as follows:

    • Způsob vytvoření certifikátu – ObecnýMethod of Certificate Creation - General

    • Název certifikátu – Zadejte název certifikátu.Certificate Name - Enter a name for your certificate

    • Typ certifikační autority (CA) – Certifikát podepsaný svým držitelemType of Certificate Authority (CA) - Self-signed certificate

    • Předmět – Rozlišující název X.500Subject - An X.500 distinguished name

    • Názvy DNS – 0 názvů DNSDNS Names - 0 DNS names

    • Doba platnosti (v měsících) – Zadejte dobu platnosti certifikátu.Validity Period (in months) - Enter the certificate's validity duration

    • Typ obsahu – PKCS #12Content Type - PKCS #12

    • Typ akce životnosti – Automaticky prodloužit platnost při dosažení daného procenta životnostiLifetime Action Type - Automatically renew at a given percentage lifetime

    • Procento životnosti – 80Percentage Lifetime - 80

    • Upřesnit konfiguraci zásad – NenakonfigurovánoAdvanced Policy Configuration - Not configured

  7. Klikněte na Vytvořit.Click Create. Nově vytvořený certifikát je ve výchozím nastavení zakázaný.The newly created certificate is disabled by default. Může to trvat až pět minut, než se aktivuje.It can take up to five minutes to become enabled.

  8. Vyberte certifikát, který jste vytvořili.Select the certificate you created.

  9. Klikněte na Stáhnout ve formátu CER.Click Download in CER format. Stažený soubor obsahuje veřejný klíč.The downloaded file contains the public key.

    stáhnout jako cer

2. krok – Vytvoření aplikace Azure ADStep 2 - Create an Azure AD Application

  1. Přihlaste se k Microsoft Azure.Log into Microsoft Azure.

  2. Vyhledejte Registrace aplikací a klikněte na odkaz Registrace aplikací.Search for App registrations and click the App registrations link.

    Registrace aplikace Azure

  3. Klikněte na Nová registrace.Click New registration.

    Nová registrace

  4. Vyplňte požadované informace:Fill in the required information:

    • Název – Zadejte název své aplikace.Name - Enter a name for your application
    • Podporované typy účtů – Vyberte podporované typy účtů.Supported account types - Select supported account types
    • (Nepovinné) Identifikátor URI přesměrování – V případě potřeby zadejte identifikátor URI.(Optional) Redirect URI - Enter a URI if needed
  5. Klikněte na Zaregistrovat.Click Register.

  6. Po registraci bude ID aplikace dostupné na kartě Přehled. ID aplikace si zkopírujte a uložte pro pozdější použití.After registering, the Application ID is available from the Overview tab. Copy and save the Application ID for later use.

    ID aplikace

3. krok – Nastavení ověřování certifikátemStep 3 - Set up certificate authentication

  1. V aplikaci Azure AD klikněte na kartu Certifikáty a tajné kódy.In your Azure AD application, click the Certificates & secrets tab.

    Snímek obrazovky zobrazuje podokno Certifikáty a tajné klíče pro aplikaci na webu Azure Portal

  2. Klikněte na Nahrát certifikát a nahrajte soubor .cer, který jste vytvořili a stáhli v prvním kroku tohoto kurzu.Click Upload certificate and upload the .cer file you created and downloaded in the first step of this tutorial. Soubor .cer obsahuje veřejný klíč.The .cer file contains the public key.

4. krok – Stažení certifikátu z Azure Key VaultuStep 4 - Get the certificate from Azure Key Vault

K získání certifikátu z Azure Key Vaultu použijte Identitu spravované služby (MSI).Use Managed Service Identity (MSI) to get the certificate from Azure Key Vault. Tento proces zahrnuje získání certifikátu .pfx, který obsahuje jak veřejný, tak i privátní klíč.This process involves getting the .pfx certificate that contains both the public and private keys.

Podívejte se na příklad kódu, jak se čte certifikát z Azure Key Vaultu.Refer to the code example for reading the certificate from Azure Key Vault. Pokud chcete použít Visual Studio, přečtěte si část Konfigurace sady Visual Studio na používání MSI.If you want to use Visual Studio, refer to Configure Visual Studio to use 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;
    try
    {
        certificate = keyVaultClient.GetCertificateAsync($"https://{KeyVaultName}.vault.azure.net/", certName).Result;
        secret = keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier).Result;
    }
    catch (Exception)
    {
        return null;
    }

    return new X509Certificate2(Convert.FromBase64String(secret.Value));
}

5. krok – Ověření pomocí instančního objektu a certifikátuStep 5 - Authenticate using service principal and a certificate

Připojením k Azure Key Vaultu můžete svoji aplikaci ověřit pomocí instančního objektu a certifikátu uloženého v Azure Key Vaultu.You can authenticate your app using service principal and a certificate that's stored in Azure Key Vault, by connecting to Azure Key Vault.

Pokud se chcete připojit k Azure Key Vaultu a přečíst certifikát tam, přečtěte si následující kód.To connect and read the certificate from Azure Key Vault, refer to the code below.

Poznámka

Pokud už máte certifikát vytvořený vaší organizací, nahrajte soubor .pfx do Azure Key Vaultu.If you already have a certificate created by your organization, upload the .pfx file to 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();
    try
    {
        authenticationResult = await clientApp.AcquireTokenForClient(Scope).ExecuteAsync();
    }
    catch (MsalException)
    {
        throw;
    }
    return authenticationResult
}

Konfigurace sady Visual Studio na používání MSIConfigure Visual Studio to use MSI

Při vytváření vloženého řešení může být užitečné nakonfigurovat sadu Visual Studio tak, aby používala Identitu spravované služby (MSI).When creating your embedded solution, it may be useful to configure Visual Studio to use Managed Service Identity (MSI). MSI je funkce, která umožňuje spravovat identitu Azure AD.MSI is a feature that enables you to manage your Azure AD identity. Po nakonfigurování umožní sadě Visual Studio ověřování vůči vašemu Azure Key Vaultu.Once configured, it will let Visual Studio authenticate against your Azure Key Vault.

  1. Otevřete svůj projekt v sadě Visual Studio.Open your project in Visual Studio.

  2. Klikněte na Nástroje > Možnosti.Click Tools > Options.

    Možnosti sady Visual Studio

  3. Vyhledejte Výběr účtu a klikněte na Výběr účtu.Search for Account Selection and click Account Selection.

    výběr účtu

  4. Přidejte účet, který má přístup k vašemu Azure Key Vaultu.Add the account that has access to your Azure Key Vault.

Důležité informace a omezeníConsiderations and limitations

  • Instanční objekt funguje jenom s novými pracovními prostory.Service principal only works with new workspaces.
  • Při použití instančního objektu není podporovaný můj pracovní prostor.My Workspace isn't supported when using service principal.
  • Při přechodu na produkční prostředí se vyžaduje vyhrazená kapacita.Dedicated capacity is required when moving to production.
  • Instanční objekt nemůžete použít k přihlášení na portál Power BI.You can't sign into the Power BI portal using service principal.
  • K povolení instančního objektu v nastavení pro vývojáře na portálu pro správu Power BI potřebujete oprávnění správce Power BI.Power BI admin rights are required to enable service principal in developer settings within the Power BI admin portal.
  • Instanční objekt nemůžou používat aplikace vložené pro organizaci.Embed for your organization applications can't use service principal.
  • Správa toků dat se nepodporuje.Dataflows management is not supported.
  • Instanční objekt momentálně nepodporuje žádná rozhraní API pro správce.Service principal currently does not support any admin APIs.
  • Když používáte instanční objekt se zdrojem dat Azure Analysis Services, musí mít tento instanční objekt oprávnění k instanci služby Analysis Services.When using service principal with an Azure Analysis Services data source, the service principal itself must have an Azure Analysis Services instance permissions. Pokud byste pro tento účel použili skupinu zabezpečení, která obsahuje instanční objekt, nebude to fungovat.Using a security group that contains the service principal for this purpose, doesn't work.
  • Instanční objekt momentálně nemá přístup ke zdrojům dat v bráně.Service principal currently not able to access data sources in the gateway. To znamená, že uživatelům zdroje dat nemůžete přidat instanční objekt v bráně.i.e, you cannot able to add service prinicpal as the data source users in gateway.

Další krokyNext steps