Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Учетные записи службы — это регистрация приложения Microsoft Entra ID, созданная в вашем клиенте для выполнения автоматизированных операций с ресурсами и уровнями обслуживания. Это уникальный тип удостоверения пользователя с именем приложения, идентификатором приложения, идентификатором клиента и секретом клиента или сертификатом для пароля.
Power BI Premium использует те же функции учетной записи службы, что и Power BI Embedded. Дополнительные сведения см. в статье Внедрение содержимого Power BI с помощью субъектов-служб.
В Power BI Premium можно использовать служебные учётные записи с конечной точкой XMLA (XML Analysis) для автоматизации задач управления семантической моделью, таких как создание рабочих областей, развертывание моделей и обновление семантической модели.
- PowerShell.
- Служба автоматизации Azure.
- Azure Logic Apps.
- Настраиваемые клиентские приложения.
Только новые рабочие области поддерживают подключения конечных точек XMLA с помощью служебных принципалов. Классические рабочие области не поддерживаются. Субъект-служба имеет только те разрешения, необходимые для выполнения задач в рабочих областях, где она назначена. Разрешения назначаются через доступ к рабочей области, как и в случае с обычными учетными записями, использующими УПН (основное имя пользователя).
Для выполнения операций записи рабочая нагрузка семантических моделей емкости должна иметь включённую конечную точку XMLA для операций чтения и записи. Семантические модели, опубликованные из Power BI Desktop, должны быть с включённым расширенным форматом метаданных.
Создайте сервисного принципала
Субъекты-службы создаются в качестве регистрации приложения на портале Azure или с помощью PowerShell. При создании субъекта-службы обязательно скопируйте и сохраните отдельно имя приложения, идентификатор приложения (клиента), идентификатор каталога (клиента) и секрет клиента. Инструкции по созданию субъекта-службы см. в статье:
Создание группы безопасности Microsoft Entra
По умолчанию субъекты-службы имеют доступ к любым параметрам клиента, для которых они включены. В зависимости от параметров администратора доступ может включать определенные группы безопасности или всю организацию.
Чтобы ограничить доступ служебного принципала к определенным настройкам арендатора, можно разрешить доступ к конкретным группам безопасности. Кроме того, можно создать выделенную группу безопасности для субъектов-служб и исключить ее из требуемых параметров клиента. Сведения о создании группы безопасности и добавлении служебного принципала см. в статье «Создание базовой группы» и добавление участников с помощью Microsoft Entra ID.
Включение субъектов-служб
Прежде чем начать использовать субъект-службу в Power BI, администратор должен включить доступ субъекта-службы на портале администрирования Power BI.
- Перейдите на портал администрирования Power BI и выберите параметры клиента.
- Прокрутите страницу до параметров разработчика, а затем раскройте объекты-службы, которые могут вызывать публичные API Fabric.
- Выберите "Включено".
- Чтобы применить разрешения к группе безопасности, выберите определенные группы безопасности (рекомендуется).
- Введите имя группы.
- Нажмите кнопку "Применить".
Доступ к рабочей области
Чтобы учетная запись службы имела необходимые разрешения для выполнения операций с рабочими областями Premium и семантическими моделями, необходимо добавить учетную запись службы в качестве члена рабочей области или администратора. Использование доступа к рабочей области в службе Power BI описано здесь, но вы также можете использовать REST API для добавления пользователя в группу.
В службе Power BI для рабочей области выберите дополнительный>доступ к рабочей области.
Выполните поиск по имени приложения и добавьте учетную запись службы в роли администратора или участника в рабочую область.
Строки подключения для конечной точки XMLA
После создания служебного принципала включите служебные принципалы для вашего клиента и добавьте служебный принципал для доступа к рабочей области, используйте его в качестве идентификатора пользователя в строках подключения с конечной точкой XMLA. Разница заключается в том, что вместо user idpassword параметров указывается идентификатор приложения, идентификатор клиента и секрет приложения.
Data Source=powerbi://api.powerbi.com/v1.0/myorg/<workspace name>; Initial Catalog=<dataset name>;User ID=app:<appId>@<tenantId>;Password=<app_secret>;
PowerShell
Откройте сеанс PowerShell, чтобы запустить следующий пример кода.
Использование модуля SQLServer
В следующем примере AppIdи TenantIdAppSecret используется для проверки подлинности операции обновления семантической модели:
Param (
[Parameter(Mandatory=$true)] [String] $AppId,
[Parameter(Mandatory=$true)] [String] $TenantId,
[Parameter(Mandatory=$true)] [String] $AppSecret
)
$PWord = ConvertTo-SecureString -String $AppSecret -AsPlainText -Force
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $AppId, $PWord
Invoke-ProcessTable -Server "powerbi://api.powerbi.com/v1.0/myorg/myworkspace" -TableName "mytable" -DatabaseName "mydataset" -RefreshType "Full" -ServicePrincipal -ApplicationId $AppId -TenantId $TenantId -Credential $Credential
Объекты управления анализом (AMO) и ADOMD.NET
При подключении к клиентским приложениям и веб-приложениям можно использовать клиентские библиотеки AMO и ADOMD версии 15.1.42.26 (июнь 2020 г.) и более поздних установленных пакетов из NuGet для поддержки субъектов-служб в строках подключения с помощью следующего синтаксиса: app:AppID и пароля или cert:thumbprint.
В следующем примере значения appID и password используются для выполнения операции обновления модели базы данных.
string appId = "xxx";
string authKey = "yyy";
string connString = $"Provider=MSOLAP;Data source=powerbi://api.powerbi.com/v1.0/<tenant>/<workspacename>;Initial catalog=<datasetname>;User ID=app:{appId};Password={authKey};";
Server server = new Server();
server.Connect(connString);
Database db = server.Databases.FindByName("adventureworks");
Table tbl = db.Model.Tables.Find("DimDate");
tbl.RequestRefresh(RefreshType.Full);
db.Model.SaveChanges();