Runbook Запуск Powershell от имени учетной записи Azure

У меня есть сценарий на виртуальной машине в подписке / rg, который запускает модуль ps под названием Qlik-Cli, он использует сертификат и логин.

Сертификат хранится в локальном хранилище для учетной записи службы, а не для выбора способа работы продукта. Мне нужно запустить этот модуль Runbook PowerShell.

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

Это то, что мы планируем запланировать, поэтому это должно быть сделано таким образом.

Как я могу запустить его таким образом, или это невозможно? Я не могу найти ни одного хорошего варианта при поиске в Google.

> Import-Module -Name Qlik-Cli
> [Net.ServicePointManager]::SecurityProtocol =
> [Net.SecurityProtocolType]::Tls12 $logpath =
> "E:\Tools\Scripts\log.txt" get-childitem cert:\currentuser\My\  |
> where {$_.Thumbprint -eq '"thumbprint"'} |
> Connect-Qlik "DNS" -UserName
> "user" -TrustAllCerts -verbose 4>&1 | Out-File
> -Append $logpath Start-QlikTask -id df9dfa2f-32ca-4db4-bdce-15ad924fd59f -verbose 4>&1 | Out-File -Append
> $logpath

Сценарий в модуле Runbook:

$ServicePrincipalConnection = Get-AutomationConnection -Name 'AzureRunAsConnection'
Add-AzAccount -ServicePrincipal -TenantId $ServicePrincipalConnection.TenantId  -ApplicationId $ServicePrincipalConnection.ApplicationId -CertificateThumbprint $ServicePrincipalConnection.CertificateThumbprint
$rgname ="Resource-Group"
$vmname ="Virtual machine name"
$ScriptToRun = "E:\Tools\Scripts\Tasktrigger.ps1"
Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1 
Invoke-AzVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
Remove-Item -Path ScriptToRun.ps1   

Когда я запускаю модуль Runbook, журналы говорят из сценария (локального сценария), что он не может найти сертификат, что неудивительно.

Необработанный вывод: найдено 0 сертификатов в хранилище текущего пользователя. Найдено 0 сертификатов в хранилище локального компьютера. Действительный сертификат не найден с использованием учетных данных Windows.


person Gatewarden    schedule 22.04.2021    source источник


Ответы (2)


Использовал код на Github для модуля Click-Cli, чтобы отследить сообщение об ошибке. Пришлось сменить сертификат и импортировать новый в личный / машинный магазин.

Также имя пользователя по умолчанию при запуске из-за пределов QlikServer - это domain \ Servername $, что означает, что вам необходимо изменить разрешения для учетной записи в QlikSense, чтобы позволить ей выполнять задачи.

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

person Gatewarden    schedule 27.04.2021

Модуль Qlik-CLI считывает сертификат client, QlikClient, из сертификата: \\ CurrentUser \ My.

Итак, если вы пытаетесь запустить сценарии Qlik-CLI от имени пользователя, отличного от учетной записи пользователя службы Qlik Sense (или на другом компьютере), вам необходимо войти в систему как учетная запись службы, экспортировать сертификат QlikClient, включая закрытый ключ, и установите его под пользователем, запустившим скрипт.

Аргумент -UserName предназначен только для того, чтобы сообщить Qlik, кем вы хотите быть, учитывая, что у вас есть сертификат в порядке.

Вкратце: запустите сценарий от имени пользователя службы Qlik. Это избавит вас от лишних хлопот. :)

person Vbakke    schedule 28.04.2021