Azure PowerShell 컨텍스트 개체

Azure PowerShell은 Azure PowerShell 컨텍스트 개체(Azure 컨텍스트)를 사용하여 구독 및 인증 정보를 보유합니다. 둘 이상의 구독이 있는 경우 Azure 컨텍스트를 사용하여 Azure PowerShell cmdlet을 실행할 구독을 선택할 수 있습니다. Azure 컨텍스트는 여러 PowerShell 세션에 로그인 정보를 저장하고 백그라운드 작업을 실행하는 데도 사용됩니다.

이 문서에서는 구독 또는 계정 관리가 아닌 Azure 컨텍스트 관리에 대해 설명합니다. 사용자, 구독, 테넌트 또는 기타 계정 정보를 관리하려는 경우 Microsoft Entra ID 설명서를 참조하세요. 백그라운드 또는 병렬 작업을 실행하기 위해 컨텍스트를 사용하는 방법에 대한 자세한 내용은 Azure 컨텍스트에 익숙해진 후 PowerShell 작업 에서 Azure PowerShell cmdlet 실행을 참조하세요.

Azure 컨텍스트 개체 개요

Azure 컨텍스트는 명령을 실행하는 활성 구독과 Azure 클라우드에 연결하는 데 필요한 인증 정보를 나타내는 PowerShell 개체입니다. Azure 컨텍스트에서 Azure PowerShell은 구독을 전환할 때마다 계정을 다시 인증할 필요가 없습니다. Azure 컨텍스트는 다음으로 구성됩니다.

  • Connect-AzAccount를 사용하여 Azure에 로그인하는 데 사용된 계정. Azure 컨텍스트는 계정 관점에서 사용자, 애플리케이션 ID 및 서비스 주체를 동일하게 처리합니다.
  • 테넌트와 연결된 Azure 리소스를 만들고 실행하기 위한 Microsoft와의 서비스 계약인 활성 구독. 테넌트는 설명서에서 또는 Active Directory로 작업할 때 조직이라고도 합니다.
  • Azure 클라우드에 액세스하기 위한 저장된 인증 토큰인 토큰 캐시에 대한 참조입니다. 이 토큰이 저장되는 위치와 지속 기간은 컨텍스트 자동 저장 설정에 의해 결정됩니다.

이러한 용어에 대한 자세한 내용은 Microsoft Entra Terminology를 참조하세요. Azure 컨텍스트에서 사용하는 인증 토큰은 영구 세션의 일부인 다른 저장된 토큰과 동일합니다.

로그인 Connect-AzAccount하면 기본 구독에 대해 하나 이상의 Azure 컨텍스트가 만들어집니다. 반환되는 Connect-AzAccount 개체는 PowerShell 세션의 나머지 부분에 사용되는 기본 Azure 컨텍스트입니다.

Azure 컨텍스트 가져오기

사용 가능한 Azure 컨텍스트는 Get-AzContext cmdlet을 사용하여 검색됩니다. ListAvailable 매개 변수를 사용하여 사용 가능한 컨텍스트를 나열합니다.

Get-AzContext -ListAvailable

또는 이름별로 컨텍스트를 가져옵니다.

Get-AzContext -Name 'mycontext'

컨텍스트 이름은 연결된 구독의 이름과 다를 수 있습니다.

Important

사용 가능한 Azure 컨텍스트가 항상 사용 가능한 구독은 아닙니다. Azure 컨텍스트는 로컬로 저장된 정보만 나타냅니다. Get-AzSubscription cmdlet을 사용하여 구독을 가져올 수 있습니다.

구독 정보에서 새 Azure 컨텍스트 만들기

Set-AzContext cmdlet을 사용하여 새 Azure 컨텍스트를 만들고 활성 컨텍스트로 설정합니다. 새 Azure 컨텍스트를 만드는 가장 쉬운 방법은 기존 구독 정보를 사용하는 것입니다. 이 cmdlet은 Get-AzSubscription의 출력 개체를 파이프된 값으로 사용하고 새 Azure 컨텍스트를 구성하도록 디자인되었습니다.

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

또는 필요한 경우 구독 이름 또는 ID 및 테넌트 ID를 지정합니다.

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

