VM에서 Just-In-Time 액세스 사용

클라우드용 Microsoft Defender의 JIT(Just-In-Time) 액세스를 사용하여 Azure VM(가상 머신)을 무단 네트워크 액세스로부터 보호할 수 있습니다. 많은 경우에 방화벽에는 VM을 공격에 취약하게 만드는 허용 규칙이 포함되어 있습니다. JIT를 사용하면 액세스가 필요한 경우에만, 필요한 포트에서만, 필요한 기간 동안만 VM에 대한 액세스를 허용할 수 있습니다.

JIT의 작동 방식JIT를 구성하고 사용하는 데 필요한 권한에 대해 자세히 알아봅니다.

이 문서에서는 다음 방법을 포함하여 보안 프로그램에 JIT를 포함하는 방법을 알아봅니다.

  • Azure Portal을 통해 또는 프로그래밍 방식으로 VM에서 JIT 사용
  • Azure Portal을 통해 또는 프로그래밍 방식으로 JIT를 사용하도록 설정한 VM에 대한 액세스 요청
  • JIT 작업을 감사하여 VM이 적절하게 보호되는지 확인

가용성

측면 세부 정보
릴리스 상태: GA(일반 공급)
지원되는 VM: Azure Resource Manager를 통해 배포된 VM
클래식 배포 모델을 사용하여 배포된 VM
VM과 동일한 VNET에서 Azure Firewall로 보호되는 VM
Azure Firewall Manager에서 제어하는 Azure Firewall로 보호되는 VM
AWS EC2 인스턴스(미리 보기)
필요한 역할 및 권한: Reader, SecurityReader 또는 사용자 지정 역할은 JIT 상태 및 매개 변수를 볼 수 있습니다.
VM에 대한 JIT 액세스만 요청해야 하는 사용자를 위한 최소 권한 역할을 만들려면 Set-JitLeastPrivilegedRole 스크립트를 사용합니다.
클라우드: 상용 클라우드
국가적(Azure Government, 21Vianet에서 운영하는 Microsoft Azure)
연결된 AWS 계정(미리 보기)

