Azure Stack Hub에서 권한 있는 엔드포인트 사용

Azure Stack Hub 운영자는 대부분의 일상적인 관리 작업에 관리자 포털, PowerShell 또는 Azure Resource Manager API를 사용해야 합니다. 그러나 일부 작업에는 PEP(권한 있는 엔드포인트)를 사용해야 합니다. PEP는 필요한 작업을 수행하는 데 도움이 되는 충분한 기능을 제공하는 미리 구성된 원격 PowerShell 콘솔입니다. 엔드포인트는 PowerShell JEA(Just Enough Administration) 를 사용하여 제한된 cmdlet 집합만 노출합니다. PEP에 액세스하고 제한된 cmdlet 집합을 호출하기 위해 권한이 낮은 계정이 사용됩니다. 관리자 계정은 필요하지 않습니다. 추가 보안을 위해 스크립팅이 허용되지 않습니다.

PEP를 사용하여 다음 작업을 수행할 수 있습니다.

  • 진단 로그 수집과 같은 하위 수준 작업
  • 배포 후 DNS(Domain Name System) 전달자 추가, Microsoft Graph 통합 설정, AD FS(Active Directory Federation Services) 통합, 인증서 회전 등 통합 시스템에 대한 많은 배포 후 데이터 센터 통합 작업.
  • 지원 서비스를 사용하여 통합 시스템의 심층 문제 해결을 위한 상위 수준 액세스 권한을 임시로 획득

PEP는 PowerShell 세션에서 수행하는 모든 작업(및 해당 출력)을 기록합니다. 이렇게 하면 작업에 대한 완전한 투명성과 완전한 감사가 제공됩니다. 이후 감사를 위해 이러한 로그 파일을 유지할 수 있습니다.

참고

ASDK(Azure Stack Development Kit)에서 개발 키트 호스트의 PowerShell 세션에서 PEP에서 직접 사용할 수 있는 명령 중 일부를 실행할 수 있습니다. 그러나 통합 시스템 환경에서 특정 작업을 수행하는 데 사용할 수 있는 유일한 방법이기 때문에 로그 수집과 같은 PEP를 사용하여 일부 작업을 테스트할 수 있습니다.

참고

OAW(운영자 액세스 워크스테이션)를 사용하여 PEP(권한 있는 엔드포인트), 지원 시나리오를 위한 관리자 포털 및 Azure Stack Hub GitHub Tools에 액세스할 수도 있습니다. 자세한 내용은 Azure Stack Hub 운영자 액세스 워크스테이션을 참조하세요.

권한 있는 엔드포인트에 액세스

PEP를 호스트하는 VM(가상 머신)에서 원격 PowerShell 세션을 통해 PEP에 액세스합니다. ASDK에서 이 VM의 이름은 AzS-ERCS01입니다. 통합 시스템을 사용하는 경우 복원력을 위해 각기 다른 호스트의 VM(Prefix-ERCS01, Prefix-ERCS02 또는 Prefix-ERCS03) 내에서 실행되는 PEP 인스턴스가 세 개 있습니다.

통합 시스템에 대해 이 절차를 시작하기 전에 IP 주소 또는 DNS를 통해 PEP에 액세스할 수 있는지 확인합니다. Azure Stack Hub의 초기 배포 후에는 DNS 통합이 아직 설정되어 있지 않기 때문에 IP 주소를 통해서만 PEP에 액세스할 수 있습니다. OEM 하드웨어 공급 업체는 PEP IP 주소가 포함된 AzureStackStampDeploymentInfo라는 JSON 파일을 제공합니다.

