PowerShell 세션간에 사용자 자격 증명 유지Persist user credentials across PowerShell sessions

Azure PowerShell은 Azure Context Autosave라고 하는 기능을 제공하며, 이는 다음과 같은 기능을 제공합니다.Azure PowerShell offers a feature called Azure Context Autosave, which gives the following features:

  • 새 PowerShell 세션에서 다시 사용하기 위한 로그인 정보 보존.Retention of sign-in information for reuse in new PowerShell sessions.
  • 장기 실행 cmdlet을 실행하기 위한 더 쉬운 백그라운드 작업 사용.Easier use of background tasks for executing long-running cmdlets.
  • 별도 로그인 없이 계정, 구독 및 환경 간 전환.Switch between accounts, subscriptions, and environments without a separate sign-in.
  • 동일한 PowerShell 세션에서 다른 자격 증명 및 구독을 동시에 사용하여 작업 실행.Execution of tasks using different credentials and subscriptions, simultaneously, from the same PowerShell session.

정의된 Azure 컨텍스트Azure contexts defined

Azure 컨텍스트는 Azure PowerShell cmdlet의 대상을 정의하는 정보 집합입니다.An Azure context is a set of information that defines the target of Azure PowerShell cmdlets. 컨텍스트는 5개의 부분으로 구성됩니다.The context consists of five parts:

  • 계정 - Azure와의 통신을 인증하는 데 사용되는 사용자 이름 또는 서비스 주체An Account - the UserName or Service Principal used to authenticate communications with Azure
  • 구독 - 동작하는 리소스를 포함하는 Azure 구독.A Subscription - The Azure Subscription with the Resources being acted upon.
  • 테넌트 - 구독을 포함하는 Azure Active Directory 테넌트.A Tenant - The Azure Active Directory tenant that contains your subscription. 테넌트는 ServicePrincipal 인증에서 더 중요합니다.Tenants are more important to ServicePrincipal authentication.
  • 환경 - 목표가 되는 특정 Azure Cloud(보통 Azure 전역 클라우드).An Environment - The particular Azure Cloud being targeted, usually the Azure global Cloud. 그러나 환경 설정을 사용하여 대상 국가, 정부 및 온-프레미스(Azure Stack) 클라우드도 대상으로 지정할 수 있습니다.However, the environment setting allows you to target National, Government, and on-premises (Azure Stack) clouds as well.
  • 자격 증명 - Azure에서 사용자 ID를 확인하고 Azure의 리소스에 액세스하기 위한 사용자의 권한 부여를 확인하는 데 사용되는 정보Credentials - The information used by Azure to verify your identity and confirm your authorization to access resources in Azure

이전 릴리스에서는 새 PowerShell 세션을 열 때마다 Azure 컨텍스트를 만들어야 했습니다.In previous releases, an Azure Context had to be created each time you opened a new PowerShell session. Azure PowerShell v4.4.0부터는 새 PowerShell 세션을 열 때마다 Azure 컨텍스트를 자동으로 저장할 수 있습니다.Beginning with Azure PowerShell v4.4.0, Azure Contexts can automatically be saved whenever opening a new PowerShell session.

다음 로그인을 위해 컨텍스트를 자동으로 저장Automatically save the context for the next sign-in

버전 6.3.0 이상에서 Azure PowerShell은 세션 간에 자동으로 컨텍스트 정보를 유지합니다.In versions 6.3.0 and later, Azure PowerShell retains your context information automatically between sessions. PowerShell이 사용자의 컨텍스트 및 자격 증명을 기억하지 않도록 설정하려면 Disable-AzureRmContextAutoSave를 사용합니다.To set PowerShell to forget your context and credentials, use Disable-AzureRmContextAutoSave. PowerShell 세션을 열 때마다 Azure에 로그인해야 합니다.You'll need to sign in to Azure every time you open a PowerShell session.

Azure PowerShell이 PowerShell 세션을 닫은 후 사용자의 컨텍스트를 기억하도록 하려면 Enable-AzureRmContextAutosave를 사용합니다.To allow Azure PowerShell to remember your context after the PowerShell session is closed, use Enable-AzureRmContextAutosave. 컨텍스트 및 자격 증명 정보는 사용자 디렉터리(%AppData%\Roaming\Windows Azure PowerShell)에 숨겨진 특수 폴더에 자동으로 저장됩니다.Context and credential information are automatically saved in a special hidden folder in your user directory (%AppData%\Roaming\Windows Azure PowerShell). 새로운 PowerShell 세션마다 마지막 세션에 사용된 컨텍스트가 대상으로 지정됩니다.Each new PowerShell session targets the context used in your last session.

Azure 컨텍스트를 관리할 수 있는 cmdlet을 사용하면 세분화된 제어가 가능합니다.The cmdlets that allow you to manage Azure contexts also allow you fine grained control. 변경 내용을 현재 PowerShell 세션(Process 범위)에만 적용하거나 또는 모든 PowerShell 세션(CurrentUser 범위)에 적용하려는 경우가 있습니다.If you want changes to apply only to the current PowerShell session (Process scope) or every PowerShell session (CurrentUser scope). 이러한 옵션은 컨텍스트 범위 사용에서 자세히 설명합니다.These options are discussed in mode detail in Using Context Scopes.

