Внедрение содержимого Power BI с помощью субъекта-службы и сертификата
Проверка подлинности на основе сертификатов позволяет пройти проверку подлинности с помощью идентификатора Microsoft Entra с помощью сертификата клиента. Сертификат клиента может находиться на устройстве Windows, Android или iOS, или сертификат клиента можно хранить в Azure Key Vault.
Использование этого метода проверки подлинности позволяет управлять сертификатами из центрального места с помощью центра сертификации (ЦС) для смены или отзыва.
Дополнительные сведения о сертификатах в идентификаторе Microsoft Entra см. на странице потоков учетных данных клиента GitHub.
Способ
Настройка проверки подлинности сертификата.
Проверка подлинности с помощью субъекта-службы и сертификата.
Шаг 1. Внедрение содержимого с помощью субъекта-службы
Чтобы внедрить содержимое с помощью субъекта-службы, следуйте инструкциям в статье "Внедрение содержимого Power BI с субъектом-службой и секретом приложения".
Примечание.
Если у вас уже есть содержимое, внедренное с помощью субъекта-службы, пропустите этот шаг и перейдите к шагу 2.
Шаг 2. Создание сертификата
Вы можете приобрести сертификат из доверенного центра сертификации или создать сертификат самостоятельно.
В этом разделе описывается создание сертификата с помощью Azure Key Vault и скачивание файла .cer , содержащего открытый ключ.
Войдите в Microsoft Azure.
Найдите и выберите ссылку "Хранилища ключей ".
Выберите хранилище ключей, к которому нужно добавить сертификат.
Выберите Сертификаты.
Выберите Создать/импортировать.
Настройте поля сертификата следующим образом:
Метод создания сертификата — общие
Имя сертификата— введите имя сертификата
Тип центра сертификации (ЦС) — самозаверяющий сертификат
Тема — различающееся имя X.500
DNS-имена — 0 DNS-имен
Срок действия (в месяцах) — введите срок действия сертификата
Тип контента — PKCS #12
Тип действия по времени существования — автоматическое продление в заданное процентное время существования
Процентная продолжительность существования — 80
Расширенная конфигурация политики — не настроена
Нажмите кнопку создания. По умолчанию созданный сертификат отключен. Для включения может потребоваться до пяти минут.
Выберите созданный сертификат.
Выберите "Скачать" в формате CER. Скачанный файл содержит открытый ключ.
Шаг 3. Настройка проверки подлинности сертификата
В приложении Microsoft Entra выберите вкладку "Сертификаты и секреты ".
Выберите " Отправить сертификат " и отправьте созданный и скачанный файл .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 для получения сертификата.
Откройте проект в Visual Studio.
Выберите параметры инструментов>.
Найдите и выберите пункт "Выбор учетной записи".
Добавьте учетную запись, доступ к Azure Key Vault.