Compartilhar via


Manter credenciais do usuário entre as sessões do PowerShell

Aviso

O módulo PowerShell do AzureRM foi oficialmente preterido a partir de 29 de fevereiro de 2024. Os usuários são aconselhados a migrar do AzureRM para o módulo do Az PowerShell para garantir o suporte e as atualizações contínuas.

Embora o módulo AzureRM ainda possa funcionar, ele não tem suporte ou será mantido, colocando qualquer uso contínuo a critério e risco do usuário. Consulte nossos recursos de migração para obter diretrizes sobre a transição para o módulo Az.

O Azure PowerShell oferece um recurso chamado Salvamento Automático do contexto do Azure, que oferece os seguintes recursos:

  • Retenção das informações de conexão para a reutilização em novas sessões do PowerShell.
  • Facilitar o uso de tarefas em segundo plano para executar os cmdlets de execução longa.
  • Alterne contas, assinaturas e ambientes sem usar credenciais separadas.
  • Execução de tarefas usando credenciais e assinaturas diferentes, simultaneamente, a partir da mesma sessão do PowerShell.

Contextos do Azure definidos

Um contexto do Azure é um conjunto de informações que define o destino de cmdlets do Azure PowerShell. O contexto consiste em cinco partes:

  • Uma Conta - a entidade de serviço ou o nome de usuário usado para autenticar a comunicação com o Azure
  • Uma Assinatura - a assinatura do Azure com os recursos que estão sendo tratados.
  • Um locatário: o locatário o Microsoft Entra que contém sua assinatura. Os Locatários são mais importantes para a autenticação ServicePrincipal.
  • Um Ambiente - a nuvem de destino específica do Azure, normalmente a nuvem global do Azure. No entanto, a configuração do ambiente também permite usar nuvens nacionais, governamentais e locais (Azure Stack) como destino.
  • Credenciais - as informações usadas pelo Azure para verificar sua identidade e confirmar sua autorização para acessar recursos no Azure

Em versões anteriores, um Contexto do Azure precisava ser criado sempre que você abria uma nova sessão do PowerShell. A partir do Azure PowerShell v4.4.0, os Contextos do Azure podem ser salvos automaticamente sempre que uma nova sessão do PowerShell for aberta.

Salvar automaticamente o contexto para a próxima conexão

Nas versões 6.3.0 e posteriores, o Azure PowerShell retém suas informações do contexto automaticamente entre as sessões. Para configurar o PowerShell para esquecer o contexto e as credenciais, use Disable-AzureRmContextAutoSave. Você precisará entrar no Azure sempre que abrir uma sessão do PowerShell.

Para permitir que o Azure PowerShell se lembre do seu contexto depois que a sessão do PowerShell for fechada, use Enable-AzureRmContextAutosave. As informações de contexto e as credenciais são salvas automaticamente em uma pasta oculta especial no diretório de usuário (%AppData%\Roaming\Windows Azure PowerShell). Cada nova sessão do PowerShell terá como alvo o contexto usado na última sessão.

Os cmdlets que permitem gerenciar contextos do Azure também permitem um controle refinado. Se quiser que as alterações sejam aplicadas somente à sessão atual do PowerShell (escopo Process) ou em cada sessão do PowerShell (escopo CurrentUser). Essas opções são discutidas em detalhes em Usar Escopos de Contexto.

Executar os cmdlets do Azure PowerShell como trabalhos em segundo plano

O recurso de Salvamento Automático de Contexto do Azure também permite compartilhar seu contexto com trabalhos em segundo plano do PowerShell. O PowerShell permite iniciar e monitorar tarefas de execução longa como trabalhos em segundo plano sem a necessidade de aguardar a conclusão das tarefas. Você pode compartilhar as credenciais com trabalhos em segundo plano de duas maneiras diferentes:

  • Transmitir o contexto como um argumento

    A maioria dos cmdlets do AzureRM permite passar o contexto como um parâmetro para o cmdlet. Você pode passar um contexto para um trabalho em segundo plano, conforme mostrado no exemplo a seguir:

$job = Start-Job { param ($ctx) New-AzureRmVm -AzureRmContext $ctx [... Parâmetros adicionais ...]} -ArgumentList (Get-AzureRmContext)


- Using the default context with Autosave enabled

