Бөлісу құралы:


Внедрение содержимого Power BI с помощью субъекта-службы и сертификата

Проверка подлинности на основе сертификатов позволяет пройти проверку подлинности с помощью идентификатора Microsoft Entra с помощью сертификата клиента. Сертификат клиента может находиться на устройстве Windows, Android или iOS, или сертификат клиента можно хранить в Azure Key Vault.

Использование этого метода проверки подлинности позволяет управлять сертификатами из центрального места с помощью центра сертификации (ЦС) для смены или отзыва.

Дополнительные сведения о сертификатах в идентификаторе Microsoft Entra см. на странице потоков учетных данных клиента GitHub.

Способ

  1. Внедрение содержимого с помощью субъекта-службы.

  2. Создайте сертификат.

  3. Настройка проверки подлинности сертификата.

  4. Получите сертификат из Azure Key Vault.

  5. Проверка подлинности с помощью субъекта-службы и сертификата.

Шаг 1. Внедрение содержимого с помощью субъекта-службы

Чтобы внедрить содержимое с помощью субъекта-службы, следуйте инструкциям в статье "Внедрение содержимого Power BI с субъектом-службой и секретом приложения".

Примечание.

Если у вас уже есть содержимое, внедренное с помощью субъекта-службы, пропустите этот шаг и перейдите к шагу 2.

Шаг 2. Создание сертификата

Вы можете приобрести сертификат из доверенного центра сертификации или создать сертификат самостоятельно.

В этом разделе описывается создание сертификата с помощью Azure Key Vault и скачивание файла .cer , содержащего открытый ключ.

  1. Войдите в Microsoft Azure.

  2. Найдите и выберите ссылку "Хранилища ключей ".

    Снимок экрана: окно портал Azure, в котором показана ссылка на службу хранилища ключей в списке служб.

  3. Выберите хранилище ключей, к которому нужно добавить сертификат.

    Снимок экрана: окно портал Azure, в котором показан список размытых хранилищ ключей в списке хранилищ ключей.

  4. Выберите Сертификаты.

    Снимок экрана: окно портал Azure, на котором показана страница

  5. Выберите Создать/импортировать.

    Снимок экрана: окно портал Azure, в котором показана панель

  6. Настройте поля сертификата следующим образом:

    • Метод создания сертификата — общие

    • Имя сертификата— введите имя сертификата

    • Тип центра сертификации (ЦС) — самозаверяющий сертификат

    • Темаразличающееся имя X.500

    • DNS-имена — 0 DNS-имен

    • Срок действия (в месяцах) — введите срок действия сертификата

    • Тип контента — PKCS #12

    • Тип действия по времени существования — автоматическое продление в заданное процентное время существования

    • Процентная продолжительность существования — 80

    • Расширенная конфигурация политики — не настроена

  7. Нажмите кнопку создания. По умолчанию созданный сертификат отключен. Для включения может потребоваться до пяти минут.

  8. Выберите созданный сертификат.

  9. Выберите "Скачать" в формате CER. Скачанный файл содержит открытый ключ.

    Снимок экрана: окно портал Azure, в котором показана выделенная кнопка

Шаг 3. Настройка проверки подлинности сертификата

  1. В приложении Microsoft Entra выберите вкладку "Сертификаты и секреты ".

    Снимок экрана: окно портал Azure, в котором показаны сертификаты и области секретов для приложения.

  2. Выберите " Отправить сертификат " и отправьте созданный и скачанный файл .cer на шаге 2 этого руководства. Файл .cer содержит открытый ключ.

Шаг 4. Получение сертификата из Azure Key Vault

Используйте управляемое удостоверение службы (MSI), чтобы получить сертификат из Azure Key Vault. Этот процесс включает получение PFX-сертификата , содержащего как открытые, так и закрытые ключи.

См. пример кода для чтения сертификата из Azure Key Vault. Если вы хотите использовать Visual Studio, обратитесь к статье "Настройка Visual Studio для использования 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));
}

Шаг 5. Проверка подлинности с помощью субъекта-службы и сертификата

Вы можете пройти проверку подлинности приложения, использующего субъект-службу и сертификат, хранящийся в Azure Key Vault, путем подключения к Azure Key Vault.

Чтобы подключиться и прочитать сертификат из Azure Key Vault, ознакомьтесь со следующим примером кода.

Примечание.

Если у вас уже есть сертификат, созданный организацией, отправьте PFX-файл в 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();
}

Настройка Visual Studio для использования MSI

При создании внедренного решения может потребоваться настроить Visual Studio для использования управляемого удостоверения службы (MSI). MSI — это функция, которая позволяет управлять удостоверением Microsoft Entra. После настройки visual Studio будет проходить проверку подлинности в Azure Key Vault.

Примечание.

Пользователю, который входит в Visual Studio, требуются разрешения Azure Key Vault для получения сертификата.

  1. Откройте проект в Visual Studio.

  2. Выберите параметры инструментов>.

    Снимок экрана: окно Visual Studio с выделенной кнопкой

  3. Найдите и выберите пункт "Выбор учетной записи".

    Снимок экрана: окно параметров Visual Studio, в котором показан выделенный параметр выбора учетной записи в результатах поиска.

  4. Добавьте учетную запись, доступ к Azure Key Vault.