Azure PowerShell cmdlet을 백그라운드 작업으로 실행Running Azure PowerShell cmdlets as background jobs

Azure 컨텍스트 자동 저장 기능을 사용하면 PowerShell 백그라운드 작업으로 컨텍스트를 공유할 수 있습니다.The Azure Context Autosave feature also allows you to share you context with PowerShell background jobs. PowerShell을 사용하면 장기 실행 작업을 작업이 완료될 때까지 기다리지 않고 백그라운드 작업으로 시작하고 모니터링할 수 있습니다.PowerShell allows you to start and monitor long-executing tasks as background jobs without having to wait for the tasks to complete. 두 가지 방법으로 백그라운드 작업으로 자격 증명을 공유할 수 있습니다.You can share credentials with background jobs in two different ways:

  • 컨텍스트를 인수로 전달Passing the context as an argument

    대부분 AzureRM cmdlet을 사용하면 cmdlet에 컨텍스트를 매개 변수로 전달할 수 있습니다.Most AzureRM cmdlets allow you to pass the context as a parameter to the cmdlet. 다음 예제와 같이 백그라운드 작업으로 컨텍스트를 전달할 수 있습니다.You can pass a context to a background job as shown in the following example:

    PS C:\> $job = Start-Job { param ($ctx) New-AzureRmVm -AzureRmContext $ctx [... Additional parameters ...]} -ArgumentList (Get-AzureRmContext)
    
  • 자동 저장이 활성화된 기본 컨텍스트 사용Using the default context with Autosave enabled

    컨텍스트 자동 저장을 사용하도록 설정한 경우 백그라운드 작업은 자동으로 기본 저장된 기본 컨텍스트를 사용합니다.If you have enabled Context Autosave, background jobs automatically use the default saved context.

    PS C:\> $job = Start-Job { New-AzureRmVm [... Additional parameters ...]}
    

백그라운드 작업의 결과를 알아야 하는 경우 Get-Job을 사용하여 작업 상태를 확인하고 Wait-Job을 사용하여 작업이 완료될 때까지 대기합니다.When you need to know the outcome of the background task, use Get-Job to check the job status and Wait-Job to wait for the Job to complete. 백그라운드 작업의 출력을 캡처하거나 표시하려면 Receive-Job을 사용합니다.Use Receive-Job to capture or display the output of the background job. 자세한 내용은 about_Jobs를 참조하세요.For more information, see about_Jobs.

컨텍스트 생성, 선택, 이름 바꾸기 및 제거Creating, selecting, renaming, and removing contexts

컨텍스트를 작성하려면 Azure에 로그인해야 합니다.To create a context, you must be signed in to Azure. Connect-AzureRmAccount cmdlet(또는 해당 별칭인 Login-AzureRmAccount)은 Azure PowerShell cmdlet에서 사용하는 기본 컨텍스트를 설정하고, 사용자는 이를 통해 자격 증명에서 허용하는 모든 테넌트 또는 구독에 액세스할 수 있습니다.The Connect-AzureRmAccount cmdlet (or its alias, Login-AzureRmAccount) sets the default context used by Azure PowerShell cmdlets, and allows you to access any tenants or subscriptions allowed by your credentials.

로그인한 후 새 컨텍스트를 추가하려면 Set-AzureRmContext(또는 해당 별칭인 Select-AzureRmSubscription)를 사용합니다.To add a new context after sign-in, use Set-AzureRmContext (or its alias, Select-AzureRmSubscription).

PS C:\> Set-AzureRMContext -Subscription "Contoso Subscription 1" -Name "Contoso1"

앞의 예제는 현재 자격 증명을 사용하여 새 컨텍스트 대상인 ‘Contoso 구독 1’을 추가합니다.The previous example adds a new context targeting 'Contoso Subscription 1' using your current credentials. 새 컨텍스트는 ‘Contoso1’이라고 합니다.The new context is named 'Contoso1'. 컨텍스트에 대한 이름을 제공하지 않은 경우 계정 ID 및 구독 ID를 사용하는 기본 이름이 사용됩니다.If you don't provide a name for the context, a default name, using the account ID and subscription ID is used.

기존 컨텍스트 이름을 바꾸려면 Rename-AzureRmContext cmdlet을 사용합니다.To rename an existing context, use the Rename-AzureRmContext cmdlet. 예: For example:

PS C:\> Rename-AzureRmContext '[user1@contoso.org; 123456-7890-1234-564321]` 'Contoso2'

이 예제에서는 자동 이름 [user1@contoso.org; 123456-7890-1234-564321]을 사용하는 컨텍스트 이름을 간단한 이름인 ‘Contoso2’로 바꿉니다.This example renames the context with automatic name [user1@contoso.org; 123456-7890-1234-564321] to the simple name 'Contoso2'. 또한 컨텍스트를 관리하는 cmdlet은 신속하게 컨텍스트를 선택할 수 있도록 탭 완성 기능을 사용합니다.Cmdlets that manage contexts also use tab completion, allowing you to quickly select the context.

