다음을 통해 공유


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 Cloud에 연결하는 데 필요한 인증 정보를 나타내는 PowerShell 개체입니다. Azure 컨텍스트를 사용하면 구독을 전환할 때마다 Azure PowerShell에서 계정을 다시 인증할 필요가 없습니다. 컨텍스트는 다음과 같이 구성됩니다.

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

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

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

Azure 컨텍스트 가져오기

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

Get-AzContext -ListAvailable

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

Get-AzContext -Name MyContextName

컨텍스트 이름은 연결된 구독의 이름과 다를 수 있습니다. 컨텍스트 이름을 확인하려면 기본적으로 표시되지 않는 Name 속성 값을 사용합니다.

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

Important

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

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

Set-AzContext cmdlet은 새 Azure 컨텍스트를 만들고 활성 컨텍스트로 설정하는 데 사용됩니다. 새 Azure 컨텍스트를 만드는 가장 쉬운 방법은 기존 구독 정보를 사용하는 것입니다. 이 Set-AzContext 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 Name (subscription-id) 형식의 컨텍스트 이름으로 사용됩니다.

활성 Azure 컨텍스트 변경

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

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

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

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

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

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

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

  • Connect-AzAccount와 함께 -Scope Process를 사용하여 로그인

    Connect-AzAccount -Scope Process
    

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

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

  • Enable-AzContextAutosave cmdlet을 사용하여 Azure 컨텍스트 자동 저장을 명시적으로 사용하도록 설정할 수 있습니다. 자동 저장을 사용하도록 설정하면 사용자의 컨텍스트가 나중에 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
    

Warning

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

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

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

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

Azure 컨텍스트 및 저장된 자격 증명 제거

Azure 컨텍스트 및 로그인 자격 증명을 지우기 위해

  • Disconnect-AzAccount 계정에서 로그아웃합니다. 계정 또는 컨텍스트별로 계정에서 로그아웃할 수 있습니다.

    Disconnect-AzAccount # Disconnect active account
    Disconnect-AzAccount -Username 'user@contoso.com' # 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을 사용합니다. 이 cmdlet은 항상 저장된 컨텍스트, 인증 토큰을 제거하고 로그인합니다.

  • 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를 사용하여 다시 인증해야 합니다.

참고 항목