AWS 관리형 Microsoft AD 사용자의 초기 인증을 위한 퍼블릭 키 암호화(PKINIT) 활성화 - AWS Directory Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS 관리형 Microsoft AD 사용자의 초기 인증을 위한 퍼블릭 키 암호화(PKINIT) 활성화

AWS 관리형 Microsoft AD 디렉터리는 기본적으로 강력한 인증서 바인딩을 사용하므로 인증서와 AD 객체 간의 명시적 매핑이 필요합니다. 다음 매핑은 AWS 관리형 Microsoft AD에 대해 강력한 것으로 간주됩니다.

  • altSecurityIdentities 발급자 및 일련 번호

  • altSecurityIdentities 주체 키 식별자

  • altSecurityIdentities SHA1 퍼블릭 키 해시

이러한 속성을 사용하면 강력한 인증서 매핑이 가능해지며, 이는 Active Directory에 인증서 대 사용자 관계를 명시적으로 정의할 것을 요구하여 인증서 기반 인증에서 더 나은 보안을 제공합니다. 이렇게 하면 인증서 기반 권한 에스컬레이션 공격을 방지하는 데 도움이 됩니다.

이 절차를 사용하여 인증서 인증 기능을 유지하면서도 권한 에스컬레이션 공격을 방지하는 데 도움이 되는 강력한 인증서 바인딩을 구성할 수 있습니다.

자세한 내용은 Microsoft 지원 설명서에서 Microsoft KB5014754- Windows 도메인 컨트롤러의 인증서 기반 인증 변경을 참조하세요.

사전 조건

  • 인증 기관이 구성된 AWS 관리형 Microsoft AD 디렉터리

  • Active Directory 환경에 대한 관리 액세스

  • Active Directory 모듈이 설치된 PowerShell

  • AD 객체에 매핑하려는 인증서

AltSecurityIdentity 속성 매핑

  1. 인증서 정보를 기반으로 다음 AltSecurityIdentity 매핑 방법 중 하나를 선택합니다.

    • SHA1 해시 - 인증서 퍼블릭 키의 SHA1 해시 사용

      SHA1 해시 매핑의 경우 인증서 해시를 추출하여 사용자 객체에 적용합니다.

      $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"}
    • 발급자 및 일련 번호 - 인증서의 발급자 이름과 일련 번호 사용

      발급자 및 일련 번호 매핑의 경우 인증서의 발급자 및 일련 번호를 사용합니다.

      $Username = 'YourUsername' $IssuerName = 'YourCertificateIssuer' $SerialNumber = 'YourCertificateSerialNumber' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<I>$IssuerName<SR>$SerialNumber"}
    • 주체 키 식별자 - 인증서의 주체 키 식별자 확장 사용

      주체 키 식별자 매핑의 경우 인증서의 주체 키 식별자를 사용합니다.

      $Username = 'YourUsername' $SubjectKeyIdentifier = 'YourSubjectKeyIdentifier' Set-ADUser -Identity $Username -Add @{'altSecurityIdentities'="X509:<SKI>$SubjectKeyIdentifier"}
  2. 매핑이 성공적으로 적용되었는지 확인합니다.

    Get-ADUser -Identity $Username -Properties altSecurityIdentities | Select-Object -ExpandProperty altSecurityIdentities
  3. 인증서 인증을 테스트하기 전에 Active Directory 복제가 완료될 때까지 기다립니다(일반적으로 15~30초).

예: AltSecurityIdentity 속성에 대량 인증서 매핑

다음 예시는 인증 기관에서 발급된 여러 사용자 인증서에 대해 AltSecurityIdentity 속성을 매핑하는 방법을 보여줍니다.

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

다음 단계

  • 매핑된 인증서를 사용하여 인증서 기반 인증 테스트

  • 매핑된 인증서를 인증에 사용하도록 애플리케이션 구성

  • 인증 이벤트를 위한 AWS 관리형 Microsoft AD 모니터링