AWS Managed Microsoft AD ユーザーの初回認証 (PKINIT) 用のパブリックキー暗号化を有効にする - AWS Directory Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Managed Microsoft AD ユーザーの初回認証 (PKINIT) 用のパブリックキー暗号化を有効にする

AWS Managed Microsoft AD ディレクトリは、デフォルトで強力な証明書バインディングを使用します。そのためには、証明書と AD オブジェクト間の明示的なマッピングが必要です。 AWS Managed Microsoft AD では、次のマッピングが強力と見なされます。

  • altSecurityIdentities 発行者とシリアル番号

  • altSecurityIdentities サブジェクトキー識別子

  • altSecurityIdentities パブリックキーの SHA1 ハッシュ

これらの属性により強力な証明書マッピングが可能になり、Active Directory で定義された明示的な証明書certificate-to-userベースの認証のセキュリティが向上します。これにより、証明書ベースの特権エスカレーション攻撃を防ぐことができます。

この手順を使用して、証明書認証機能を維持しながら特権エスカレーション攻撃を防ぐのに役立つ強力な証明書バインディングを設定できます。

詳細については、Microsoft Support ドキュメントの「Microsoft KB5014754: Windows ドメインコントローラーでの証明書ベースの認証の変更」を参照してください。

前提条件

  • 認証局が設定された AWS Managed 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 Managed Microsoft AD のモニタリング