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

중요

비즈니스용 Microsoft Store 및 교육용 Microsoft Store 2023년 1분기에 은퇴할 예정입니다. 해당 시간까지 무료 앱의 현재 기능을 계속 사용할 수 있습니다. 이 변경에 대한 자세한 내용은 비즈니스용 Microsoft Store 및 교육 진화를 참조하세요.

중요

이제 DGSS v2(Device Guard 서명 서비스 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 권한이 필요하며 AD(Azure 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 서명자 역할이 필요합니다. 서명할 수 있는 최소 권한 역할입니다. 전역 관리자청구 계정 소유자와 같은 다른 역할도 서명할 수 있습니다.

참고

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

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

  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 Microsoft Store 입력합니다.

참고

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

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

Azure AD 액세스 토큰 가져오기

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

참고

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

다음 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 서명으로 앱에 성공적으로 서명했는지 확인합니다.

중요

격리를 달성하려면 DGSSv2로 서명된 앱을 신뢰하도록 WDAC CI 정책을 배포합니다. NuGet 패키지에 포함된 readme_cmdlets 설명서 및 DGSSv1에서 DGSSv2 설명서로의 마이그레이션을 읽어보세요.

일반 오류

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

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