필수 조건

  • JIT를 사용하려면 구독에서 서버용 Microsoft Defender 플랜 2를 사용하도록 설정해야 합니다.

  • 읽기 권한자보안 읽기 권한자 역할은 둘 다 JIT 상태와 매개 변수를 볼 수 있습니다.

  • JIT와 함께 작동하는 사용자 지정 역할을 만들려면 다음 표의 세부 정보가 필요합니다.

    사용자를 사용하도록 설정하려면 다음이 필요합니다. 설정할 사용 권한
    VM에 대한 JIT 정책 구성 또는 편집 ‘역할에 다음 작업을 할당합니다.’
    • VM과 연결된 구독(또는 API 또는 PowerShell만 사용하는 경우 리소스 그룹)의 범위에서:
      Microsoft.Security/locations/jitNetworkAccessPolicies/write
    • VM의 구독(또는 API 또는 PowerShell만 사용하는 경우 리소스 그룹)의 범위에서 다음을 수행합니다.
      Microsoft.Compute/virtualMachines/write
    VM에 대한 JIT 액세스 요청 ‘사용자에게 다음 작업을 할당합니다.’
    • Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action
    • Microsoft.Security/locations/jitNetworkAccessPolicies/*/read
    • Microsoft.Compute/virtualMachines/read
    • Microsoft.Network/networkInterfaces/*/read
    • Microsoft.Network/publicIPAddresses/read
    JIT 정책 읽기 ‘사용자에게 다음 작업을 할당합니다.’
    • Microsoft.Security/locations/jitNetworkAccessPolicies/read
    • Microsoft.Security/locations/jitNetworkAccessPolicies/initiate/action
    • Microsoft.Security/policies/read
    • Microsoft.Security/pricings/read
    • Microsoft.Compute/virtualMachines/read
    • Microsoft.Network/*/read

    참고 항목

    Microsoft.Security 권한만 AWS에 해당합니다.

  • AWS(Amazon Web Service) VM에서 JIT를 설정하려면 클라우드용 Microsoft Defender에 AWS 계정을 연결해야 합니다.

    VM에 대한 JIT 액세스를 요청해야 하는 사용자에게 최소 권한 역할을 만들고 다른 JIT 작업을 수행하지 않으려면 클라우드용 Defender GitHub 커뮤니티 페이지에서 Set-JitLeastPrivilegedRole 스크립트를 사용합니다.

    참고 항목

    사용자 지정 JIT 정책을 성공적으로 만들려면 대상 VM 이름과 함께 정책 이름이 총 56자를 초과하면 안됩니다.

클라우드용 Microsoft Defender를 사용하여 JIT VM 액세스 작업

클라우드용 Defender를 사용하거나 사용자 고유의 사용자 지정 옵션으로 JIT VM 액세스를 프로그래밍 방식으로 사용하도록 설정하거나 Azure 가상 머신에서 하드 코딩된 기본 매개 변수를 사용하여 JIT를 사용하도록 설정할 수 있습니다.

Just-In-Time VM 액세스는 다음과 같이 그룹화된 VM을 보여 줍니다.

  • 구성됨 - Just-In-Time VM 액세스를 지원하도록 구성된 VM으로, 다음을 표시합니다.
    • 지난 7일간 승인된 JIT 요청 수
    • 마지막으로 파일에 액세스한 날짜 및 시간
    • 구성된 연결 세부 정보
    • 마지막 사용자
  • 구성되지 않음 -JIT를 사용하도록 설정하지 않았으나 JIT를 지원할 수 있는 VM입니다. 이러한 VM에 대해 JIT를 사용하도록 설정하는 것이 좋습니다.
  • 지원되지 않음 - 다음과 같은 이유로 JIT를 지원하지 않는 VM입니다.
    • NSG(네트워크 보안 그룹) 또는 Azure Firewall이 누락됨 - JIT를 사용하려면 NSG를 구성하거나 또는 방화벽을 구성(또는 둘 다)해야 합니다.
    • 클래식 VM - JIT는 Azure Resource Manager를 통해 배포되는 VM을 지원합니다. 클래식 및 Azure Resource Manager 배포 모델에 대해 자세히 알아봅니다.
    • 기타 - JIT 솔루션은 구독 또는 리소스 그룹의 보안 정책에서 사용하지 않도록 설정되었습니다.

클라우드용 Microsoft Defender에서 VM에서 JIT 사용

Screenshot showing configuring JIT VM access in Microsoft Defender for Cloud.

클라우드용 Defender에서 JIT VM 액세스를 사용하도록 설정하고 구성할 수 있습니다.

  1. 워크로드 보호를 열고 고급 보호에서 Just-In-Time VM 액세스를 선택합니다.

  2. 구성되지 않음 가상 머신 탭에서 VM을 JIT로 보호하도록 표시하고 VM에 대해 JIT 사용을 선택합니다.

    JIT VM 액세스 페이지가 열리고 클라우드용 Defender에서 보호를 권장하는 포트가 나열됩니다.

    • 22 - SSH
    • 3389 - RDP
    • 5985 - WinRM
    • 5986 - WinRM

    JIT 액세스를 사용자 지정하려면 다음을 수행합니다.

    1. 추가를 선택합니다.

    2. 목록에서 포트 중 하나를 선택하여 편집하거나 다른 포트를 입력합니다. 각 포트에 대해 다음을 설정할 수 있습니다.

      • 프로토콜 - 요청이 승인될 때 이 포트에서 허용되는 프로토콜입니다.
      • 허용된 원본 IP - 요청이 승인될 때 이 포트에서 허용되는 IP 범위입니다.
      • 최대 요청 시간 - 특정 포트를 열 수 있는 최대 기간입니다.
    3. 확인을 선택합니다.

  3. 포트 구성을 저장하려면 저장을 선택합니다.

클라우드용 Defender를 사용하여 JIT 지원 VM에서 JIT 구성 편집

해당 VM에 대해 보호할 새 포트를 추가 및 구성하거나 이미 보호된 포트와 관련된 다른 설정을 변경하여 VM의 Just-In-Time 구성을 수정할 수 있습니다.

VM에 대한 기존 JIT 규칙을 편집하려면

  1. 워크로드 보호를 열고 고급 보호에서 Just-In-Time VM 액세스를 선택합니다.

  2. 구성됨 가상 머신 탭에서 VM을 마우스 오른쪽 단추로 클릭하고 편집을 선택합니다.

  3. JIT VM 액세스 구성에서 포트 목록을 편집하거나 새로운 사용자 지정 포트 추가를 선택할 수 있습니다.

  4. 포트 편집이 완료되면 저장을 선택합니다.

클라우드용 Microsoft Defender에서 JIT 지원 VM에 대한 액세스 요청

VM에서 JIT를 사용하도록 설정한 경우 연결에 대한 액세스를 요청해야 합니다. JIT를 사용하도록 설정하는 방법에 관계 없이 지원되는 방법 중 하나를 사용하여 액세스를 요청할 수 있습니다.

  1. Just-In-Time VM 액세스 페이지에서 구성됨 탭을 선택합니다.

  2. 액세스하려는 VM에 선택합니다.

    • 연결 세부 정보 열의 아이콘은 네트워크 보안 그룹 또는 방화벽에서 JIT가 사용하도록 설정되었는지를 나타냅니다. 둘 다에서 사용하도록 설정된 경우 방화벽 아이콘만 표시됩니다.

    • 연결 세부 정보 열에는 VM에 액세스할 수 있는 사용자 및 포트가 표시됩니다.

  3. 액세스 요청을 선택합니다. 그러면 액세스 요청 창이 열립니다.

  4. 액세스 요청에서 각 VM에 대해 열려는 포트, 포트를 열 원본 IP 주소 및 포트를 열어 두는 기간을 선택합니다.

  5. 포트 열기를 선택합니다.

    참고 항목

    액세스를 요청하는 사용자가 프록시 뒤에 있는 경우 프록시의 IP 주소 범위를 입력할 수 있습니다.

JIT VM 액세스로 작업하는 다른 방법

Azure 가상 머신

Azure 가상 머신에서 VM에 대해 JIT를 사용하도록 설정

Azure Portal의 Azure 가상 머신 페이지에서 VM에 대해 JIT를 사용하도록 설정할 수 있습니다.

VM에 이미 JIT가 사용하도록 설정된 경우 VM 구성 페이지에 JIT가 사용하도록 설정되어 있다고 표시됩니다. 링크를 사용하여 클라우드용 Defender에서 JIT VM 액세스 페이지를 연 다음, 설정을 보고 변경할 수 있습니다.

  1. Azure Portal에서 가상 머신을 검색하여 선택합니다.

  2. JIT로 보호하려는 가상 머신을 선택합니다.

  3. 메뉴에서 구성을 선택합니다.

  4. Just-in-time 액세스에서 Just-In-Time 사용을 선택합니다.

    기본적으로 VM에 대한 Just-In-Time 액세스는 다음 설정을 사용합니다.

    • Windows 컴퓨터
      • RDP 포트: 3389
      • 허용되는 최대 액세스: 3시간
      • 허용된 원본 IP 주소: 임의
    • Linux 컴퓨터
      • SSH 포트: 22
      • 허용되는 최대 액세스: 3시간
      • 허용된 원본 IP 주소: 임의
  5. 이러한 값을 편집하거나 JIT 구성에 포트를 더 추가하려면 클라우드용 Microsoft Defender의 Just-In-Time 페이지를 사용합니다.

    1. 클라우드용 Defender 메뉴에서 Just-In-Time VM 액세스를 선택합니다.

    2. 구성됨 탭에서 포트를 추가하려는 VM을 마우스 오른쪽 단추로 클릭하고 편집을 선택합니다.

      Editing a JIT VM access configuration in Microsoft Defender for Cloud.

    3. JIT VM 액세스 구성에서 포트를 클릭하여 이미 보호된 포트의 기존 설정을 편집하거나 새로운 사용자 지정 포트를 추가할 수 있습니다.

    4. 포트 편집이 완료되면 저장을 선택합니다.

Azure 가상 머신의 연결 페이지에서 JIT 지원 VM에 대한 액세스 요청

VM에서 JIT를 사용하도록 설정한 경우 연결에 대한 액세스를 요청해야 합니다. JIT를 사용하도록 설정하는 방법에 관계 없이 지원되는 방법 중 하나를 사용하여 액세스를 요청할 수 있습니다.

Screenshot showing jit just-in-time request.

Azure 가상 머신에서 액세스를 요청하려면

  1. Azure Portal에서 가상 머신 페이지를 엽니다.

  2. 연결하려는 VM을 선택하고 연결 페이지를 엽니다.

    Azure는 해당 VM에서 JIT가 사용하도록 설정되어 있는지 확인합니다.

    • VM에 대해 JIT를 사용하도록 설정하지 않은 경우에는 사용하도록 설정하라는 메시지가 표시됩니다.

    • JIT를 사용하도록 설정한 경우 액세스 요청을 선택하여 요청 IP, 시간 범위 및 해당 VM에 대해 구성된 포트를 사용하여 액세스 요청을 전달합니다.

참고 항목

Azure Firewall로 보호되는 VM에 대한 요청이 승인되면 클라우드용 Defender는 사용자에게 VM에 연결하는 데 사용할 적절한 연결 세부 정보(DNAT 테이블에서의 포트 매핑)를 제공합니다.

PowerShell

PowerShell을 사용하여 VM에서 JIT 사용

PowerShell에서 Just-In-Time VM 액세스를 사용하도록 설정하려면 공식 클라우드용 Microsoft Defender PowerShell cmdlet Set-AzJitNetworkAccessPolicy를 사용합니다.

- 다음 규칙을 사용하여 특정 VM에서 Just-In-Time VM 액세스를 사용하도록 설정합니다.

  • 포트 22 및 3389를 닫습니다.
  • 승인된 요청에 대해 열 수 있도록 최대 기간을 3시간으로 설정합니다.
  • 액세스를 요청하는 사용자가 소스 IP 주소를 제어할 수 있도록 허용합니다.
  • 액세스를 요청하는 사용자가 승인된 Just-In-Time 액세스 요청 시 성공적인 세션을 설정할 수 있도록 허용합니다.

다음 PowerShell 명령은 이 JIT 구성을 만듭니다.

  1. VM에 대한 Just-In-Time VM 액세스 규칙을 보유하는 변수를 할당합니다.

    $JitPolicy = (@{
        id="/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Compute/virtualMachines/VMNAME";
        ports=(@{
             number=22;
             protocol="*";
             allowedSourceAddressPrefix=@("*");
             maxRequestAccessDuration="PT3H"},
             @{
             number=3389;
             protocol="*";
             allowedSourceAddressPrefix=@("*");
             maxRequestAccessDuration="PT3H"})})
    
  2. VM Just-In-Time VM 액세스 규칙을 배열에 삽입합니다.

    $JitPolicyArr=@($JitPolicy)
    
  3. 선택한 VM에서 Just-In-Time VM 액세스 규칙을 구성합니다.

    Set-AzJitNetworkAccessPolicy -Kind "Basic" -Location "LOCATION" -Name "default" -ResourceGroupName "RESOURCEGROUP" -VirtualMachine $JitPolicyArr
    

    -Name 매개 변수를 사용하여 VM을 지정합니다. 예를 들어, VM1 및 VM2의 서로 다른 두 VM에 대해 JIT 구성을 설정하려면 Set-AzJitNetworkAccessPolicy -Name VM1Set-AzJitNetworkAccessPolicy -Name VM2를 사용합니다.

PowerShell을 사용하여 JIT 사용 VM에 대한 액세스 요청

다음 예제에서는 포트 22, 특정 IP 주소 및 특정 시간에 대한 특정 VM로의 Just-In-Time VM 액세스 요청을 확인할 수 있습니다.

PowerShell에서 다음 명령을 실행합니다.

  1. VM 요청 액세스 속성을 구성합니다.

    $JitPolicyVm1 = (@{
        id="/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Compute/virtualMachines/VMNAME";
        ports=(@{
           number=22;
           endTimeUtc="2020-07-15T17:00:00.3658798Z";
           allowedSourceAddressPrefix=@("IPV4ADDRESS")})})
    
  2. VM 액세스 요청 매개 변수를 배열에 삽입합니다.

    $JitPolicyArr=@($JitPolicyVm1)
    
  3. 액세스 요청을 보냅니다(1단계의 리소스 ID 사용).

    Start-AzJitNetworkAccessPolicy -ResourceId "/subscriptions/SUBSCRIPTIONID/resourceGroups/RESOURCEGROUP/providers/Microsoft.Security/locations/LOCATION/jitNetworkAccessPolicies/default" -VirtualMachine $JitPolicyArr
    

PowerShell cmdlet 설명서에서 자세히 알아보세요.

REST API

REST API를 사용하여 VM에서 JIT 사용

Just-In-Time VM 액세스 기능은 클라우드용 Microsoft Defender API를 통해 사용할 수 있습니다. 이 API를 사용하여 구성된 VM에 대한 정보를 가져오고 새로 추가하고 VM에 대한 액세스를 요청하는 등을 할 수 있습니다.

JIT 네트워크 액세스 정책에 대해 자세히 알아보세요.

REST API를 사용하여 JIT 지원 >VM에 대한 액세스 요청

Just-In-Time VM 액세스 기능은 클라우드용 Microsoft Defender API를 통해 사용할 수 있습니다. 이 API를 사용하여 구성된 VM에 대한 정보를 가져오고 새로 추가하고 VM에 대한 액세스를 요청하는 등을 할 수 있습니다.

JIT 네트워크 액세스 정책에 대해 자세히 알아보세요.

클라우드용 Defender에서 JIT 액세스 작업 감사

로그 검색을 사용하여 VM 활동에 대한 정보를 얻을 수 있습니다. 로그를 보려면:

  1. Just-In-Time VM 액세스에서 구성됨 탭을 선택합니다.

  2. 감사하려는 VM의 경우 행의 끝에 있는 줄임표 메뉴를 엽니다.

  3. 메뉴에서 활동 로그를 선택합니다.

    Select just-in-time JIT activity log.

    활동 로그는 시간, 날짜 및 구독과 함께 해당 VM에 대한 이전 작업의 필터링된 보기를 제공합니다.

  4. 로그 정보를 다운로드하려면 CSV로 다운로드를 선택합니다.

다음 단계

이 문서에서는 Just-In-Time VM 액세스를 구성하고 사용하는 방법을 알아보았습니다. JIT를 사용해야 하는 이유를 알아보려면 JIT가 방어하는 위협을 설명하는 문서를 참조하세요.