Name 매개 변수를 생략하면 구독의 이름과 ID가 구독 이름(subscription-id) 형식의 컨텍스트 이름으로 사용됩니다.

활성 Azure 컨텍스트 변경

활성 Azure 컨텍스트를 변경하는 데 Select-AzContext와 Select-AzContext를 모두 Set-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 마찬가지로 컨텍스트 Set-AzContext활성 상태인 기간을 제어할 수 있도록 범위 매개 변수를 지원합니다. 범위를 사용하면 기본값을 변경하지 않고 단일 세션의 활성 컨텍스트를 변경할 수 있습니다.

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

전체 PowerShell 세션에 대한 컨텍스트를 전환하지 않도록 AzContext 매개 변수가 있는 Azure PowerShell 명령을 지정된 컨텍스트에 대해 실행할 수 있습니다.

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

Azure PowerShell cmdlet에서 컨텍스트를 사용하는 기본 다른 방법은 백그라운드 명령을 실행하는 것입니다. Azure PowerShell을 사용하여 PowerShell 작업을 실행하는 방법에 대한 자세한 내용은 PowerShell 작업에서 Azure PowerShell cmdlet 실행을 참조하세요.

PowerShell 세션에서 Azure 컨텍스트 저장

기본적으로 Azure 컨텍스트는 PowerShell 세션 간에 사용하기 위해 저장됩니다. 다음과 같은 방법으로 이 동작을 변경합니다.

  • 를 사용하여 -Scope Process 로그인합니다 Connect-AzAccount.

    Connect-AzAccount -Scope Process
    

    이 로그인의 일부로 반환된 Azure 컨텍스트는 현재 세션 에만 유효하며 Azure PowerShell 컨텍스트 자동 저장 설정에 관계없이 자동으로 저장되지 않습니다.

  • Disable-AzContextAutosave cmdlet을 사용하여 Azure PowerShell에서 컨텍스트 자동 저장을 사용하지 않도록 설정합니다. 컨텍스트 자동 저장을 사용하지 않도록 설정해도 저장된 토큰은 지워지지 않습니다. 저장된 Azure 컨텍스트 정보를 지우는 방법을 알아보려면 Azure 컨텍스트 및 자격 증명 제거를 참조하세요.

  • Enable-AzContextAutosave cmdlet을 사용하여 명시적으로 Azure 컨텍스트 자동 저장을 사용하도록 설정할 수 있습니다. 자동 저장을 사용하도록 설정하면 사용자의 컨텍스트가 이후 PowerShell 세션에 대해 로컬로 저장됩니다.

  • Import-AzContext사용하여 로드할 수 있는 이후 PowerShell 세션에서 사용할 Save-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
    

Warning

컨텍스트 자동 저장을 사용하지 않으면 저장된 모든 컨텍스트 정보는 지워지지 않습니다. 저장된 정보를 제거하려면 Clear-AzContext cmdlet을 사용합니다. 저장된 컨텍스트를 제거하는 자세한 내용은 컨텍스트 및 자격 증명 제거를 참조하세요.

이러한 각 명령은 현재 실행 중인 프로세스에만 적용할 값을 Process 사용할 수 있는 Scope 매개 변수를 지원합니다. 예를 들어 PowerShell 세션을 종료한 후 새로 만든 컨텍스트가 저장되지 않도록 하려면 다음을 수행합니다.

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

컨텍스트 정보 및 토큰은 Windows의 $env:USERPROFILE\.Azure 디렉터리 및 다른 플랫폼에 $HOME/.Azure 저장됩니다. 구독 ID 및 테넌트 ID와 같은 중요한 정보는 로그 또는 저장된 컨텍스트를 통해 저장된 정보에 계속 노출될 수 있습니다. 저장된 정보를 지우는 방법을 알아보려면 컨텍스트 및 자격 증명 제거 섹션을 참조하세요.

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를 사용합니다. 이 cmdlet은 항상 저장된 컨텍스트, 인증 토큰을 제거하고 로그아웃합니다.

  • Remove-AzContext를 사용하여 컨텍스트 제거:

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

    활성 컨텍스트를 제거하면 Azure에서 연결이 끊어지고 다시 인증 Connect-AzAccount해야 합니다.

참고 항목