마지막으로, 컨텍스트를 제거하려면 Remove-AzureRmContext cmdlet을 사용합니다.Finally, to remove a context, use the Remove-AzureRmContext cmdlet. 예: For example:

PS C:\> Remove-AzureRmContext Contoso2

‘Contoso2’로 명명된 컨텍스트를 잊었습니다.Forgets the context that was named 'Contoso2'. Set-AzureRmContext를 사용하여 나중에 다시 이 컨텍스트를 만들 수 있습니다.You can recreate this context using Set-AzureRmContext

자격 증명 제거Removing credentials

Disconnect-AzureRmAccount(Logout-AzureRmAccount라고도 함)를 사용하여 사용자 또는 서비스 주체에 대한 모든 자격 증명 및 연결된 컨텍스트를 제거할 수 있습니다.You can remove all credentials and associated contexts for a user or service principal using Disconnect-AzureRmAccount (also known as Logout-AzureRmAccount). 매개 변수 없이 실행될 때 Disconnect-AzureRmAccount cmdlet은 현재 컨텍스트에서 사용자 또는 서비스 주체에 연결된 모든 자격 증명 및 컨텍스트를 제거합니다.When executed without parameters, the Disconnect-AzureRmAccount cmdlet removes all credentials and contexts associated with the User or Service Principal in the current context. 사용자 이름, 서비스 주체 이름 또는 컨텍스트를 특정 보안 주체를 대상으로 전달할 수 있습니다.You may pass in a Username, Service Principal Name, or context to target a particular principal.

Disconnect-AzureRmAccount user1@contoso.org

컨텍스트 범위 사용Using context scopes

경우에 따라 다른 세션에 영향을 주지 않고 PowerShell 세션에서 컨텍스트를 선택, 변경 또는 제거할 수도 있습니다.Occasionally, you may want to select, change, or remove a context in a PowerShell session without impacting other sessions. 컨텍스트 cmdlet의 기본 동작을 변경하려면 Scope 매개 변수를 사용합니다.To change the default behavior of context cmdlets, use the Scope parameter. Process 범위는 현재 세션에만 적용되도록 하여 기본 동작을 재정의합니다.The Process scope overrides the default behavior by making it apply only for the current session. 반대로 CurrentUser 범위는 현재 세션만이 아닌 모든 세션의 컨텍스트를 변경합니다.Conversely CurrentUser scope changes the context in all sessions, instead of just the current session.

예를 들어, 다른 창에 영향을 주지 않고 현재 PowerShell 세션의 기본 컨텍스트 또는 다음에 세션을 열 때 사용되는 컨텍스트를 변경하려면 다음을 사용합니다.As an example, to change the default context in the current PowerShell session without impacting other windows, or the context used the next time a session is opened, use:

PS C:\> Select-AzureRmContext Contoso1 -Scope Process

컨텍스트 자동 저장 설정이 기억되는 방식How the context autosave setting is remembered

컨텍스트 자동 저장 설정은 사용자 Azure PowerShell 디렉터리(%AppData%\Roaming\Windows Azure PowerShell)에 저장됩니다.The context AutoSave setting is saved to the user Azure PowerShell directory (%AppData%\Roaming\Windows Azure PowerShell). 일부 종류의 컴퓨터 계정은 이 디렉터리에 액세스하지 못할 수도 있습니다.Some kinds of computer accounts may not have access to this directory. 이러한 시나리오에서 환경 변수를 사용할 수 있습니다.For such scenarios, you can use the environment variable

$env:AzureRmContextAutoSave="true" | "false"

‘true’로 설정하면 컨텍스트가 자동으로 저장됩니다.When set to 'true', the context is automatically saved. ‘false’로 설정하면 컨텍스트가 저장되지 않습니다.If set to 'false', the context isn't saved.

AzureRM.Profile 모듈에 대한 변경 내용Changes to the AzureRM.Profile module

컨텍스트 관리를 위한 새 cmdletNew cmdlets for managing context

기존 프로필 cmdlet에 대한 변경 내용Changes to existing profile cmdlets

  • Add-AzureRmAccount - 프로세스 또는 현재 사용자로 로그인의 범위를 지정할 수 있습니다.Add-AzureRmAccount - Allow scoping of the sign-in to the process or the current user. 인증 후 기본 컨텍스트의 이름을 지정할 수 있습니다.Allow naming the default context after authentication.
  • Import-AzureRmContext - 프로세스 또는 현재 사용자로 로그인의 범위를 지정할 수 있습니다.Import-AzureRmContext - Allow scoping of the sign-in to the process or the current user.
  • Set-AzureRmContext - 기존의 명명된 컨텍스트를 선택하고, 프로세스 또는 현재 사용자로 범위를 변경할 수 있습니다.Set-AzureRmContext - Allow selection of existing named contexts, and scope changes to the process or current user.