Aktifkan Kriptografi Kunci Publik untuk Otentikasi Awal (PKINIT) untuk pengguna Microsoft AD yang Dikelola AWS - AWS Directory Service

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Aktifkan Kriptografi Kunci Publik untuk Otentikasi Awal (PKINIT) untuk pengguna Microsoft AD yang Dikelola AWS

AWS Direktori Microsoft AD yang dikelola menggunakan pengikatan sertifikat yang kuat secara default, yang memerlukan pemetaan eksplisit antara sertifikat dan objek AD. Pemetaan berikut dianggap kuat untuk AWS Microsoft AD yang Dikelola:

  • altSecurityIdentitiesPenerbit dan Nomor Seri

  • altSecurityIdentitiesPengidentifikasi Kunci Subjek

  • altSecurityIdentities SHA1 Hash Kunci Publik

Atribut ini memungkinkan pemetaan sertifikat yang kuat, yang memberikan keamanan yang lebih baik untuk otentikasi berbasis sertifikat dengan mewajibkan certificate-to-user hubungan eksplisit yang ditentukan dalam Active Directory. Ini membantu mencegah serangan eskalasi hak istimewa berbasis sertifikat

Anda dapat menggunakan prosedur ini untuk mengonfigurasi binding sertifikat yang kuat untuk membantu Anda mencegah serangan eskalasi hak istimewa sambil mempertahankan fungsionalitas otentikasi sertifikat.

Untuk informasi selengkapnya, lihat Microsoft KB5014754: Perubahan autentikasi berbasis sertifikat pada pengontrol domain Windows

Prasyarat

  • Direktori Microsoft AD AWS Terkelola dengan otoritas sertifikat yang dikonfigurasi

  • Akses administratif ke lingkungan Direktori Aktif

  • PowerShell dengan modul Active Directory diinstal

  • Sertifikat yang ingin Anda petakan ke objek AD

AltSecurityIdentity Atribut peta

  1. Pilih salah satu metode AltSecurityIdentity pemetaan berikut berdasarkan informasi sertifikat Anda:

    • SHA1 hash — Menggunakan SHA1 hash dari kunci publik sertifikat

      Untuk pemetaan SHA1 hash, ekstrak hash sertifikat dan terapkan ke objek pengguna:

      $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"}
    • Penerbit dan Nomor Seri — Menggunakan nama penerbit sertifikat dan nomor seri

      Untuk pemetaan Emiten dan Nomor Seri, gunakan penerbit sertifikat dan nomor seri:

      $Username = 'YourUsername' $IssuerName = 'YourCertificateIssuer' $SerialNumber = 'YourCertificateSerialNumber' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<I>$IssuerName<SR>$SerialNumber"}
    • Pengenal Kunci Subjek - Menggunakan ekstensi pengidentifikasi kunci subjek sertifikat

      Untuk pemetaan Pengenal Kunci Subjek, gunakan pengenal kunci subjek sertifikat:

      $Username = 'YourUsername' $SubjectKeyIdentifier = 'YourSubjectKeyIdentifier' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<SKI>$SubjectKeyIdentifier"}
  2. Verifikasi bahwa pemetaan berhasil diterapkan:

    Get-ADUser -Identity $Username -Properties altSecurityIdentities | Select-Object -ExpandProperty altSecurityIdentities
  3. Tunggu replikasi Active Directory selesai (biasanya 15-30 detik) sebelum menguji otentikasi sertifikat.

Contoh: Sertifikat massal memetakan atribut AltSecurityIdentity

Contoh berikut menunjukkan cara memetakan AltSecurityIdentity atribut untuk beberapa sertifikat pengguna dari otoritas sertifikat:

$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} } }

Langkah selanjutnya

  • Uji otentikasi berbasis sertifikat dengan sertifikat yang dipetakan

  • Konfigurasikan aplikasi Anda untuk menggunakan sertifikat yang dipetakan untuk otentikasi

  • Pantau iklan Microsoft yang AWS Dikelolauntuk acara otentikasi