Вход с помощью Azure PowerShell

Azure PowerShell поддерживает несколько методов проверки подлинности. Проще всего приступить к работе можно с помощью оболочки Azure Cloud Shell, которая автоматически выполняет вход в вашу учетную запись. Если используется локальная установка, вы можете выполнить вход в интерактивном режиме с помощью браузера. При написании скриптов автоматизации рекомендуется использовать субъект-службу с необходимыми разрешениями. Максимально ограничьте разрешения на вход для своего варианта использования, чтобы обеспечить защиту ресурсов Azure.

Если у вас есть доступ более чем к одной подписке, вы входите в первую, которую предлагает Azure. Команды выполняются для этой подписки по умолчанию. Чтобы изменить активную подписку для сеанса, используйте командлет Set-AzContext. Чтобы изменить активную подписку и сохранить ее между сеансами в той же системе, используйте командлет Select-AzContext.

Важно!

Одни учетные данные можно использовать в нескольких сеансах PowerShell, пока вы остаетесь в системе. Дополнительные сведения см. в статье Использование учетных данных пользователя в разных сеансах PowerShell.

Интерактивный вход

Чтобы выполнить вход в интерактивном режиме, используйте командлет Connect-AzAccount.

Connect-AzAccount

Начиная с версии модуля Az PowerShell 5.0.0, этот командлет по умолчанию представляет интерактивный запрос на вход через браузер. Вы можете указать параметр UseDeviceAuthentication для получения строки маркера. Ранее в PowerShell версии 6 и выше этот параметр использовался по умолчанию.

Важно!

Авторизация с учетными данными (на основе имени пользователя и пароля) была отключена в Azure PowerShell из-за изменений в способах авторизации Active Directory и по соображениям безопасности. Если вы используете авторизацию с учетными данными, чтобы автоматизировать процесс, создайте субъект-службу.

Используйте командлет Get-AzContext, чтобы сохранить идентификатор арендатора в переменной, которая будет использоваться в следующих двух разделах этой статьи.

$tenantId = (Get-AzContext).Tenant.Id

Вход с использованием субъекта-службы

Субъекты-службы не являются интерактивными учетными записями Azure. Как и для других учетных записей пользователей, для управления их разрешениями используется Azure Active Directory. Предоставив субъекту-службе только необходимые разрешения, вы обеспечите защиту скриптов автоматизации.

Сведения о том, как создать субъект-службу для использования с помощью Azure PowerShell, см. в этой статье.

Чтобы выполнить вход с помощью субъекта-службы, используйте аргумент -ServicePrincipal с командлетом Connect-AzAccount. Также потребуется идентификатор приложения субъекта-службы, учетные данные для входа и сопоставление идентификатора клиента с субъектом-службой. Способ входа с использованием субъекта-службы зависит от способа аутентификации: на основе пароля или сертификата.

Аутентификация на основе пароля

Создайте субъект-службу для использования в примерах в этом разделе. См. статью Создание субъекта-службы Azure с помощью Azure PowerShell.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Чтобы получить учетные данные субъекта-службы как соответствующий объект, используйте командлет Get-Credential. Этот командлет отображает запрос на ввод имени пользователя и пароля. Используйте значение applicationID субъекта-службы в качестве имени пользователя и преобразуйте значение secret в обычный текст для пароля.

# Retrieve the plain text password for use with `Get-Credential` in the next command.
$sp.secret | ConvertFrom-SecureString -AsPlainText

$pscredential = Get-Credential -UserName $sp.ApplicationId
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

В сценариях автоматизации вам нужно создать учетные данные на основе значений applicationId и secretсубъекта-службы:

$pscredential = New-Object -TypeName System.Management.Automation.PSCredential($sp.ApplicationId, $sp.Secret)
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

При автоматизации подключений субъекта-службы обязательно придерживайтесь рекомендаций по использованию паролей.

Аутентификация на основе сертификата

Для аутентификации на основе сертификата обязательно, чтобы среда Azure PowerShell могла извлекать данные из локального хранилища сертификатов по отпечатку сертификата.

Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>

При использовании субъекта-службы вместо зарегистрированного приложения добавьте аргумент -ServicePrincipal и предоставьте идентификатор приложения субъекта-службы в качестве значения параметра -ApplicationId.

Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>

В PowerShell 5.1 проверять и администрировать хранилище сертификатов можно с помощью модуля PKI. В PowerShell версии 6.х и выше это не настолько просто. Приведенные ниже скрипты демонстрируют, как импортировать существующий сертификат в хранилище сертификатов, к которому имеет доступ PowerShell.

Импорт сертификата в PowerShell 5.1

# Import a PFX
$credentials = Get-Credential -Message "Provide PFX private key password"
Import-PfxCertificate -FilePath <path to certificate> -Password $credentials.Password -CertStoreLocation cert:\CurrentUser\My

Импорт сертификата в PowerShell версии 6.х и выше

# Import a PFX
$storeName = [System.Security.Cryptography.X509Certificates.StoreName]::My
$storeLocation = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $storeLocation)
$certPath = <path to certificate>
$credentials = Get-Credential -Message "Provide PFX private key password"
$flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certPath, $credentials.Password, $flag)
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$store.Add($Certificate)
$store.Close()

Вход с использованием управляемого удостоверения

Управляемые удостоверения — это функция Azure Active Directory. Они представляют собой субъекты-службы, назначенные ресурсам в Azure. Вы можете использовать субъект-службу управляемых удостоверений для входа и получения маркера доступа только для приложений, обеспечив возможность обращения к другим ресурсам. Управляемые удостоверения доступны только в ресурсах в облаке Azure.

В этом примере для подключения используется управляемое удостоверение среды узла. Например, при выполнении в VirtualMachine с назначенным Управляемым удостоверением службы код может обеспечивать вход с помощью назначенного удостоверения.

 Connect-AzAccount -Identity

Вход с использованием нестандартного клиента или в качестве поставщика облачных решений (CSP)

Если ваша учетная запись связана с несколькими арендаторами, для входа требуется указать параметр -Tenant при подключении. Этот параметр работает с любым методом входа. При входе в систему в качестве значения для этого параметра можно указать идентификатор объекта Azure клиента (идентификатор клиента) или полное доменное имя клиента.

Если вы являетесь поставщиком облачных решений, значением для -Tenantдолжен быть идентификатор клиента.

Connect-AzAccount -Tenant 'xxxx-xxxx-xxxx-xxxx'

Вход в другое облако

Облачные службы Azure предоставляют среды, которые соответствуют региональным законам об обработке данных. Для учетных записей в региональном облаке нужно при входе указать среду с помощью аргумента -Environment. Этот параметр работает с любым методом входа. Например, если ваша учетная запись находится в облаке для Китая, укажите следующее:

Connect-AzAccount -Environment AzureChinaCloud

Следующая команда позволяет получить список доступных сред:

Get-AzEnvironment | Select-Object -Property Name