Поделиться через


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

Azure PowerShell uses Azure PowerShell context objects (Azure contexts) to hold subscription and authentication information. If you have access to multiple subscriptions, Azure contexts let you select the subscription to run Azure PowerShell cmdlets on. Контексты Azure также используются для хранения сведений о входе в несколько сеансов PowerShell и выполнения фоновых задач.

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

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

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

  • The account that was used to sign in to Azure with Connect-AzAccount. Azure contexts treat users, application IDs, and service principals the same from an account perspective.
  • The active subscription, a service agreement with Microsoft to create and run Azure resources, which are associated with a tenant. Tenants are often referred to as organizations in documentation or when working with Microsoft Entra.
  • Ссылка на кэш токенов — сохраненный токен аутентификации для доступа к Azure. The context autosave settings determine where the token is stored and how long it persists.

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

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

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

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

Get-AzContext -ListAvailable

Or get a context by name:

Get-AzContext -Name MyContextName

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

Get-AzContext -ListAvailable | Select-Object -Property *

Это важно

The available Azure contexts aren't always your available subscriptions. Контексты Azure представляют только локально хранимую информацию. Вы можете получить подписки, используя командлет Get-AzSubscription.

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

Командлет Set-AzContext используется для создания новых контекстов Azure и установки их в качестве активного контекста. Самый простой способ создать новый контекст Azure — использовать существующую информацию о подписке. The Set-AzContext cmdlet is designed to take the output object from Get-AzSubscription as a piped value and configure a new Azure context:

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

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

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

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

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

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

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

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

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

Get-AzContext -Name MyContextName | Select-AzContext -Scope Process

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

$context = Get-AzContext -Name MyContextName
New-AzVM -Name ExampleVM -AzContext $context

Другое основное использование контекстов с командлетами Azure PowerShell — выполнение фоновых команд. To learn more about running PowerShell Jobs using Azure PowerShell, see Run Azure PowerShell cmdlets in PowerShell Jobs.

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

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

  • Войдите с использованием -Scope Process и Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

    The Azure context returned as part of this sign-in is valid for the current session only and aren't saved automatically, regardless of the Azure PowerShell context autosave setting.

  • Отключите автосохранение контекста в 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
    Import-AzContext -Path other-context.json # Load the context from a file and set it to the current context
    

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

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

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

Disable-AzContextAutosave -Scope Process
Set-AzContext -Subscription 'Subscription ID or Name' -Tenant 00000000-0000-0000-0000-000000000000

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

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

Чтобы очистить контексты и учетные данные Azure, выполните приведенные ниже действия.

  • Выйдите из учетной записи при помощи Disconnect-AzAccount. You can sign out of any account either by account or context:

    Disconnect-AzAccount # Disconnect active account
    Disconnect-AzAccount -Username '[email protected]' # Disconnect by account name
    Disconnect-AzAccount -ContextName MyContextName # Disconnect by context name
    
    $context = Get-AzContext
    Disconnect-AzAccount -AzureContext $context # Disconnect using context object information
    

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

  • Используйте Clear-AzContext. This cmdlet always removes stored contexts and authentication tokens and signs you out.

  • Remove a context with Remove-AzContext:

    Remove-AzContext -Name MyContextName # Remove by name
    Get-AzContext -Name MyContextName | Remove-AzContext # Remove by piping an Azure context object
    

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

См. также