AD objektumok hozzáférési listájának kezelése

Miután jelenleg az AD adatbázisa PSDrive-ként nem elérhető a PowerShell 1.0-ban, így kicsit körülményesebb a hozzáférési lista kezelése. Ráadásul az ADSI objektumoknál láttuk, hogy a PowerShell adaptációs rétege sok tulajdonságot és metódust elrejt, például épp a hozzáférési listával kapcsolatos adatokat, így itt is szükségünk van a PSBase nézet használatára.

Elsőként nézzük, hogy egy konkrét AD objektum, jelen esetben egy felhasználó hozzáférési listáját hogyan lehet kiolvasni:

[PS] C:\>$u= [ADSI] "LDAP://cn=János Vegetári,OU=Demó,DC=adatum,DC=com"

[PS] C:\>$acl = $u.psbase.objectsecurity

[PS] C:\>$acl.GetAccessRules($true,$true,[System.Security.Principal.Security

Identifier])

 

 

ActiveDirectoryRights : GenericRead

InheritanceType       : None

ObjectType            : 00000000-0000-0000-0000-000000000000

InheritedObjectType   : 00000000-0000-0000-0000-000000000000

ObjectFlags           : None

AccessControlType     : Allow

IdentityReference     : S-1-5-10

IsInherited           : False

InheritanceFlags      : None

PropagationFlags      : None

...

A $acl változó tartalmazná a hozzáférési listát, de valójában ezt nem tudjuk közvetlenül kiolvasni egy propertyből, hanem egy metódust kell meghívni (GetAccessRules), hogy emberi fogyasztásra alkalmas információkhoz jussunk. Ezen metódusnak paramétereket kell átadni a következők szerint:

PS C:\> $acl.GetAccessRules.Value

 

 

MemberType          : Method

OverloadDefinitions : {System.Security.AccessControl.AuthorizationRuleColle

                      ction GetAccessRules(Boolean includeExplicit, Boolean

                       includeInherited, Type targetType)}

TypeNameOfValue     : System.Management.Automation.PSMethod

Value               : System.Security.AccessControl.AuthorizationRuleCollec

                      tion GetAccessRules(Boolean includeExplicit, Boolean

                      includeInherited, Type targetType)

Name                : GetAccessRules

IsInstance          : True

Az első bool paraméterrel lehet szabályozni, hogy kíváncsi vagyok-e az explicit hozzáférési bejegyzésekre, a második bool paraméter szabályozza, hogy kíváncsi vagyok-e az örökölt hozzáférési bejegyzésekre. A harmadik paraméter a zűrösebb, azzal lehet szabályozni, hogy a metódus kimenete milyen formátumú legyen. Én a fenti példában SID-ekre kértem, hogy fordítsa le a bejegyzéseket. Ez nem biztos, hogy jól értelmezhető, így használhatunk egy másik paraméterezési formát is, amellyel a felhasználói fiókok neveit kapjuk vissza a hozzáférési bejegyzésekben:

[PS] C:\>$acl.GetAccessRules($true,$true,[System.Security.Principal.NTAccoun

t])

 

 

ActiveDirectoryRights : GenericRead

InheritanceType       : None

ObjectType            : 00000000-0000-0000-0000-000000000000

InheritedObjectType   : 00000000-0000-0000-0000-000000000000

ObjectFlags           : None

AccessControlType     : Allow

IdentityReference     : NT AUTHORITY\SELF

IsInherited           : False

InheritanceFlags      : None

PropagationFlags      : None

...

A tulajdonosra is szükségünk lehet, ahhoz a GetOwner metódussal juthatunk hozzá, szintén használhatnánk akár a SID-es formátumot is, de talán itt is gyakoribb az olvasmányosabb nevek használata:

[PS] C:\>$acl.GetOwner([System.Security.Principal.NTAccount])

 

Value

-----

ADATUM\Judy

Azért álljon itt emlékeztetőül a SID-es formátum listázása is:

[PS] C:\>$acl.GetOwner([System.Security.Principal.SecurityIdentifier])

 

             BinaryLength AccountDomainSid         Value

             ------------ ----------------         -----

                       28 S-1-5-21-150787130-28... S-1-5-21-150787130-28...

A hozzáférési listák módosításához szintén számos metódust tudunk segítségül hívni:

ModifyAccessRule                Method         System.Boolean ModifyAcce...

ModifyAuditRule                 Method         System.Boolean ModifyAudi...

PurgeAccessRules                Method         System.Void PurgeAccessRu...

PurgeAuditRules                 Method         System.Void PurgeAuditRul...

RemoveAccess                    Method         System.Void RemoveAccess(...

RemoveAccessRule                Method         System.Boolean RemoveAcce...

RemoveAccessRuleSpecific        Method         System.Void RemoveAccessR...

RemoveAudit                     Method         System.Void RemoveAudit(I...

RemoveAuditRule                 Method         System.Boolean RemoveAudi...

RemoveAuditRuleSpecific         Method         System.Void RemoveAuditRu...

ResetAccessRule                 Method         System.Void ResetAccessRu...

SetAccessRule                   Method         System.Void SetAccessRule...

SetAccessRuleProtection         Method         System.Void SetAccessRule...

SetAuditRule                    Method         System.Void SetAuditRule(...

SetAuditRuleProtection          Method         System.Void SetAuditRuleP...

SetGroup                        Method         System.Void SetGroup(Iden...

SetOwner                        Method         System.Void SetOwner(Iden...

A könyv keretein túlmutat, hogy mindegyiket külön bemutassam, de ezen információk alapján azt hiszem, el lehet indulni.



Word To HTML Converter