If you have enabled **Context Autosave**, background jobs automatically use the default saved
context.

```powershell
$job = Start-Job { New-AzureRmVm [... Additional parameters ...]}

Quando precisar saber o resultado da tarefa em segundo plano, use Get-Job para verificar o status do trabalho e Wait-Job para aguardar a conclusão do trabalho. Use Receive-Job para capturar ou exibir a saída do trabalho em segundo plano. Para obter mais informações, consulte about_Jobs.

Criando, selecionando, renomeando e removendo contextos

Para criar um contexto, você deve entrar no Azure. O cmdlet Connect-AzureRmAccount (ou seu alias, Login-AzureRmAccount) define o contexto padrão usado pelos cmdlets do Azure PowerShell e deixa que você acesse qualquer locatário ou assinatura permitida por suas credenciais.

Para adicionar um novo contexto após a conexão, use Set-AzureRmContext (ou seu alias, Select-AzureRmSubscription).

Set-AzureRMContext -Subscription 'Contoso Subscription 1' -Name 'Contoso1'

O exemplo anterior adiciona um novo contexto com "Assinatura Contoso 1" como destino usando suas credenciais atuais. O novo contexto é denominado "Contoso1". Se você não fornecer um nome para o contexto, será usado um nome padrão usando a ID da conta e a ID da assinatura.

Para renomear um contexto já existente, use o cmdlet Rename-AzureRmContext. Por exemplo:

Rename-AzureRmContext '[user1@contoso.org; 123456-7890-1234-564321]' 'Contoso2'

Este exemplo renomeia o contexto com o nome automático [user1@contoso.org; 123456-7890-1234-564321] por um nome simples nome "Contoso2". Os cmdlets que gerenciam contextos também usam o preenchimento de guia e isso permite escolher rapidamente o contexto.

E, por último, para remover um contexto, use o cmdlet Remove-AzureRmContext. Por exemplo:

Remove-AzureRmContext Contoso2

Você se esquece do contexto que foi nomeado "Contoso2". É possível recriar este contexto usando Set-AzureRmContext

Removendo credenciais

Você pode remover todas as credenciais e contextos associados de um usuário ou entidade de serviço usando Disconnect-AzureRmAccount (também conhecido como Logout-AzureRmAccount). Quando executado sem parâmetros, o cmdlet Disconnect-AzureRmAccount remove todas as credenciais e contextos associados ao usuário ou entidade de serviço no contexto atual. Você pode passar um Nome de Usuário, o Nome da Entidade de Serviço ou o Contexto para uma determinada entidade de destino.

Disconnect-AzureRmAccount user1@contoso.org

Usando escopos de contexto

Ocasionalmente, convém selecionar, alterar ou remover um contexto em uma sessão do PowerShell sem afetar outras sessões. Para alterar o comportamento padrão dos cmdlets de contexto, use o parâmetro Scope. O escopo Process substitui o comportamento padrão aplicando-o apenas à sessão atual. Por outro lado, o escopo CurrentUser altera o contexto em todas as sessões, em vez de apenas a sessão atual.

Por exemplo, para alterar o contexto padrão na sessão atual do PowerShell sem afetar outras janelas ou o contexto usado na próxima vez em que uma sessão for aberta, use:

Select-AzureRmContext Contoso1 -Scope Process

Como a configuração de salvamento automático de contexto é lembrada

A configuração de Salvamento Automático de contexto é salva no diretório do usuário do Azure PowerShell (%AppData%\Roaming\Windows Azure PowerShell). Alguns tipos de contas de computador podem não ter acesso a esse diretório. Para esses cenários, você pode usar a variável de ambiente

$env:AzureRmContextAutoSave=$true

Quando definido como $true, o contexto será salvo automaticamente. Se definido como $false, o contexto não será salvo.

Alterações no módulo AzureRM.Profile

Novos cmdlets para gerenciar contextos

Alterações em cmdlets de perfil existentes

  • Add-AzureRmAccount: permite definir o escopo da entrada para o processo ou para o usuário atual. Permite nomear o contexto padrão após a autenticação.
  • Import-AzureRmContext: permite a definição do escopo da entrada para o processo ou para o usuário atual.
  • Set-AzureRmContext: permite a seleção de contextos nomeados existentes e as alterações de escopo no processo ou no usuário atual.