Hoofdstuk 12 - Les 2

Access Control Lists (ACL) wordt door het OS gebruikt om de toegang te beperken van bestanden, mappen printers, services en registerwaarden.
Discretionary Access Control List (DACL) is een autorisatie restrictie mechanisme die de gebruikers en groepen identificeert die toegang hebben tot een object. Als een gebruiker toegang wilt tot een object en niet voorkomt in een DACL wordt de toegang ontzegt. Een entry (die toegang verschaft tot een object) in een DACL wordt een Access Control Entry (ACE) genoemd.
Als een DACL direct wordt toegewezen aan een object heet dit explicit permission geven.
Windows maakt gebruik van overerving als het gaat om rechten geven. Als een map of bestand wordt aangemaakt erft deze de rechten van zijn parent.
Een gebruiker kan meerdere ACEs hebben. Dit komt doordat gebruikers in meerdere groepen kunnen zitten en groepen kunnen weer in groepen zitten. Windows telt alle rechten van een gebruiker bij elkaar op geeft de gebruiker dan de hoogste rechten, tenzij er ergens een deny op zit. Een deny gaat boven alles. Geen ACEs in een ACL voor een gebruiker betekent geen toegang tot het object.
In .NET wordt gebruik gemaakt van de FileSystemRights enumeratie om bestands- en map permissions te specificeren.

Een Security Access Control List (SACL) is een manier van gebruiken voor het log mechanisme welke bepaalt hoe map of bestandstoegang wordt verleend. SACL kan geen toegang verbieden (wat DACL dus wel kan) tot een object. SACL kan ervoor zorgen dat een log entry gemaakt wordt wanneer een gebruiker een bestand of map opent. Dit kan gebruikt worden voor troubleshoot doeleinden.
Voor de duidelijkheid: DACL regelt de toegang en SACL registreert de toegang.
Standaard logt Windows geen auditing events. Eerst dient het Audit Object Access security policy worden aangezet.

De System.Security.AccessControl namespace bevat verschillende classes voor het bekijken en configureren van ACLs voor verschillende type objecten. Voor elk resource type biedt deze namespace drie ACL classes:
  1. Security – De meest gebruikte class. Biedt methods aan voor het ophalen van DACLs of SACLS collecties en toevoegen en verwijderen van ACLs. Alle classes erven van NativeObjectSecurity.
  2. AccessRule – Representeert een set van toegangsrechten voor een gebruiker of groep.
  3. AuditRole – Representeert een set van toegangsrechten die audited worden voor een groep of gebruiker.
Om een instantie te verkrijgen van de AuthorizationRuleCollection class, dient de methode Security.GetAccessRules te worden aangeroepen.
De volgende code laat zien hoe de DACL getoond kan worden van een map:
DirectorySecurity ds = new DirectorySecurity(@”C:\Program Files”, AccessControlSections.Access);
AuthorizationRuleCollection rc = ds.GetAccessRules(true, true, typeof(NTAccouint));
foreach(FileSystemAccessRole ar in arc)
{
Console.WriteLine(ar.IdentityReference + “: “ + ar.AccessControlType + “ “ + ar.FileSystemRights);
}
Het volgende code voorbeeld voegt een access rule toe aan een folder door Guest Read toegang te geven op een map:
String dir = @“C:\test”;
DirectorySecurity ds = Directory.GetAccessControl(dir);
ds.AddAccessRule(new FileSystemAccessRule(“Guest” , FileSystemRights.Read, AccessControlType.Allow));
Directory.SetAccessControl(dir, ds);
De volgende code demonstreert hoe een access role kan worden toegepast op een map door de Guest account lees rechten te geven op C:\Test
string dir = @"C:\Test";
DirectorySecurity ds = Directory.GetAccessControl(dir);
ds.AddAccessRule(new FileSystemAccessRule("Guest", FileSystemRights.Read, AccessControlType.Allow));
Directory.SetAccessControl(dir, ds);

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren