Device Guard 서명으로 MSIX 패키지 서명

Important

비즈니스용 Microsoft Store 및 교육용 Microsoft Store는 2023년 1분기에 사용 중지됩니다. 그때까지 무료 앱의 현재 기능을 계속 사용할 수 있습니다. 이 변경에 대한 자세한 내용은 비즈니스용 Microsoft Store 및 교육 진화를 참조하세요.

Important

이제 Device Guard 서명 서비스 v2 (DGSS v2)를 사용할 수 있습니다.

2021년 5월 - Device Guard 서명 서비스 v1에 대한 기존 웹 기반 메커니즘은 2021년 6월 9일에 사용 중지됩니다. PowerShell 기반 버전의 서비스(DGSS v2)로 전환하세요. 필요한 DGSS v2 구성 요소 및 마이그레이션 설명서를 포함하는 NuGet 패키지를 사용할 수 있습니다. NuGet 패키지에 포함된 Microsoft 사용 약관을 읽어 보세요. DGSS를 사용하는 것은 이러한 용어를 수락하는 것을 의미합니다. 궁금한 사항은 다음으로 DGSSMigration@microsoft.com문의하세요.

참고 항목

microsoft.acs/dgss.client.nupkg를 다운로드한 후 .zip으로 이름을 바꾸고 파일 및 추가 설명서 및 정보에 대한 콘텐츠를 추출할 수 있습니다.

Device Guard 서명은 비즈니스용 Microsoft Store 및 교육에서 사용할 수 있는 Device Guard 기능입니다. 이를 통해 기업은 모든 앱이 신뢰할 수 있는 원본에서 제공되도록 보장할 수 있습니다. NuGet 패키지의 Windows SDK 및 DGSSv2 dlib에서 SignTool을 사용하여 Device Guard 서명으로 MSIX 앱에 서명할 수 있습니다. 이 기능 지원을 사용하면 Device Guard 서명을 MSIX 패키지 빌드 및 서명 워크플로에 쉽게 통합할 수 있습니다.

Device Guard 서명에는 비즈니스용 Microsoft Store 권한이 필요하며 Azure AD(Active Directory) 인증을 사용합니다. Device Guard 서명으로 MSIX 패키지에 서명하려면 다음 단계를 수행합니다.

  1. 아직 등록하지 않은 경우 비즈니스용 Microsoft Store 등록하거나 교육용 Microsoft Store.

    참고 항목

    이 포털을 사용하여 Device Guard 서명에 대한 권한을 구성하기만 하면 됩니다.

  2. 비즈니스용 Microsoft Store(또는 교육용 Microsoft Store)에서 Device Guard 서명을 수행하는 데 필요한 권한이 있는 역할을 자신에게 할당합니다.
  3. 비즈니스용 Microsoft Store Azure AD 인증을 사용할 수 있도록 적절한 설정으로 Azure Portal에 앱을 등록합니다.
  4. JSON 형식으로 Azure AD 액세스 토큰을 가져옵니다.
  5. SignTool을 실행하여 Device Guard 서명으로 MSIX 패키지에 서명하고 이전 단계에서 얻은 Azure AD 액세스 토큰을 전달합니다.

다음 섹션에서는 이러한 단계를 자세히 설명합니다.

Device Guard 서명에 대한 권한 구성

비즈니스용 Microsoft Store 또는 교육용 Microsoft Store Device Guard 서명을 사용하려면 Device Guard 서명자 역할이 필요합니다. 서명할 수 있는 최소 권한 역할입니다. Global 관리istrator 및 Billing 계정 소유자같은 다른 역할도 서명할 수 있습니다.

참고 항목

Device Guard 서명자 역할은 앱으로 서명할 때 사용됩니다. 로그인한 사용자로 로그인할 때 전역 관리istrator 및 청구 계정 소유자가 사용됩니다.

역할을 확인하거나 다시 할당하려면 다음을 수행합니다.

  1. 비즈니스용 Microsoft Store에 로그인
  2. 관리를 선택한 다음 사용 권한을 선택합니다.
  3. 역할을 봅니 .

자세한 내용은 비즈니스용 Microsoft Store 및 교육의 역할 및 권한을 참조하세요.

Azure Portal에서 앱 등록

비즈니스용 Microsoft Store Azure AD 인증을 사용할 수 있도록 적절한 설정으로 앱을 등록하려면 다음을 수행합니다.

  1. https://portal.azure.com전역 관리 테넌트로 이동하여 인증

  2. Azure Active Directory Azure 서비스로 이동합니다.

  3. 관리의 왼쪽 메뉴에서 앱 등록 찾아 선택합니다.

  4. 메뉴 모음에서 새 등록 선택

  5. 이름 필드에 DGSSv2를 입력합니다.

    참고 항목

    이름 필드는 Azure Portal에서 앱 등록을 쉽게 식별하는 데 사용됩니다. 원하는 이름을 사용할 수 있습니다. 이 데모에서는 DGSSv2를 사용하여 쉽게 식별할 수 있습니다.

  6. 지원되는 계정 유형에서 적절한 설정을 선택합니다.

    • 이 조직 디렉터리의 계정만(단일 테넌트) – 다중 테넌트 배포에 대한 특정 요구 사항이 없는 한 이 옵션을 사용하는 것이 좋습니다. 디렉터리의 모든 사용자 및 게스트 계정은 사용자의 애플리케이션 또는 API를 사용할 수 있습니다.
    • 모든 조직 디렉터리의 계정(모든 Azure AD 디렉터리 - 다중 테넌트) – 이 옵션은 여러 Azure AD 테넌트가 있지만 코드 서명을 위해 단일 신뢰 지점만 필요한 조직에 가장 적합합니다. Microsoft의 회사 또는 학교 계정이 있는 모든 사용자는 사용자의 애플리케이션이나 API를 사용할 수 있습니다. 여기에는 Office 365를 사용하는 학교 및 회사가 포함됩니다.
    • 모든 조직 디렉터리의 계정(모든 Azure AD 디렉터리 - 다중 테넌트) 및 개인 Microsoft 계정(예: Skype, Xbox) – 이 옵션은 소비자 수준 Microsoft 계정에서 사용하도록 열려 있기 때문에 권장되지 않습니다. 회사 또는 학교나 개인 Microsoft 계정을 가진 모든 사용자는 애플리케이션 또는 API를 사용할 수 있습니다. 여기에는 Office 365를 사용하는 학교와 기업뿐만 아니라 Xbox 및 Skype와 같은 서비스에 로그인하는 데 사용되는 개인 계정 포함됩니다.
    • 개인 Microsoft 계정만 – 마지막 옵션과 마찬가지로 이 옵션도 권장되지 않습니다. 이는 개인 계정 허용하기 때문만이 아니라 이 옵션은 개인 계정 지원하기 때문입니다. Azure AD 계정은 명시적으로 차단됩니다. Xbox 및 Skype와 같은 서비스에 로그인하는 데 사용되는 개인 계정
  7. 리디렉션 URI 드롭다운의 드롭다운 선택 메뉴에서 공용 클라이언트/네이티브(모바일 및 데스크톱)를 선택합니다. 텍스트 상자에 입력 https://dgss.microsoft.com 합니다.

  8. 등록을 클릭합니다.

  9. 페이지 오른쪽 상단에서 리디렉션 URI로 레이블이 지정된 항목을 찾습니다. 웹 0개, 스파 0개, 공용 클라이언트 1개 레이블이 지정된 아래 줄을 선택합니다.

  10. 고급 설정 섹션에서 공용 클라이언트 흐름 허용으로 레이블이 지정된 항목을 찾습니다 . 이 값을 예로 설정

  11. 페이지 맨 위에 있는 저장을 클릭합니다.

  12. 왼쪽 메뉴에서 API 권한 선택

  13. 메뉴 모음에서 사용 권한 추가를 선택합니다. 플라이아웃 메뉴에서 조직에서 사용하는 API 탭을 선택합니다. 검색 상자에 비즈니스용 Windows 스토어 입력

참고 항목

목록에 비즈니스용 Windows 스토어가 표시되지 않으면 새 브라우저 탭 https://businessstore.microsoft.com 을 열고 테넌트 전역 관리istrator로 로그인합니다. 브라우저 탭을 닫은 다음 다시 검색합니다.

  1. 비즈니스용 Windows 스토어를 선택한 다음 위임된 권한을 선택합니다. user_impersonation 확인합니다.
  2. 페이지 아래쪽에서 사용 권한 추가를 클릭합니다. 왼쪽 메뉴에서 [개요]를 선택하여 DGSSv2 앱 등록 개요로 돌아갑니다.

Azure AD 액세스 토큰 가져오기

다음으로, JSON 형식으로 Azure AD 앱에 대한 Azure AD 액세스 토큰을 가져옵니다. 다양한 프로그래밍 및 스크립팅 언어를 사용하여 이 작업을 수행할 수 있습니다. 이 프로세스에 대한 자세한 내용은 OAuth 2.0 코드 부여 흐름을 사용하여 Azure Active Directory 웹 애플리케이션에 대한 액세스 권한 부여를 참조하세요. 액세스 토큰이 1시간 후에 만료되므로 액세스 토큰과 함께 새로 고침 토큰을 검색하는 것이 좋습니다.

