Delen via


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

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.

  1. Bestaat, Member_of
  2. Bevat, Any_of
  3. ==, !=, <, <=, >, >=
  4. !
  5. &&
  6. ||

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))

[MS-DTYP]: Beschrijvingstaal van beveiligingsdescriptor