Azure Stack Hub 관리자 포털에서 IP 주소를 찾을 수도 있습니다. 포털을 엽니다(예: https://adminportal.local.azurestack.external). 지역 관리>속성을 선택합니다.

권한 있는 엔드포인트를 en-US 실행할 때 현재 문화권 설정을 로 설정해야 합니다. 그렇지 않으면 Test-AzureStack 또는 Get-AzureStackLog 같은 cmdlet이 예상대로 작동하지 않습니다.

참고

보안상의 이유로 하드웨어 수명 주기 호스트에서 실행되는 강화된 VM 또는 Privileged Access Workstation과 같은 전용 및 보안 컴퓨터에서만 PEP에 연결해야 합니다. 하드웨어 수명 주기 호스트의 원래 구성은 수정하거나(예: 새 소프트웨어를 설치) PEP에 연결하는 데 사용하면 안 됩니다.

  1. 트러스트를 설정합니다.

    • 통합 시스템에서 관리자 권한 Windows PowerShell 세션에서 다음 명령을 실행하여 하드웨어 수명 주기 호스트 또는 Privileged Access Workstation에서 실행되는 강화된 VM에서 PEP를 신뢰할 수 있는 호스트로 추가합니다.

      Set-Item WSMan:\localhost\Client\TrustedHosts -Value '<IP Address of Privileged Endpoint>' -Concatenate
      
    • ASDK를 실행하는 경우 개발 키트 호스트에 로그인합니다.

  2. 하드웨어 수명 주기 호스트 또는 Privileged Access Workstation에서 실행되는 강화된 VM에서 Windows PowerShell 세션을 엽니다. 다음 명령을 실행하여 PEP를 호스트하는 VM에서 원격 세션을 설정합니다.

    • 통합 시스템에서 다음을 수행합니다.

      $cred = Get-Credential
      
      $pep = New-PSSession -ComputerName <IP_address_of_ERCS> -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      Enter-PSSession $pep
      

      매개 변수는 ComputerName PEP를 호스트하는 VM 중 하나의 IP 주소 또는 DNS 이름일 수 있습니다.

      참고

      AZURE Stack Hub는 PEP 자격 증명의 유효성을 검사할 때 원격 호출을 하지 않습니다. 이렇게 하려면 로컬에 저장된 RSA 공개 키를 사용합니다.

    • ASDK를 실행하는 경우:

      $cred = Get-Credential
      
      $pep = New-PSSession -ComputerName azs-ercs01 -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      Enter-PSSession $pep
      

    메시지가 표시되면 다음 자격 증명을 사용합니다.

    • 사용자 이름: Azure Stack Hub 도메인>\cloudadmin 형식<으로 CloudAdmin 계정을 지정합니다. (ASDK의 경우 사용자 이름은 azurestack\cloudadmin)입니다.
    • 암호: AzureStackAdmin 도메인 관리자 계정에 대해 설치하는 동안 제공된 것과 동일한 암호를 입력합니다.

    참고

    ERCS 엔드포인트에 연결할 수 없는 경우 다른 ERCS VM IP 주소로 1단계와 2단계를 다시 시도합니다.

    경고

    기본적으로 Azure Stack Hub 스탬프는 하나의 CloudAdmin 계정으로만 구성됩니다. 계정 자격 증명이 손실, 손상 또는 잠긴 경우 복구 옵션이 없습니다. 권한 있는 엔드포인트 및 기타 리소스에 대한 액세스 권한을 잃게 됩니다.

    자신의 비용으로 스탬프를 다시 배포하지 않도록 추가 CloudAdmin 계정을 만드는것이 좋습니다. 회사의 지침에 따라 이러한 자격 증명을 문서화해야 합니다.

  3. 연결한 후 프롬프트는 환경에 따라 [IP 주소 또는 ERCS VM 이름]: PS> 또는 [azs-ercs01]: PS>로 변경됩니다. 여기에서 를 실행 Get-Command 하여 사용 가능한 cmdlet 목록을 봅니다.

    Azure Stack Hub 권한 있는 엔드포인트 참조에서 cmdlet에 대한 참조를 찾을 수 있습니다.

    이러한 cmdlet의 대부분은 통합된 시스템 환경(예: 데이터 센터 통합과 관련된 cmdlet)에만 사용됩니다. ASDK에서 다음 cmdlet의 유효성이 검사되었습니다.

    • Clear-Host
    • Close-PrivilegedEndpoint
    • Exit-PSSession
    • Get-AzureStackLog
    • Get-AzureStackStampInformation
    • Get-Command
    • Get-FormatData
    • Get-Help
    • Get-ThirdPartyNotices
    • Measure-Object
    • New-CloudAdminUser
    • Out-Default
    • Remove-CloudAdminUser
    • Select-Object
    • Set-CloudAdminUserPassword
    • Test-AzureStack
    • Stop-AzureStack
    • Get-ClusterLog

권한 있는 엔드포인트를 사용하는 방법

위에서 설명한 대로 PEP는 PowerShell JEA 엔드포인트입니다. 강력한 보안 계층을 제공하는 동안 JEA 엔드포인트는 스크립팅 또는 탭 완성과 같은 일부 기본 PowerShell 기능을 줄입니다. 모든 유형의 스크립트 작업을 시도하면 ScriptsNotAllowed 오류와 함께 작업이 실패합니다. 이 오류는 예상되는 동작입니다.

instance 지정된 cmdlet에 대한 매개 변수 목록을 얻으려면 다음 명령을 실행합니다.

    Get-Command <cmdlet_name> -Syntax

또는 Import-PSSession cmdlet을 사용하여 모든 PEP cmdlet을 로컬 컴퓨터의 현재 세션으로 가져올 수 있습니다. 이제 PEP의 cmdlet 및 함수를 로컬 컴퓨터에서 탭 완성 및 스크립팅과 함께 사용할 수 있습니다. Get-Help 모듈을 실행하여 cmdlet 지침을 검토할 수도 있습니다.

로컬 컴퓨터에서 PEP 세션을 가져오려면 다음 단계를 수행합니다.

  1. 트러스트를 설정합니다.

    • 통합 시스템에서 관리자 권한 Windows PowerShell 세션에서 다음 명령을 실행하여 하드웨어 수명 주기 호스트 또는 Privileged Access Workstation에서 실행되는 강화된 VM에서 PEP를 신뢰할 수 있는 호스트로 추가합니다.

      winrm s winrm/config/client '@{TrustedHosts="<IP Address of Privileged Endpoint>"}'
      
    • ASDK를 실행하는 경우 개발 키트 호스트에 로그인합니다.

  2. 하드웨어 수명 주기 호스트 또는 Privileged Access Workstation에서 실행되는 강화된 VM에서 Windows PowerShell 세션을 엽니다. 다음 명령을 실행하여 PEP를 호스트하는 가상 머신에서 원격 세션을 설정합니다.

    • 통합 시스템에서 다음을 수행합니다.

      $cred = Get-Credential
      
      $session = New-PSSession -ComputerName <IP_address_of_ERCS> `
         -ConfigurationName PrivilegedEndpoint -Credential $cred `
         -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      

      매개 변수는 ComputerName PEP를 호스트하는 VM 중 하나의 IP 주소 또는 DNS 이름일 수 있습니다.

    • ASDK를 실행하는 경우:

      $cred = Get-Credential
      
      $session = New-PSSession -ComputerName azs-ercs01 `
         -ConfigurationName PrivilegedEndpoint -Credential $cred `
         -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      

    메시지가 표시되면 다음 자격 증명을 사용합니다.

    • 사용자 이름: Azure Stack Hub domain>\cloudadmin 형식<으로 CloudAdmin 계정을 지정합니다. (ASDK의 경우 사용자 이름은 azurestack\cloudadmin입니다.)

    • 암호: AzureStackAdmin 도메인 관리자 계정에 대해 설치하는 동안 제공된 것과 동일한 암호를 입력합니다.

  3. PEP 세션을 로컬 머신으로 가져옵니다.

    Import-PSSession $session
    
  4. 이제 탭 완성을 사용하고 Azure Stack Hub의 보안 태세를 줄이지 않고 PEP의 모든 함수 및 cmdlet을 사용하여 로컬 PowerShell 세션에서 평소와 같이 스크립팅을 수행할 수 있습니다. 즐겨보세요!

권한 있는 엔드포인트 세션 닫기

앞에서 설명한 대로 PEP는 PowerShell 세션에서 수행하는 모든 작업(및 해당 출력)을 기록합니다. cmdlet을 사용하여 Close-PrivilegedEndpoint 세션을 닫아야 합니다. 이 cmdlet은 엔드포인트를 올바르게 닫고 보존을 위해 로그 파일을 외부 파일 공유로 전송합니다.

엔드포인트 세션 닫기:

  1. PEP에서 액세스할 수 있는 외부 파일 공유를 만듭니다. 개발 키트 환경에서는 개발 키트 호스트에서 파일 공유만 만들 수 있습니다.

  2. 다음 cmdlet을 실행합니다.

    Close-PrivilegedEndpoint -TranscriptsPathDestination "\\fileshareIP\SharedFolder" -Credential Get-Credential
    

    이 cmdlet은 다음 표에 나와 있는 매개 변수를 사용합니다.

    매개 변수 Description 형식 필수
    TranscriptsPathDestination “fileshareIP\sharefoldername”으로 정의된 외부 파일 공유에 대한 경로 String
    자격 증명 파일 공유에 액세스하기 위한 자격 증명 SecureString

기록 로그 파일이 파일 공유로 성공적으로 전송되면 PEP에서 자동으로 삭제됩니다.

참고

cmdlet Exit-PSSession 또는 를 사용하여 PEP 세션을 닫거나 ExitPowerShell 콘솔을 닫으면 기록 로그가 파일 공유로 전송되지 않습니다. 그들은 PEP에 남아 있습니다. 다음에 파일 공유를 실행하고 Close-PrivilegedEndpoint 포함할 때 이전 세션의 기록 로그도 전송됩니다. 또는 를 사용하여 Exit-PSSession PEP 세션을 닫지 말고 대신 를 사용합니다Close-PrivilegedEndpoint.Exit

지원 시나리오에 대한 권한 있는 엔드포인트 잠금 해제

지원 시나리오에서 Microsoft 지원 엔지니어가 Azure Stack Hub 인프라의 내부 구성 요소에 액세스하기 위해 권한 있는 엔드포인트 PowerShell 세션을 승격해야 할 수 있습니다. 이러한 프로세스를 비공식적으로 "유리 깨기" 또는 "PEP 잠금 해제"라고도 합니다. PEP 세션 권한 상승 프로세스는 2단계, 2명, organization 인증 프로세스입니다. 항상 환경을 제어할 수 있는 Azure Stack Hub 운영자가 잠금 해제 절차를 시작합니다. 운영자는 PEP에 액세스하고 다음 cmdlet을 실행합니다.

     Get-SupportSessionToken

cmdlet은 매우 긴 영숫자 문자열인 지원 세션 요청 토큰을 반환합니다. 그런 다음 운영자는 선택한 매체(예: 채팅, 이메일)를 통해 요청 토큰을 Microsoft 지원 엔지니어에게 전달합니다. Microsoft 지원 엔지니어는 요청 토큰(유효한 경우)을 사용하여 지원 세션 권한 부여 토큰을 생성하고 이 토큰을 Azure Stack Hub 운영자에게 다시 보냅니다. 동일한 PEP PowerShell 세션에서 운영자는 이 cmdlet에 대한 입력으로 권한 부여 토큰을 전달합니다.

      unlock-supportsession
      cmdlet Unlock-SupportSession at command pipeline position 1
      Supply values for the following parameters:
      ResponseToken:

권한 부여 토큰이 유효한 경우 PEP PowerShell 세션이 승격되어 인프라에 대한 전체 관리 기능 및 전체 연결을 제공합니다.

참고

관리자 권한 PEP 세션에서 실행되는 모든 작업 및 cmdlet은 Microsoft 지원 엔지니어의 엄격한 감독 하에 수행해야 합니다. 이렇게 하지 않으면 심각한 가동 중지 시간, 데이터 손실이 발생할 수 있으며 Azure Stack Hub 환경을 완전히 다시 배포해야 할 수 있습니다.

지원 세션이 종료되면 위의 섹션에 설명된 대로 Close-PrivilegedEndpoint cmdlet을 사용하여 상승된 PEP 세션을 다시 닫는 것이 매우 중요합니다. PEP 세션이 종료되고 잠금 해제 토큰이 더 이상 유효하지 않으며 PEP 세션의 잠금을 다시 해제하는 데 다시 사용할 수 없습니다. 관리자 권한 PEP 세션은 8시간 동안 유효합니다. 그 후에는 종료되지 않은 경우 관리자 권한 PEP 세션이 자동으로 일반 PEP 세션으로 다시 잠깁니다.

권한 있는 엔드포인트 토큰의 콘텐츠

PEP 지원 세션 요청 및 권한 부여 토큰은 암호화를 활용하여 액세스를 보호하고 권한 있는 토큰만 PEP 세션의 잠금을 해제할 수 있는지 확인합니다. 토큰은 요청 토큰을 생성한 PEP 세션에서만 응답 토큰을 수락할 수 있도록 암호화적으로 보장하도록 설계되었습니다. PEP 토큰에는 Azure Stack Hub 환경 또는 고객을 고유하게 식별할 수 있는 정보가 포함되어 있지 않습니다. 그들은 완전히 익명입니다. 각 토큰의 내용에 대한 세부 정보가 아래에 제공됩니다.

세션 요청 토큰 지원

PEP 지원 세션 요청 토큰은 다음 세 가지 개체로 구성됩니다.

  • 임의로 생성된 세션 ID입니다.
  • 일회성 퍼블릭/프라이빗 키 쌍을 사용하기 위해 생성된 자체 서명된 인증서입니다. 인증서에는 환경에 대한 정보가 포함되어 있지 않습니다.
  • 요청 토큰 만료를 나타내는 타임스탬프를 나타냅니다.

그런 다음 요청 토큰은 Azure Stack Hub 환경이 등록된 Azure 클라우드의 공개 키로 암호화됩니다.

세션 권한 부여 응답 토큰 지원

PEP 지원 권한 부여 응답 토큰은 다음 두 개체로 구성됩니다.

  • 요청 토큰에서 추출된 임의로 생성된 세션 ID입니다.
  • 응답 토큰 만료를 나타내는 타임스탬프를 나타냅니다.

그런 다음 응답 토큰은 요청 토큰에 포함된 자체 서명된 인증서로 암호화됩니다. 자체 서명된 인증서는 Azure Stack Hub 환경이 등록된 Azure 클라우드와 연결된 프라이빗 키로 해독되었습니다.

다음 단계