Assinar um pacote do MSIX com a autenticação do Device Guard
Importante
A Microsoft Store para Empresas e a Microsoft Store para Educação foram desativadas no primeiro trimestre de 2023. Para obter mais informações sobre essa alteração, consulte Evoluindo a Microsoft Store para Empresas e Educação.
Você pode continuar a usar os recursos atuais do Serviço de Assinatura do Device Guard v2 (DGSS) até esse momento. O DGSS será substituído pelo ACS (Serviço de Assinatura de Código) do Azure e dará suporte à política do WDAC (Controle de Aplicativos) do Windows Defender e às necessidades de assinatura de arquivo de catálogo.
O Serviço de Assinatura do Device Guard v2 (DGSS) é um serviço de assinatura de código que vem com sua conta de locatário existente da Microsoft Store para Empresas e Educação. Você pode usar o DGSS para assinar aplicativos de linha de negócios, arquivos de catálogo e políticas do WDAC (Controle de Aplicativo) do Windows Defender. Ele permite que as empresas se certifiquem de que todos os aplicativos tenham uma fonte confiável. Você pode usar a SignTool no SDK do Windows e o dlib DGSSv2 no pacote NuGet para autenticar seus aplicativos do MSIX com a autenticação do Device Guard. Esse suporte a recursos permite que você incorpore a autenticação do Device Guard ao fluxo de trabalho de criação e a autenticação de pacotes do MSIX com facilidade.
Está disponível um pacote NuGet contendo os componentes DGSS v2 e a documentação de migração necessários. Leia os Termos de uso da Microsoft incluídos no pacote NuGet; observe que o uso de DGSS implica a aceitação desses termos. Caso tenha perguntas, entre em contato conosco em DGSSMigration@microsoft.com.
Observação
Após baixar microsoft.acs/dgss.client.nupkg, você pode renomear para .zip e extrair conteúdo de arquivos, além de documentação e informações adicionais.
A autenticação do Device Guard requer permissões na Microsoft Store para Empresas e usa a autenticação do Azure Active Directory (AD). Para autenticar um pacote MSIX com a autenticação do Device Guard, siga as etapas a seguir.
- Na Microsoft Store para Empresas (ou Microsoft Store para Educação), atribua a si mesmo uma função com as permissões necessárias para executar a assinatura do Device Guard.
Observação
Você só precisa usar esse portal para configurar as permissões da autenticação do Device Guard.
- Registre seu aplicativo no portal do Azure com as configurações adequadas para que possa usar a autenticação do Azure AD com a Microsoft Store para Empresas.
- Obtenha um token de acesso do Azure AD no formato JSON.
- Execute a SignTool para autenticar o pacote MSIX com a autenticação do Device Guard e passe o token de acesso do Azure AD obtido na etapa anterior.
As seções a seguir descrevem essas etapas mais detalhadamente.
Configure permissões para a autenticação do Device Guard
Para usar a autenticação do Device Guard na Microsoft Store para Empresas ou na Microsoft Store para Educação, você precisa da função de intérprete do Device Guard. Essa é a função com privilégios mínimos com capacidade de autenticação. Outras funções, como a de administrador global e a de proprietário da conta de cobrança, também podem autenticar.
Observação
A função de intérprete do Device Guard é usada quando você fazendo uma autenticação como um aplicativo. As funções de administrador global e proprietário da conta de cobrança são usadas quando você faz uma autenticação como uma pessoa conectada.
Para confirmar ou ceder funções:
- Entre no Microsoft Store para empresas.
- Selecione Gerenciar e, em seguida, Permissões.
- Exibir Funções.
Para obter mais informações, consulte Funções e permissões na Microsoft Store para Empresas e Educação.
Registrar seu aplicativo no portal do Azure
Para registrar seu aplicativo com as configurações adequadas para usar a autenticação do Azure AD com a Microsoft Store para Empresas:
Navegue até https://portal.azure.com e autentique-se como administrador global de locatário.
Navegue até o serviço do Azure Azure Active Directory.
No menu lateral à esquerda, em Gerenciar, localize e selecione Registros de aplicativo.
Na barra de menus, selecione Novo Registro.
No campo Nome, insira DGSSv2.
Observação
O campo Nome é usado para facilitar a identificação do registro de aplicativo no portal do Azure. É possível usar qualquer nome desejado. Para efeitos desta versão de demonstração, utilizamos o DGSSv2 apenas para facilitar a identificação.
Em Tipos de conta com suporte, selecione a configuração apropriada.
- Contas somente neste diretório da organização (locatário único): essa opção é recomendada, a menos que você tenha uma necessidade específica de uma implantação multilocatário. Todas as contas de usuários e convidados no diretório podem usar seu aplicativo ou API.
- Contas em qualquer diretório organizacional (qualquer diretório do Azure AD – multilocatário): essa opção é melhor para uma organização que tem vários locatários do Azure AD, mas só precisa de um único ponto de confiança para assinatura de código. Todos os usuários com uma conta corporativa ou de estudante da Microsoft podem usar o aplicativo ou a API. Isso inclui as escolas e as empresas que usam o Office 365.
- Contas em qualquer diretório organizacional (qualquer diretório do Azure AD – multilocatário) e contas Microsoft pessoais (por exemplo, Skype, Xbox): essa opção não é recomendada devido à sua disponibilidade de uso por contas Microsoft de nível do consumidor. Todos os usuários com uma conta Microsoft corporativa, de estudante ou pessoal podem usar o aplicativo ou a API. Isso inclui escolas e empresas que usam o Office 365, bem como contas pessoais que são usadas para fazer login em serviços como o Xbox e o Skype.
- Somente contas Microsoft pessoais: assim como a última opção, essa também não é recomendada. Isso não ocorre apenas por permitir contas pessoais, mas porque essa opção só é compatível com contas pessoais. As contas do Azure AD são explicitamente bloqueadas. Contas pessoais usadas para fazer login em serviços como Xbox e Skype.
No menu suspenso Redirecionar URI, selecione Cliente público/nativo (móvel e desktop) no menu suspenso de seleção. Insira
https://dgss.microsoft.com
na caixa de texto.Clique em Registrar
No canto superior direito da página, localize a entrada rotulada como Redirecionar URIs. Selecione a linha abaixo dela rotulada como 0 web, 0 spa, 1 cliente público.
Localize a entrada rotulada como Permitir fluxos de cliente público na seção Configurações avançadas. Defina o valor como Sim.
Clique em Salvar na parte superior da página.
No menu à esquerda, selecione Permissões da API.
Na barra de menus, selecione Adicionar uma permissão. No menu suspenso, selecione a guia APIs que minha organização usa. Na caixa de pesquisa, digite Windows Store para Empresas.
Observação
Se a Windows Store para Empresas não aparecer na lista, abra uma nova guia do navegador e navegue até https://businessstore.microsoft.com. Depois, entre como administrador global de locatário. Feche a guia do navegador e pesquise novamente.
- Selecione Windows Store para Empresas e Permissões delegadas. Marque user_impersonation.
- Clique em Adicionar Permissões na parte inferior da página. No menu à esquerda, selecione Visão Geral para retornar à visão geral do registro de aplicativo DGSSv2.
Obter um token de acesso do Azure AD
Em seguida, obtenha um token de acesso do Azure AD para o Aplicativo Azure AD no formato JSON. Você pode fazer isso usando uma variedade de linguagens de scripts e de programação. Para obter mais informações sobre o processo, consulte Authorize access to Azure Active Directory web applications using the OAuth 2.0 code grant flow. Recomendamos que você recupere um token de atualização com o token de acesso, pois seu token de acesso expirará em uma hora.
Observação
Se a Windows Store para Empresas não aparecer na lista, abra uma nova guia do navegador e navegue até https://businessstore.microsoft.com. Depois, entre como administrador global de locatário. Feche a guia do navegador e pesquise novamente.
O exemplo do PowerShell a seguir demonstra como solicitar um token de acesso.
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
}
Observação
Recomendamos que você salve o arquivo JSON para uso posterior.
Obter a DLL de autenticação do Device Guard versão 2
Para se autenticar com a autenticação do Device Guard versão 2, obtenha o Microsoft.Acs.Dlib.dll baixando o Pacote NuGet que será usado para autenticar seu pacote. Isso também é necessário para obter o certificado raiz.
Autentique o seu pacote
Quando tiver seu token de acesso do Azure AD, você poderá usar a SignTool para autenticar seu pacote com a autenticação do Device Guard. Para obter mais informações sobre como usar a SignTool para autenticar pacotes, consulte Autenticar um pacote do aplicativo usando a SignTool.
O exemplo de linha de comando a seguir demonstra como autenticar um pacote com a autenticação do Device Guard versão 2.
signtool sign /fd sha256 /dlib Microsoft.Acs.Dlib.dll /dmdf <Azure AAD in .json format> /t <timestamp-service-url> <your .msix package>
Observação
- Os certificados gerados para a autenticação do Device Guard v2 são válidos por um dia. Recomendamos que você use uma das opções de carimbo de data/hora ao autenticar seu pacote. Se você não aplicar um carimbo de data/hora, a autenticação expirará em um dia e o aplicativo precisará ser autenticado novamente.
- Verifique se o nome do fornecedor no manifesto do pacote corresponde ao certificado que você está usando para autenticar o pacote. Com esse recurso, será o seu certificado de folha. Por exemplo, se o certificado de folha for CompanyName, o nome do fornecedor no manifesto deverá ser CN=CompanyName. Caso contrário, haverá uma falha na operação de autenticação.
- Só há suporte para o algoritmo SHA256.
- Quando você autentica seu pacote com a autenticação do Device Guard, ele não está sendo enviado pela Internet.
Teste
Para fazer o teste, baixe o certificado raiz clicando aqui ou baixando o Pacote NuGet e obtendo-o com o comando:
Get-RootCertificate
Instale o certificado raiz em Autoridades de Certificação Raiz Confiáveis no seu dispositivo. Instale seu aplicativo recém-autenticado para verificar se você o autenticou com êxito com a autenticação do Device Guard.
Importante
Para obter o isolamento, implante a política de CI do WDAC para confiar em aplicativos autenticados com DGSSv2. Certifique-se de ler a documentação readme_cmdlets e a documentação de migração do DGSSv1 para o DGSSv2 incluída no pacote NuGet.
Erros comuns
Veja a seguir os erros comuns que podem ser encontrados.
- 0x800700d: esse erro comum significa que o formato do arquivo JSON do Azure AD é inválido.
- Talvez seja necessário aceitar os termos e condições da Microsoft Store para Empresas antes de baixar o certificado raiz da autenticação do Device Guard. Isso pode ser feito adquirindo um aplicativo gratuito no portal.