참고 항목

목록에 비즈니스용 Windows 스토어가 표시되지 않으면 새 브라우저 탭 https://businessstore.microsoft.com 을 열고 테넌트 전역 관리istrator로 로그인합니다. 브라우저 탭을 닫은 다음 다시 검색합니다.

다음 PowerShell 예제에서는 액세스 토큰을 요청하는 방법을 보여 줍니다.

function GetToken()
{

    $c = Get-Credential -Credential $user
    
    $Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $c.UserName, $c.password
    $user = $Credentials.UserName
    $password = $Credentials.GetNetworkCredential().Password
    
    $tokenCache = "outfile.json"

    #replace <application-id> and <client_secret-id> with the Application ID from your Azure AD application registration
    $Body = @{
      'grant_type' = 'password'
      'client_id'= '<application-id>'
      'client_secret' = '<client_secret>'
      'resource' = 'https://onestore.microsoft.com'
      'username' = $user
      'password' = $password
    }

    $webpage = Invoke-WebRequest 'https://login.microsoftonline.com/common/oauth2/token' -Method 'POST'  -Body $Body -UseBasicParsing
    $webpage.Content | Out-File $tokenCache -Encoding ascii
}

참고 항목

나중에 사용할 수 있도록 JSON 파일을 저장하는 것이 좋습니다.

Device Guard 서명 버전 2 DLL 가져오기

Device Guard 서명 버전 2로 서명하려면 패키지에 서명하는 데 사용할 NuGet 패키지를 다운로드하여 Microsoft.Acs.Dlib.dll을 가져옵니다. 루트 인증서를 가져오는 데도 필요합니다.

패키지 서명

Azure AD 액세스 토큰이 있으면 SignTool을 사용하여 Device Guard 서명으로 패키지에 서명할 준비가 된 것입니다. SignTool을 사용하여 패키지에 서명하는 방법에 대한 자세한 내용은 SignTool을 사용하여 앱 패키지 서명을 참조하세요.

다음 명령줄 예제에서는 Device Guard 서명 버전 2를 사용하여 패키지에 서명하는 방법을 보여 줍니다.

signtool sign /fd sha256 /dlib Microsoft.Acs.Dlib.dll /dmdf <Azure AAD in .json format> /t <timestamp-service-url> <your .msix package>

참고 항목

  • Device Guard 서명 v2에 대해 생성된 인증서는 1일 동안 유효합니다. 패키지에 서명할 때 타임스탬프 옵션 중 하나를 사용하는 것이 좋습니다. 타임스탬프를 적용하지 않으면 서명이 하루 만에 만료되며 앱을 사임해야 합니다.
  • 패키지 매니페스트의 게시자 이름이 패키지 서명에 사용하는 인증서와 일치하는지 확인합니다. 이 기능을 사용하면 리프 인증서가 됩니다. 예를 들어 리프 인증서가 CompanyName경우 매니페스트의 게시자 이름보다 CN=CompanyName이어야 합니다. 그렇지 않으면 서명 작업이 실패합니다.
  • SHA256 알고리즘만 지원됩니다.
  • Device Guard 서명으로 패키지에 서명하면 패키지를 인터넷을 통해 보내지지 않습니다.

테스트

테스트하려면 여기클릭하거나 NuGet 패키지를 다운로드하여 명령을 사용하여 루트 인증서를 다운로드합니다.

Get-RootCertificate

디바이스의 신뢰할 수 있는 루트 인증 기관에 루트 인증서를 설치합니다. 새로 서명된 앱을 설치하여 Device Guard 서명으로 앱에 성공적으로 서명했는지 확인합니다.

Important

격리를 달성하기 위해 DGSSv2로 서명된 앱을 신뢰하도록 WDAC CI 정책을 배포합니다. readme_cmdlets 설명서를 읽고 NuGet 패키지에 포함된 DGSSv1에서 DGSSv2 설명서로 마이그레이션해야 합니다.

일반 오류

다음은 발생할 수 있는 일반적인 오류입니다.

  • 0x800700d: 이 일반적인 오류는 Azure AD JSON 파일의 형식이 유효하지 않음을 의미합니다.
  • Device Guard 서명의 루트 인증서를 다운로드하기 전에 비즈니스용 Microsoft Store 사용 약관에 동의해야 할 수 있습니다. 포털에서 무료 앱을 획득하여 이 작업을 수행할 수 있습니다.