Habilite a criptografia de chave pública para autenticação inicial (PKINIT) para seus usuários gerenciados AWS do Microsoft AD - AWS Directory Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Habilite a criptografia de chave pública para autenticação inicial (PKINIT) para seus usuários gerenciados AWS do Microsoft AD

AWS Os diretórios gerenciados do Microsoft AD usam vinculação forte de certificados por padrão, o que requer mapeamento explícito entre certificados e objetos do AD. Os mapeamentos a seguir são considerados fortes para o Managed AWS Microsoft AD:

  • Emissor e número de série altSecurityIdentities

  • Identificador de chave do requerente altSecurityIdentities

  • altSecurityIdentities SHA1 Hash da chave pública

Esses atributos permitem um mapeamento robusto de certificados, que fornece melhor segurança para a autenticação baseada em certificados ao exigir certificate-to-user relacionamentos explícitos definidos no Active Directory. Isso ajuda a evitar ataques de escalonamento de privilégios baseados em certificados

Você pode usar esse procedimento para configurar associações de certificado fortes para ajudá-lo a evitar ataques de escalonamento de privilégios e, ao mesmo tempo, manter a funcionalidade de autenticação de certificados.

Para obter mais informações, consulte Microsoft KB5014754: alterações na autenticação baseada em certificado em controladores de domínio do Windows

Pré-requisitos

  • Um diretório AWS gerenciado do Microsoft AD com autoridade de certificação configurada

  • Acesso administrativo ao ambiente do Active Directory

  • PowerShell com o módulo Active Directory instalado

  • O certificado que você deseja mapear para o objeto AD

AltSecurityIdentity Atributo do mapa

  1. Escolha um dos métodos de mapeamento AltSecurityIdentity a seguir com base nas informações do certificado:

    • SHA1 hash — Usa o SHA1 hash da chave pública do certificado

      Para mapeamento de SHA1 hash, extraia o hash do certificado e aplique-o ao objeto do usuário:

      $Username = 'YourUsername' $cert = certutil -dump "YourCertificate.cer" $certHash = ($cert | Select-String -Pattern "(sha1):*" | Select-String -Pattern "Cert").ToString().TrimStart('Cert Hash(sha1): ').Replace(' ','') Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<SHA1-PUKEY>$CertHash"}
    • Emissor e número de série — Usa o nome do emissor e o número de série do certificado

      Para mapeamento do emissor e do número de série, use o emissor e o número de série do certificado:

      $Username = 'YourUsername' $IssuerName = 'YourCertificateIssuer' $SerialNumber = 'YourCertificateSerialNumber' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<I>$IssuerName<SR>$SerialNumber"}
    • Identificador de chave de assunto — Usa a extensão de identificador de chave de assunto do certificado

      Para mapear o identificador da chave de assunto, use o identificador da chave de assunto do certificado:

      $Username = 'YourUsername' $SubjectKeyIdentifier = 'YourSubjectKeyIdentifier' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<SKI>$SubjectKeyIdentifier"}
  2. Verifique se o mapeamento foi aplicado com sucesso:

    Get-ADUser -Identity $Username -Properties altSecurityIdentities | Select-Object -ExpandProperty altSecurityIdentities
  3. Aguarde a conclusão da replicação do Active Directory (normalmente de 15 a 30 segundos) antes de testar a autenticação do certificado.

Exemplo: certificado em massa mapeando o AltSecurityIdentity atributo

O exemplo a seguir demonstra como mapear AltSecurityIdentity atributos para vários certificados de usuário de uma autoridade de certificação:

$CertificateTemplateName = 'User' $Now = $((Get-Date).ToString($(Get-culture).DateTimeFormat.ShortDatePattern)) $Restrict = "Disposition=20,NotAfter>=$Now,Certificate Template=$CertificateTemplateName" $Out = "SerialNumber,Certificate Hash,User Principal Name,RequesterName,CommonName,CertificateTemplate,NotBefore,NotAfter" $Certs = certutil -view -restrict $Restrict -out $Out csv | ConvertFrom-CSV $UserSha1HashMapping = @{} ForEach ($Cert in $Certs) { $UPN = $Cert.'User Principal Name' $Username, $Domain = $UPN.Split('@') $CertificateThumbprint = ($Cert.'Certificate Hash').Replace(' ','') $AdUserObject = Get-ADUser -Identity $Username If ($AdUserObject -And $AdUserObject.Count -gt 1) { Write-Output "Unable to map user: $Username, multiple user objects found" Continue } If ($AdUserObject) { If ($UserSha1HashMapping.Keys -Contains $Username) { $UserSha1HashMapping[$Username] += $CertificateThumbprint } Else { $UserSha1HashMapping[$Username] = @($CertificateThumbprint) } } } ForEach ($User in $UserSha1HashMapping.Keys) { Write-Output "Mapping altSecurityIdentity for $User" $UserObject = Get-ADUser -Identity $User | Get-ADObject -Properties 'altSecurityIdentities' $altSecurityIdentities = $UserObject.altSecurityIdentities ForEach ($thumbprint in $UserSha1HashMapping[$User]) { $SHA1PUKEY = "X509:<SHA1-PUKEY>$thumbprint" If ($altSecurityIdentities -Contains $SHA1PUKEY) { Write-Output "Skipping $thumbprint, already mapped." Continue } Write-Output "Adding $thumbprint to $User as altSecurityIdentity" Set-ADUser -Identity $User -Add @{'altSecurityIdentities'=$SHA1PUKEY} } }

Próximas etapas

  • Teste a autenticação baseada em certificado com um certificado mapeado

  • Configurar as aplicações para usarem os certificados mapeados para autenticação

  • Monitore seu Microsoft AD AWS gerenciado para eventos de autenticação