การฝังเนื้อหา Power BI ด้วยบริการหลักและใบรับรองEmbed Power BI content with service principal and a certificate

บริการหลักคือวิธีการรับรองความถูกต้องที่สามารถใช้เพื่ออนุญาตให้แอปพลิเคชัน Azure AD เข้าถึงเนื้อหาบริการของ Power BI และ APIService principal is an authentication method that can be used to let an Azure AD application access Power BI service content and APIs.

เมื่อคุณสร้างแอป Azure Active Directory (Azure AD) วัตถุบริการหลัก จะถูกสร้างขึ้นWhen you create an Azure Active Directory (Azure AD) app, a service principal object is created. วัตถุบริการหลัก ซึ่งเป็นที่รู้จักกันว่า บริการหลัก จะช่วยให้ Azure AD รับรองความถูกต้องของแอปของคุณThe service principal object, also known simply as service principal, allows Azure AD to authenticate your app. เมื่อรับรองความถูกต้องแล้ว แอปจะสามารถเข้าถึงแหล่งข้อมูลผู้เช่า Azure ADOnce authenticated, the app can access Azure AD tenant resources.

ในการรับรองความถูกต้อง บริการหลักจะใช้ รหัส แอปพลิเคชัน ของแอป Azure AD และหนึ่งในรายการต่อไปนี้:To authenticate, the service principal uses the Azure AD app's Application ID, and one of the following:

  • ข้อมูลลับของแอปพลิเคชันApplication secret
  • ใบรับรองCertificate

หมายเหตุ

เราขอแนะนำให้คุณรักษาความปลอดภัยบริการหลังบ้านของคุณโดยใช้ใบรับรอง แทนที่จะเป็นคีย์ลับWe recommend that you secure your backend services using certificates, rather than secret keys. เรียนรู้เพิ่มเติมเกี่ยวกับการรับโทเค็นการเข้าถึงจาก Azure AD โดยใช้คีย์ลับหรือใบรับรองLearn more about getting access tokens from Azure AD using secret keys or certificates.

การรับรองความถูกต้องตามใบรับรองCertificate-based authentication

การรับรองความถูกต้องตามใบรับรองช่วยให้คุณได้รับการรับรองจาก Azure Active Directory (Azure AD) ที่มีใบรับรองไคลเอ็นต์บนอุปกรณ์ Windows, Android หรือ iOS หรือเก็บไว้ใน Azure Key VaultCertificate-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.

การใช้วิธีการรับรองความถูกต้องนี้อนุญาตให้จัดการใบรับรองจากจุดศูนย์กลางโดยใช้ CA สำหรับการสับเปลี่ยนหรือการเพิกถอนUsing this method of authentication allows managing certificates from a central place, using the CA, for rotation or revocation.

คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับใบรับรองใน Azure AD ได้จากหน้า โฟลว์ข้อมูลประจำตัวของไคลเอ็นต์ ใน GitHubYou can learn more about certificates in Azure AD in the Client credential flows GitHub page.

วิธีMethod

เมื่อต้องการใช้บริการหลักและใบรับรองที่มีการวิเคราะห์แบบฝังตัว ให้ทำตามขั้นตอนเหล่านี้:To use service principal and a certificate with embedded analytics, follow these steps:

  1. สร้างใบรับรองCreate a certificate.

  2. สร้างแอปพลิเคชัน Azure ADCreate an Azure AD Application.

  3. ตั้งค่าการรับรองความถูกต้องใบรับรองSet up certificate authentication.

  4. รับใบรับรองจาก Azure Key VaultGet the certificate from Azure Key Vault.

  5. รับรองความถูกต้องโดยใช้บริการหลักและใบรับรองAuthenticate using service principal and a certificate.

ขั้นตอนที่ 1 - สร้างใบรับรองStep 1 - Create a certificate

คุณสามารถจัดหาใบรับรองจากผู้ให้บริการออกใบรับรองที่เชื่อถือได้ หรือสร้างใบรับรองด้วยตัวคุณเองYou can procure a certificate from a trusted Certificate Authority, or generate a certificate yourself.

