Definitietaal voor beveiligingsdescriptor voor voorwaardelijke ACL's
Met een voorwaardelijke toegangsbeheervermelding (ACE) kan een toegangsvoorwaarde worden geëvalueerd wanneer een toegangscontrole wordt uitgevoerd. SdDL (Security Descriptor Definition Language) biedt syntaxis voor het definiëren van voorwaardelijke ACL's in een tekenreeksindeling.
De SDDL voor een voorwaardelijke ACE is hetzelfde als voor elke ACE, waarbij de syntaxis voor de voorwaardelijke instructie is toegevoegd aan het einde van de ACE-tekenreeks. Zie Security Descriptor Definition Languagevoor meer informatie over SDDL.
Het teken '#' staat voor '0' in resourcekenmerken. Bijvoorbeeld D:AI(XA; OICI;FA;; Witte dwerg; (OctetStringType==#1#2#3##)) is gelijk aan en geïnterpreteerd als D:AI(XA; OICI;FA;; Witte dwerg; (OctetStringType==#01020300)).
- voorwaardelijke ACE-tekenreeksindeling
- Voorwaardelijke expressies
- kenmerken
- Operators
- operatorprioriteit
- onbekende waarden
- Voorwaardelijke ACE-evaluatie
- voorbeelden
- Verwante onderwerpen
Voorwaardelijke ACE-tekenreeksindeling
Elke ACE in een beveiligingsdescriptor tekenreeks staat tussen haakjes. De velden van de ACE bevinden zich in de volgende volgorde en worden gescheiden door puntkomma's (;).
AceType**;AceFlags;rechten;ObjectGuid-;InheritObjectGuid;AccountSid;(ConditionalExpression)**
De velden zijn zoals beschreven in ACE-tekenreeksen, met de volgende uitzonderingen.
Het veld AceType kan een van de volgende tekenreeksen zijn.
ACE-typetekenreeks Constante in Sddl.h AceType-waarde "XA" SDDL_CALLBACK_ACCESS_ALLOWED ACCESS_ALLOWED_CALLBACK_ACE_TYPE "XD" SDDL_CALLBACK_ACCESS_DENIED ACCESS_DENIED_CALLBACK_ACE_TYPE De ACE-tekenreeks bevat een of meer voorwaardelijke expressies, tussen haakjes aan het einde van de tekenreeks.
Voorwaardelijke expressies
Een voorwaardelijke expressie kan een van de volgende elementen bevatten.
Expressie-element | Beschrijving |
---|---|
AttributeName- |
Test of het opgegeven kenmerk een niet-nulwaarde heeft. |
bestaatAttributeName- |
Test of het opgegeven kenmerk bestaat in de clientcontext. |
AttributeNameOperatorValue |
Retourneert het resultaat van de opgegeven bewerking. |
ConditionalExpression**||**ConditionalExpression |
Test of een van de opgegeven voorwaardelijke expressies waar is. |
ConditionalExpression&&ConditionalExpression |
Test of beide voorwaardelijke expressies waar zijn. |
! (ConditionalExpression) |
De inverse van een voorwaardelijke expressie. |
Member_of{SidArray} |
Test of de SID_AND_ATTRIBUTES matrix van de clientcontext alle beveiligings-id's (SID's) bevat in de door komma's gescheiden lijst die is opgegeven door SidArray-. Voor ACL's toestaan moet een clientcontext-SID de SE_GROUP_ENABLED kenmerk hebben ingesteld om als een overeenkomst te worden beschouwd. Voor weigeren-ACL's moet een clientcontext-SID de SE_GROUP_ENABLED of het SE_GROUP_USE_FOR_DENY_ONLY kenmerk hebben ingesteld om als een overeenkomst te worden beschouwd. De SidArray matrix kan SID-tekenreeksen (bijvoorbeeld 'S-1-5-6' of SID-aliassen (bijvoorbeeld 'BA' bevatten |
Kenmerken
Een kenmerk vertegenwoordigt een element in de AUTHZ_SECURITY_ATTRIBUTES_INFORMATION matrix in de clientcontext. Een kenmerknaam kan alfanumerieke tekens en een van de tekens ':', '/', '' en '_' bevatten.
Een kenmerkwaarde kan een van de volgende typen zijn.
Waardetype | Beschrijving |
---|---|
Geheel getal |
Een 64-bits geheel getal in decimale of hexadecimale notatie. |
Snaar |
Een tekenreekswaarde gescheiden door aanhalingstekens. |
SID |
SID(S-1-1-0) of SID(BA). Moet op RHS van Member_of of Device_Member_of zijn. |
BLOB |
# gevolgd door hexadecimale getallen. Als de lengte van de getallen oneven is, wordt het getal omgezet in een 0 om het even te maken. Ook wordt een # ergens anders in de waarde omgezet in een 0. |
Exploitanten
De volgende operators worden gedefinieerd voor gebruik in voorwaardelijke expressies om de waarden van kenmerken te testen. Dit zijn allemaal binaire operatoren en worden gebruikt in de vorm AttributeNameOperatorValue.
Bediener | Beschrijving |
---|---|
== |
Conventionele definitie. |
!= |
Conventionele definitie. |
< |
Conventionele definitie. |
<= |
Conventionele definitie. |
> |
Conventionele definitie. |
>= |
Conventionele definitie. |
Bevat |
TRUE als de waarde van het opgegeven kenmerk een superset van de opgegeven waarde is; anders ONWAAR. |
Any_of |
TRUE als de opgegeven waarde een superset is van de waarde van het opgegeven kenmerk; anders ONWAAR. |
Daarnaast worden de unaire operatoren Bestaan, Member_of en negatie (!) gedefinieerd zoals beschreven in de tabel Voorwaardelijke expressies.
De operator Contains moet worden voorafgegaan en gevolgd door witruimte en de operator 'Any_of' moet worden voorafgegaan door witruimte.
Prioriteit van operator
De operators worden geëvalueerd in de volgende volgorde van prioriteit, waarbij bewerkingen van gelijke prioriteit van links naar rechts worden geëvalueerd.
- Bestaat, Member_of
- Bevat, Any_of
- ==, !=, <, <=, >, >=
- !
- &&
- ||
Daarnaast kan elk gedeelte van een voorwaardelijke expressie tussen haakjes worden ingesloten. Expressies tussen haakjes worden eerst geëvalueerd.
Onbekende waarden
De resultaten van voorwaardelijke expressies retourneren soms een waarde van Onbekend. Een van de relationele bewerkingen retourneert bijvoorbeeld Onbekend wanneer het opgegeven kenmerk niet bestaat.
In de volgende tabel worden de resultaten beschreven voor een logische bewerking AND tussen twee voorwaardelijke expressies, ConditionalExpression1 en ConditionalExpression2.
ConditionalExpression1- | ConditionalExpression2- | ConditionalExpression1&&ConditionalExpression2 |
---|---|---|
TRUE- |
TRUE- |
TRUE- |
TRUE- |
ONWAAR |
ONWAAR |
TRUE- |
ONBEKENDE |
ONBEKENDE |
ONWAAR |
TRUE- |
ONWAAR |
ONWAAR |
ONWAAR |
ONWAAR |
ONWAAR |
ONBEKENDE |
ONWAAR |
ONBEKENDE |
TRUE- |
ONBEKENDE |
ONBEKENDE |
ONWAAR |
ONWAAR |
ONBEKENDE |
ONBEKENDE |
ONBEKENDE |
In de volgende tabel worden de resultaten beschreven voor een logische OF bewerking tussen twee voorwaardelijke expressies, ConditionalExpression1 en ConditionalExpression2.
ConditionalExpression1- | ConditionalExpression2- | ConditionalExpression1||ConditionalExpression2 |
---|---|---|
TRUE- |
TRUE- |
TRUE- |
TRUE- |
ONWAAR |
TRUE- |
TRUE- |
ONBEKENDE |
TRUE- |
ONWAAR |
TRUE- |
TRUE- |
ONWAAR |
ONWAAR |
ONWAAR |
ONWAAR |
ONBEKENDE |
ONBEKENDE |
ONBEKENDE |
TRUE- |
TRUE- |
ONBEKENDE |
ONWAAR |
ONBEKENDE |
ONBEKENDE |
ONBEKENDE |
ONBEKENDE |
De negatie van een voorwaardelijke expressie met de waarde UNKNOWN is ook UNKNOWN.
Voorwaardelijke ACE-evaluatie
In de volgende tabel wordt het resultaat van de toegangscontrole van een voorwaardelijke ACE beschreven, afhankelijk van de uiteindelijke evaluatie van de voorwaardelijke expressie.
ACE-type | WAAR | VALS | ONBEKEND |
---|---|---|---|
Toestaan |
Toestaan |
ACE negeren |
ACE negeren |
Ontkennen |
Ontkennen |
ACE negeren |
Ontkennen |
Voorbeelden
In de volgende voorbeelden ziet u hoe het opgegeven toegangsbeleid wordt vertegenwoordigd door een voorwaardelijke ACE die is gedefinieerd met behulp van SDDL.
-
beleid voor
-
Sta Execute to Everyone toe als aan beide van de volgende voorwaarden wordt voldaan:
- Titel = PM
- Afdeling = Financiën of Divisie = Verkoop
-
SDDL
-
D:(XA; ; FX;;; S-1-1-0; (@User.Title=="PM" && (@User.Division=="Finance" || @User.Division ==" Sales")))
-
beleid voor
-
Uitvoeren toestaan als een van de gebruikersprojecten elkaar kruist met de projecten van het bestand.
-
SDDL
-
D:(XA; ; FX;;; S-1-1-0; (@User.Project Any_of @Resource.Project))
-
beleid voor
-
Leestoegang toestaan als de gebruiker zich heeft aangemeld met een smartcard, een back-upoperator is en verbinding maakt vanaf een computer waarop Bitlocker is ingeschakeld.
-
SDDL
-
D:(XA; ;FR;;; S-1-1-0; (Member_of {SID(Smartcard_SID), SID(BO)} && @Device.Bitlocker))