Powershell - автоматическое подключение к службе Power BI без жесткого ввода пароля - PullRequest
1 голос
/ 07 мая 2020

У нас есть сценарий PowerShell для получения данных об активности Power BI (с помощью Get-PowerBIActivityEvent), и я пытался автоматизировать его, чтобы он мог получать эти данные ежедневно, используя автоматическую учетную запись. Проблема в том, что сценарий обязательно должен использовать командлет Connect-PowerBIServiceAccount, для которого требуются учетные данные. Я не хочу, чтобы пароли были жестко запрограммированы где-либо (очевидно), и в идеале я не хочу передавать его в скрипт в качестве параметра открытого текста в случае утечки памяти.

Я пробовал использовать SSIS в качестве механизма планирования, поскольку он позволяет использовать зашифрованные параметры в задачах сценария, но не может вызывать сценарий PS с параметром SecureString, поскольку пространство имен System.Management.Automation отсутствует в GA C (вызов из командной строки не будет ' это возможно). Я не верю, что планировщик задач может предложить необходимую функциональность.

Кто-нибудь знает какие-нибудь элегантные способы подключения к службе Power BI с использованием зашифрованных учетных данных?

Ответы [ 2 ]

2 голосов
/ 08 мая 2020

В документах Connect-PowerBIServiceAccount есть 2 варианта автоматического входа в систему:

  1. Использование -Credential, где вы передаете идентификатор клиента AAD как имя пользователя и секретный ключ приложения в качестве пароля

  2. Использование -CertificateThumbprint и -ApplicationId

Для обоих вариантов вам необходимо настроить стоимость услуги и добавить правильные разрешения. Я не буду вдаваться в подробности, как это настроить, но, скорее всего, вам потребуются (по крайней мере) следующие разрешения приложения:

Разрешения приложения Power BI

Я не совсем уверен, какие функции вам нужны в сценарии, но, по моему опыту, большинство случаев можно охватить запланированной задачей, поэтому приведенное ниже объяснение применимо к этому решению.

Как вы можете защитить учетные данные?

В зависимости от ваших предпочтений существует множество возможных решений. Я бы рассмотрел аутентификацию на основе сертификатов как более безопасную (сертификат доступен только текущему пользователю / всем пользователям аппарата).

Что важно при аутентификации на основе сертификатов - убедитесь, что сертификат доступен для учетная запись, на которой запущен сценарий (во многих случаях это служебная учетная запись, а не ваша учетная запись пользователя).

Как я могу защитить больше?

Если хотите, вы можете сохранить идентификатор приложения в виде защищенной строки (I нет SSIS для тестирования, поэтому я не уверен, есть ли какое-то обходное решение, чтобы заставить его работать) или используйте Export-CliXml. Они используют Windows Data Protection API (DPAPI), поэтому файл может быть расшифрован только той учетной записью, которая использовалась для шифрования.

Чтобы добавить еще один уровень безопасности (я даже не говорю о правильной настройке права доступа к файлам, как это очевидно), вы можете поместить файл в зашифрованную папку (возможно, у вас уже есть решение для шифрования диска, поэтому используйте его, если вы используете wi sh).

Вероятно, есть некоторые решения для еще большей защиты ключей, но они должны работать. Я использую другие модули Microsoft 365 с аналогичным подходом (Outlook, SharePoint PnP), и он работает достаточно хорошо.

ПРИМЕЧАНИЕ. Если вам нужно использовать учетную запись пользователя вместо субъекта-службы, убедитесь, что у вас есть MultiFactor. Аутентификация отключена в этой учетной записи для указанного c приложения.

0 голосов
/ 21 мая 2020

В соответствующей документации (https://docs.microsoft.com/en-us/power-bi/developer/embedded/embed-service-principal) указано, что API-интерфейсы администратора (т. Е. Те, которые обслуживаются через Get-PowerBiActivityEvent) в настоящее время не поддерживают принципалов службы. Это означает, что в настоящее время невозможно использовать зарегистрированное приложение для запуска этих командлетов без присмотра.

На данный момент открыт запрос функции, чтобы предоставить это: https://ideas.powerbi.com/forums/265200-power-bi-ideas/suggestions/39641572-need-service-principle-support-for-admin-api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...