ในส่วนนี้จะอธิบายการสร้างใบรับรองโดยใช้ Azure Key Vault และดาวน์โหลดไฟล์ .cer ซึ่งประกอบด้วยคีย์สาธารณะThis section describes creating a certificate using Azure Key Vault, and downloading the .cer file which contains the public key.

  1. ลงชื่อเข้าใช้ใน Microsoft AzureLog into Microsoft Azure.

  2. ค้นหา ชุดเก็บคีย์ และคลิกที่ลิงก์ ชุดเก็บคีย์Search for Key Vaults and click the Key Vaults link.

    ชุดเก็บคีย์

  3. คลิกชุดเก็บคีย์ที่คุณต้องการเพิ่มใบรับรองClick the key vault you want to add a certificate to.

    เลือกชุดเก็บคีย์

  4. คลิก ใบรับรองClick Certificates.

    ใบรับรอง

  5. คลิก สร้าง/นำเข้าClick Generate/Import.

    สร้าง

  6. กำหนดค่างเขตข้อมูล สร้างใบรับรอง ดังนี้:Configure the Create a certificate fields as follows:

    • วิธีการสร้างใบรับรอง - ทั่วไปMethod of Certificate Creation - General

    • ชื่อใบรับรอง - ป้อนชื่อสำหรับใบรับรองของคุณCertificate Name - Enter a name for your certificate

    • ชนิดของผู้ให้บริการออกใบรับรอง (CA) - ใบรับรองแบบสร้างขึ้นมาเองType of Certificate Authority (CA) - Self-signed certificate

    • หัวเรื่อง - ชื่อจำเพาะ X.500Subject - An X.500 distinguished name

    • ชื่อ DNS - ชื่อ DNS 0DNS Names - 0 DNS names

    • ระยะเวลาการมีผลบังคับใช้ (เดือน) - ป้อนระยะเวลาการมีผลบังคับใช้ของใบรับรองValidity Period (in months) - Enter the certificate's validity duration

    • ชนิดเนื้อหา - PKCS #12Content Type - PKCS #12

    • ชนิดการดำเนินการตลอดอายุการใช้ - ต่ออายุอัตโนมัติตามเปอร์เซ็นต์อายุการใช้งานที่ระบุLifetime Action Type - Automatically renew at a given percentage lifetime

    • เปอร์เซ็นต์อายุการใช้งาน - 80Percentage Lifetime - 80

    • การกำหนดค่านโยบายขั้นสูง - ไม่ได้กำหนดค่าAdvanced Policy Configuration - Not configured

  7. คลิกสร้างClick Create. ใบรับรองที่สร้างขึ้นใหม่ถูกปิดใช้งานตามค่าเริ่มต้นThe newly created certificate is disabled by default. อาจใช้เวลานานถึงห้านาทีในการเปิดใช้งานIt can take up to five minutes to become enabled.

  8. เลือกใบรับรองที่คุณสร้างขึ้นSelect the certificate you created.

  9. คลิก ดาวน์โหลดในรูปแบบ CERClick Download in CER format. ไฟล์ที่ดาวน์โหลดประกอบด้วยคีย์สาธารณะThe downloaded file contains the public key.

    ดาวน์โหลดเป็น cer

ขั้นตอนที่ 2 - สร้างแอปพลิเคชัน Azure ADStep 2 - Create an Azure AD Application

  1. ลงชื่อเข้าใช้ใน Microsoft AzureLog into Microsoft Azure.

  2. ค้นหา การลงทะเบียนแอป และคลิกลิงก์ การลงทะเบียนแอปSearch for App registrations and click the App registrations link.

    ลงทะเบียนแอป azure

  3. คลิก การลงทะเบียนใหม่Click New registration.

    การลงทะเบียนใหม่

  4. ระบุข้อมูลที่จำเป็น:Fill in the required information:

    • ชื่อ - กรอกชื่อสำหรับแอปพลิเคชันของคุณName - Enter a name for your application
    • ชนิดบัญชีที่ได้รับการสนับสนุน - เลือกประเภทบัญชีที่ได้รับการสนับสนุนSupported account types - Select supported account types
    • (ไม่บังคับ) เปลี่ยนเส้นทาง URI - กรอก URI ถ้าจำเป็น(Optional) Redirect URI - Enter a URI if needed
  5. คลิก ลงทะเบียนClick Register.

  6. หลังจากลงทะเบียนแล้ว รหัสแอปพลิเคชัน จะพร้อมใช้งานจากแท็บ ภาพรวม คัดลอกและบันทึก รหัสแอปพลิเคชัน สำหรับใช้งานในภายหลังAfter registering, the Application ID is available from the Overview tab. Copy and save the Application ID for later use.

    รหัสแอปพลิเคชัน

ขั้นตอนที่ 3 - ตั้งค่าการรับรองความถูกต้องใบรับรองStep 3 - Set up certificate authentication

  1. ในแอปพลิเคชัน Azure AD ของคุณ ให้คลิกที่แท็บ ใบรับรอง & ความลับIn your Azure AD application, click the Certificates & secrets tab.

    รหัสแอปพลิเคชัน

  2. คลิก อัปโหลดใบรับรอง และอัปโหลดไฟล์ .cer ที่คุณสร้างและดาวน์โหลดใน ขั้นตอนแรก ของบทช่วยสอนนี้Click Upload certificate and upload the .cer file you created and downloaded in the first step of this tutorial. ไฟล์ .cer ประกอบด้วยคีย์สาธารณะThe .cer file contains the public key.

ขั้นตอนที่ 4 - รับใบรับรองจาก Azure Key VaultStep 4 - Get the certificate from Azure Key Vault

ใช้ข้อมูลประจำตัวของบริการที่มีการจัดการ (MSI) เพื่อรับใบรับรองจาก Azure Key VaultUse Managed Service Identity (MSI) to get the certificate from Azure Key Vault. กระบวนการนี้เกี่ยวข้องกับการรับใบรับรอง .pfx ที่ประกอบด้วยคีย์สาธารณะและส่วนตัวThis process involves getting the .pfx certificate that contains both the public and private keys.

