Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Activez le chiffrement à clé publique pour l'authentification initiale (PKINIT) pour vos utilisateurs gérés de AWS Microsoft AD
AWS Les annuaires Microsoft AD gérés utilisent par défaut une liaison de certificats renforcée, ce qui nécessite un mappage explicite entre les certificats et les objets AD. Les mappages suivants sont considérés comme fiables pour AWS Managed Microsoft AD :
-
altSecurityIdentities
Émetteur et numéro de série -
altSecurityIdentities
Identifiant clé du sujet -
altSecurityIdentities
SHA1 Hachage de la clé publique
Ces attributs permettent un mappage renforcé des certificats, qui renforce la sécurité de l'authentification basée sur les certificats en exigeant certificate-to-user des relations explicites définies dans Active Directory. Cela permet de prévenir les attaques d'escalade de privilèges basées sur les certificats
Vous pouvez utiliser cette procédure pour configurer des liaisons de certificats renforcées afin de prévenir les attaques par augmentation de privilèges tout en préservant la fonctionnalité d'authentification des certificats.
Pour plus d'informations, voir Microsoft KB5 014754 : Modifications de l'authentification basée sur des certificats sur les contrôleurs
Prérequis
-
Un annuaire Microsoft AD AWS géré avec une autorité de certification configurée
-
Accès administratif à votre environnement Active Directory
-
PowerShell avec le module Active Directory installé
-
Le certificat que vous souhaitez associer à l'objet AD
AltSecurityIdentityAttribut de carte
-
Choisissez l'une des méthodes de
AltSecurityIdentity
mappage suivantes en fonction des informations de votre certificat :-
SHA1 hash — Utilise le SHA1 hachage de la clé publique du certificat
Pour le mappage de SHA1 hachage, extrayez le hachage du certificat et appliquez-le à l'objet utilisateur :
$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"}
-
Émetteur et numéro de série : utilise le nom et le numéro de série de l'émetteur du certificat
Pour le mappage de l'émetteur et du numéro de série, utilisez l'émetteur et le numéro de série du certificat :
$Username = 'YourUsername' $IssuerName = 'YourCertificateIssuer' $SerialNumber = 'YourCertificateSerialNumber' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<I>$IssuerName<SR>$SerialNumber"}
-
Identifiant de clé d'objet : utilise l'extension d'identifiant de clé d'objet du certificat
Pour le mappage de l'identifiant de clé d'objet, utilisez l'identifiant de clé d'objet du certificat :
$Username = 'YourUsername' $SubjectKeyIdentifier = 'YourSubjectKeyIdentifier' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<SKI>$SubjectKeyIdentifier"}
-
-
Vérifiez que le mappage a été correctement appliqué :
Get-ADUser -Identity $Username -Properties altSecurityIdentities | Select-Object -ExpandProperty altSecurityIdentities
-
Attendez que la réplication Active Directory soit terminée (généralement 15 à 30 secondes) avant de tester l'authentification par certificat.
Exemple : certificat groupé mappant l' AltSecurityIdentity attribut
L'exemple suivant montre comment mapper un AltSecurityIdentity
attribut pour plusieurs certificats utilisateur à partir d'une autorité de certification :
$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} } }
Étapes suivantes
-
Testez l'authentification basée sur les certificats avec vos certificats mappés
-
Configurez vos applications pour utiliser les certificats mappés pour l'authentification
-
Surveillez votre Microsoft AD AWS gérépour les événements d'authentification