Как подключиться к Azure через модули PowerShell, используя субъект-службу зарегистрированного приложения?
Мне нужно создать сценарий powershell, который запрашивает ресурсы Azure. У меня есть регистрация приложения.
Регистрация приложений дает нам следующую информацию:
# --- APP REGISTRATION OUTPUT
# appId = "***** APP ID *******"
# displayName = "**** APP Name **** "
# password = "***** SECRET *******"
# tenant = "**** TENANT ID *****"
Мне нужно использовать эти учетные данные для доступа к Azure через сценарий PowerShell.
Я пробовал следующее:
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ApplicationId, $SecuredPassword
Connect-AzAccount -ServicePrincipal -TenantId $TenantId -Credential $Credential
Но я получаю сообщение об ошибке:
… Account -ServicePrincipal -TenantId $TenantId -Credential $Credential
| ~~~~~~~~~~~
| Cannot bind argument to parameter 'Credential' because it is null.
Я не думаю, что то, что я делаю, ненормально. Регистрация приложений дает нам возможность разрешить приложениям (приложениям PowerShell!) взаимодействовать с данным арендатором. Или я ошибаюсь?
Я не хочу, чтобы приложение входило в систему каждый раз, используя учетную запись (т.е. чтобы окно браузера открывалось всякий раз, когда запускается скрипт).
Что я делаю не так?
2 ответа
Я воспроизвел в своей среде, и у меня сработал нижеприведенный скрипт:
$appId ="53f3ed85-70c1c2d4aeac"
$pswd="55z8Q~_N9SRajza8R"
$t = "72f988bf-cd011db47"
[ValidateNotNullOrEmpty()]$pswd="55z8BU4oik.kVrZWyaK8R" $sp = ConvertTo-SecureString -String $pswd -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $appId, $sp
Connect-AzAccount -ServicePrincipal -TenantId $t -Credential $Credential
Выход:
Вам нужно преобразовать секретное значение (пароль) в защищенный пароль, как указано выше, тогда он будет работать так, как работал мой.
Вы пропустили преобразование пароля в защищенную строку. Вы можете убедиться в этом в своем$credential
переменная.
$ApplicationId = "0000-0000-0000-0000"
$Password = "000000000000000"
$TenantId = "0000-0000-000-000"
$subscriptionId = "0000-0000-0000-0000"
$SecuredPassword = ConvertTo-SecureString -AsPlainText $Password -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ApplicationId, $SecuredPassword
Connect-AzAccount -ServicePrincipal -TenantId $TenantId -Credential $Credential
$sub = Get-AzSubscription -SubscriptionId $subscriptionId
Set-AzContext -Subscription $sub