Объекты контекста Azure PowerShell

Azure PowerShell использует объекты контекста Azure PowerShell (контексты Azure) для хранения информации о подписке и аутентификации. При наличие нескольких подписок, контексты Azure позволяют выбрать подписку для запуска командлетов Azure PowerShell. Контексты Azure также используются для хранения данных для входа в несколько сеансов PowerShell и выполнения фоновых задач.

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

Обзор объектов контекста Azure

Контексты Azure — это объекты PowerShell, которые представляют активную подписку для выполнения команд и информацию об аутентификации, необходимую для подключения к облаку Azure. Благодаря контекстам Azure, Azure PowerShell не требуется повторная аутентификация учетной записи при каждом переключении между подписками. Контекст Azure состоит из:

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

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

При входе с помощью Connect-AzAccountдля подписки по умолчанию создается как минимум один контекст Azure. Объект, возвращаемый Connect-AzAccount является контекстом Azure по умолчанию, используемым до конца сеанса PowerShell.

Получение контекстов Azure

Доступные контексты Azure извлекаются с помощью командлета Get-AzContext. Список доступных контекстов с параметром ListAvailable :

Get-AzContext -ListAvailable

Или получите контекст по имени:

Get-AzContext -Name 'mycontext'

Имена контекстов могут отличаться от имен связанных подписок.

Внимание

Доступные контексты Azure не всегда являются доступными подписками. Контексты Azure представляют только локально хранимую информацию. Вы можете получить подписки с помощью командлета Get-AzSubscription.

Создание нового контекста Azure из сведений о подписке

Командлет Set-AzContext используется как для создания новых контекстов Azure, так и для их установки в качестве активного контекста. Самый простой способ создать новый контекст Azure — использовать существующие сведения о подписке. Командлет предназначен для получения объекта вывода из Get-AzSubscription в качестве переданного значения и настройки нового контекста Azure:

Get-AzSubscription -SubscriptionName 'MySubscriptionName' |
  Set-AzContext -Name 'MyContextName'

При необходимости укажите либо имя, либо идентификатор подписки и идентификатор клиента:

Set-AzContext -Name 'MyContextName' -Subscription 'MySubscriptionName' -Tenant '00000000-0000-0000-0000-000000000000'

Если параметр Name опущен, имя и идентификатор подписки используются в качестве имени контекста в формате "Имя подписки" (идентификатор подписки).

Изменение активного контекста Azure

Для изменения активного контекста Azure можно использовать как Set-AzContext, так и Select-AzContext. Как описано в разделе Создание нового контекста Azure, Set-AzContext создает новый контекст Azure для подписки, если он не существует, а затем делает этот контекст активным.

Select-AzContext следует использовать только с существующими контекстами Azure. Он работает аналогично Set-AzContext -Context, но предназначен для использования с конвейером:

Set-AzContext -Context $(Get-AzContext -Name 'mycontext') # Set a context with an inline Azure context object
Get-AzContext -Name 'mycontext' | Select-AzContext # Set a context with a piped Azure context object

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

Get-AzContext -Name 'mycontext' | Select-AzContext -Scope Process

Чтобы избежать переключения контекстов для всего сеанса PowerShell, команды Azure PowerShell с параметром AzContext можно выполнять в заданном контексте:

$context = Get-AzContext -Name "mycontext"
New-AzVM -Name ExampleVM -AzContext $context

Другое основное использование контекстов с командлетами Azure PowerShell — запуск фоновых команд. Дополнительные сведения о запуске заданий PowerShell с помощью Azure PowerShell см. в разделе Выполнение командлетов PowerShell Azure в заданиях PowerShell.

Сохранение контекстов Azure в сеансах PowerShell

По умолчанию контексты Azure сохраняются для использования между сеансами PowerShell. Это поведение можно изменить следующими способами:

  • Войдите, используя -Scope Process с помощью Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

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

  • Отключите автосохранение контекста Azure PowerShell с помощью командлета Disable-AzContextAutosave. Отключение автосохранения контекста не удаляет сохраненные токены. Чтобы узнать, как очистить сохраненную информацию о контексте Azure, см. раздел Удаление контекстов и учетных данных Azure.

  • Явное включение автосохранения контекста Azure можно включить с помощью командлета Enable-AzContextAutosave. С включенной функцией автосохранений контексты пользователя хранятся локально для последующих сеансов PowerShell.

  • Сохраните контексты вручную с помощью Save-AzContext для использования в будущих сеансах PowerShell, где их можно загрузить с помощью командлета Import-AzContext:

    Save-AzContext -Path current-context.json # Save the current context
    Save-AzContext -Profile $profileObject -Path other-context.json # Save a context object
    Import-AzContext -Path other-context.json # Load the context from a file and set it to the current context
    

Предупреждение

Отключение автосохранения контекста не удаляет сохраненную информацию контекста. Чтобы удалить сохраненную информацию, используйте командлет Clear-AzContext. Подробнее об удалении сохраненных контекстов см. раздел Удаление контекстов и учетных данных.

Каждая из этих команд поддерживает параметр Scope , который может применяться Process только к текущему выполняемому процессу. Например, чтобы убедиться, что вновь созданные контексты не сохраняются после выхода из сеанса PowerShell:

Disable-AzContextAutosave -Scope Process
$context2 = Set-AzContext -Subscription 'sub-id' -Tenant 'other-tenant'

Информация контекстов и токены хранятся в каталоге $env:USERPROFILE\.Azure в Windows и в $HOME/.Azure — на других платформах. Конфиденциальная информация, такая как идентификаторы подписок и идентификаторы арендаторов, может по-прежнему отображаться в сохраненной информации через журналы или сохраненные контексты. Чтобы узнать, как очистить сохраненную информацию, см. раздел Удаление контекстов и учетных данных.

Удаление контекстов Azure и сохраненных учетных данных

Для удаления контекстов и учетных данных Azure выполните следующие действия:

  • Выйдите из учетной записи с помощью командлета Disconnect-AzAccount. Используя учетную запись или контекст, можно выйти из любой учетной записи.

    Disconnect-AzAccount # Disconnect active account
    Disconnect-AzAccount -Username 'user@contoso.com' # Disconnect by account name
    
    Disconnect-AzAccount -ContextName 'subscription2' # Disconnect by context name
    Disconnect-AzAccount -AzureContext $contextObject # Disconnect using context object information
    

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

  • Используйте Clear-AzContext. Этот командлет всегда удаляет сохраненные контексты и маркеры проверки подлинности, а также обеспечивает выход.

  • Удаление контекста с помощью Remove-AzContext:

    Remove-AzContext -Name 'mycontext' # Remove by name
    Get-AzContext -Name 'mycontext' | Remove-AzContext # Remove by piping Azure context object
    

    При удалении активного контекста вы будете отключены от Azure и вам потребуется повторно выполнить проверку подлинности.Connect-AzAccount

См. также