อ้างถึงตัวอย่างโค้ดสำหรับการอ่านใบรับรองจาก Azure Key VaultRefer to the code example for reading the certificate from Azure Key Vault. ถ้าคุณต้องการใช้ Visual Studio ให้อ้างอิงถึง กำหนดค่า Visual Studio เพื่อใช้ MSIIf 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 - รับรองความถูกต้องโดยใช้บริการหลักและใบรับรองStep 5 - Authenticate using service principal and a certificate

คุณสามารถรับรองความถูกต้องของแอปของคุณโดยใช้บริการหลักและใบรับรองที่จัดเก็บไว้ใน Azure Key Vault ได้โดยการเชื่อมต่อกับ Azure Key VaultYou can authenticate your app using service principal and a certificate that's stored in Azure Key Vault, by connecting to Azure Key Vault.

หากต้องการเชื่อมต่อและอ่านใบรับรองจาก Azure Key Vault โปรดดูโค้ดด้านล่างTo connect and read the certificate from Azure Key Vault, refer to the code below.

หมายเหตุ

ถ้าคุณมีใบรับรองที่สร้างโดยองค์กรของคุณแล้ว ให้อัปโหลดไฟล์ .pfx ไปยัง Azure Key VaultIf 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
}

กำหนดค่า Visual Studio เพื่อใช้ MSIConfigure Visual Studio to use MSI

เมื่อสร้างโซลูชันแบบฝังตัวของคุณ อาจเป็นประโยชน์ในการกำหนดค่า Visual Studio เพื่อใช้ข้อมูลประจำตัวของบริการที่มีการจัดการ (MSI)When creating your embedded solution, it may be useful to configure Visual Studio to use Managed Service Identity (MSI). MSI คือคุณลักษณะที่ช่วยให้คุณสามารถจัดการข้อมูลประจำตัว Azure AD ของคุณได้MSI is a feature that enables you to manage your Azure AD identity. เมื่อกำหนดค่าแล้ว จะอนุญาตให้ Visual Studio รับรองความถูกต้องเทียบกับ Azure Key Vault ของคุณOnce configured, it will let Visual Studio authenticate against your Azure Key Vault.

  1. เปิดโครงการของคุณใน Visual StudioOpen your project in Visual Studio.

  2. คลิก เครื่องมือ > ตัวเลือกClick Tools > Options.

    ตัวเลือกของ Visual Studio

  3. ค้นหาการเลือกบัญชี และคลิกการเลือกบัญชีSearch for Account Selection and click Account Selection.

    การเลือกบัญชี

  4. เพิ่มบัญชีที่สามารถเข้าถึง Azure Key Vault ของคุณAdd the account that has access to your Azure Key Vault.

ข้อควรพิจารณาและข้อจำกัดConsiderations and limitations

  • บริการหลักจะทำงานร่วมกับพื้นที่ทำงานใหม่เท่านั้นService principal only works with new workspaces.
  • ความจุเฉพาะของฉัน ไม่ได้รับการสนับสนุนเมื่อใช้บริการหลักMy Workspace isn't supported when using service principal.
  • ต้องใช้ความจุเฉพาะเมื่อย้ายไปยังการผลิตDedicated capacity is required when moving to production.
  • คุณไม่สามารถลงชื่อเข้าใช้พอร์ทัล Power BI ด้วยบริการหลักYou can't sign into the Power BI portal using service principal.
  • คุณจำเป็นต้องมีสิทธิ์ของผู้ดูแลระบบ Power BI เพื่อเปิดใช้งานบริการหลักในการตั้งค่านักพัฒนาภายในพอร์ทัลผู้ดูแลระบบของ Power BIPower BI admin rights are required to enable service principal in developer settings within the Power BI admin portal.
  • แอปพลิเคชัน แบบฝังตัวสำหรับองค์กรของคุณ ไม่สามารถใช้บริการหลักได้Embed for your organization applications can't use service principal.
  • Dataflows การจัดการไม่ได้รับการสนับสนุนDataflows management is not supported.
  • ปัจจุบัน โครงร่างสำคัญของบริการไม่สนับสนุนผู้ดูแลระบบ APIsService principal currently does not support any admin APIs.
  • เมื่อใช้โครงร่างสำคัญของบริการด้วยแหล่งข้อมูล Azure Analysis Services โครงร่างสำคัญของบริการจะต้องมีสิทธิ์อินสแตนซ์ Azure Analysis ServicesWhen using service principal with an Azure Analysis Services data source, the service principal itself must have an Azure Analysis Services instance permissions. การใช้กลุ่มความปลอดภัยที่ประกอบด้วยโครงร่างสำคัญของบริการสำหรับวัตถุประสงค์นี้ไม่ได้ผลUsing a security group that contains the service principal for this purpose, doesn't work.
  • บริการหลักไม่สามารถเข้าถึงแหล่งข้อมูลในเกตเวย์ได้ในขณะนี้Service principal currently not able to access data sources in the gateway. เช่น คุณไม่สามารถเพิ่มบริการหลักเป็นผู้ใช้แหล่งข้อมูลในเกตเวย์i.e, you cannot able to add service prinicpal as the data source users in gateway.

ขั้นตอนถัดไปNext steps