Puncte:0

Cum pot seta ACL-ul unui CA în mod programatic?

drapel th

La lansarea consolei CA (certsrv.msc), pot face clic dreapta pe CA-ul meu, select Proprietăți și apoi pot modifica ACL-ul CA-ului meu în Securitate fila. Când îl modific, modificările sunt aplicate obiectului AD la:

CN=MY-CA,CN=Servicii de înscriere,CN=Servicii cu chei publice,CN=Servicii,CN=Configurare,DC=contoso,DC=com

Când îl văd în editorul ADSI, intrările ACL modificate nu sunt moștenite, ci aplicate direct (după cum era de așteptat). Dar când schimb ACL-ul acestui obiect în mod programatic, de ex. g. de:

Import-Module ActiveDirectory
$path = 'AD:CN=MY-CA,CN=Servicii de înscriere,CN=Servicii cu chei publice,CN=Servicii,CN=Configurare,DC=contoso,DC=com'
$acl = Get-Acl -Path $cale
$acl.AddAccessRule(...)
Set-Acl -Path $cale -AclObject $acl

Apoi pot vedea acele modificări în editorul ADSI, dar nu pot vedea acele modificări, când văd ACL-ul CA-ului meu prin consola CA.

Deci, fac ceva greșit? Trebuie să modific și alte obiecte programatic?


Ce am incercat:

  • După modificare, am forțat AD să se sincronizeze cu: repadmin /syncall /Aed
  • Am repornit serviciul CA certsvc

Dar nu pare să fie o problemă de „sincronizare”...

Puncte:2
drapel cn

Aceste ACL-uri sunt oarecum diferite. ACL pe obiectul AD afectează numai intrarea AD și nu sunt propagate până la CA.

ACL-urile pe care le vedeți în consola CA Management sunt stocate în configurația CA, în registry.

Nu sunt sigur dacă există o modalitate ușoară de a edita permisiunile pe CA folosind PowerShell nativ (fără instrumente terță parte). Cu toate acestea, aș recomanda să utilizați PowerShell PKI modul pentru a simplifica sarcina. Modulul conține mai multe comenzi legate de ACL:

p.s. Sunt autorul acestui modul PSPKI

Fiecare comandă are ajutor încorporat și online, cu exemple utile despre cum să utilizați fiecare comandă.

drapel cn
Trebuie să reporniți serviciul CA după ce ați scris în registry. CA citește configurația numai la pornirea serviciului și nu caută modificări până la următoarea pornire.
Puncte:0
drapel th

Datorită indicatorilor de Cripta32 și câteva surse suplimentare1, am venit cu în plus modificările necesare care trebuie efectuate în registrul CA:

# Obțineți descriptorul de securitate binar al CA din registru
$sd_bin = Get-ItemPropertyValue -Cale „Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\MY-CA” -Nume „Securitate”

# Creați un obiect descriptor de securitate al acestuia
$sd = New-Object -TypeName System.Security.AccessControl.CommonSecurityDescriptor -ArgumentList @($false, $false, $sd_bin, 0)

# Modificați DACL-ul pe loc
$sd.DiscretionaryAcl.AddAccess([System.Security.AccessControl.AccessControlType]::Allow, „<SID>”, <INT32_PERMISSIONS>, [System.Security.AccessControl.InheritanceFlags]::None, [System.AccessControl. PropagationFlags]::Niciuna)

# Convertiți descriptorul de securitate înapoi în formă binară
$sd_bin_new = [System.Byte[]]::CreateInstance([System.Byte], $sd.BinaryLength)
$sd.GetBinaryForm($sd_bin_new, 0)

# Scrieți-l înapoi în registru
Set-ItemProperty -Cale „Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\MY-CA” -Nume „Securitate” -Valoare $sd_bin_new

# Reporniți serviciile de certificat
Restart-Service -Nume CertSvc

1Lectură suplimentară:

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.