Język definicji deskryptora zabezpieczeń dla warunkowych kontroli dostępu
Warunkowa kontroli dostępu (ACE) umożliwia ocenę warunku dostępu podczas sprawdzania dostępu. Język definicji deskryptora zabezpieczeń (SDDL) zapewnia składnię do definiowania warunkowych kontroli dostępu w formacie ciągu.
SdDL dla warunkowej ACE jest taka sama jak w przypadku każdej ACE, ze składnią instrukcji warunkowej dołączonej na końcu ciągu ACE. Aby uzyskać informacje na temat języka SDDL, zobacz Security Descriptor Definition Language.
Znak "#" jest synonimem "0" w atrybutach zasobów. Na przykład D:AI(XA; OICI;FA;; Biały karzeł; (OctetStringType==#1#2#3#)) jest równoważne i interpretowane jako D:AI(XA; OICI;FA;; Biały karzeł; (OctetStringType==#01020300)).
- format warunkowego ciągu ACE
- wyrażenia warunkowe
- atrybutów
- Operatory
- pierwszeństw o operatora
- nieznanych wartości
- warunkowej oceny ACE
- Przykłady
- Tematy pokrewne
Format warunkowego ciągu ACE
Każda aCE w deskryptorze zabezpieczeń ciąg jest ujęta w nawiasy. Pola ACE są w następującej kolejności i są oddzielone średnikami (;).
AceType**;AceFlags;Rights;ObjectGuid;InheritObjectGuid;AccountSid;(ConditionalExpression)**
Pola są opisane w ciągi ACE, z następującymi wyjątkami.
Pole AceType może być jednym z następujących ciągów.
Ciąg typu ACE Stała w pliku Sddl.h Wartość AceType "XA" SDDL_CALLBACK_ACCESS_ALLOWED ACCESS_ALLOWED_CALLBACK_ACE_TYPE "XD" SDDL_CALLBACK_ACCESS_DENIED ACCESS_DENIED_CALLBACK_ACE_TYPE Ciąg ACE zawiera co najmniej jedno wyrażenie warunkowe, ujęte w nawiasy na końcu ciągu.
Wyrażenia warunkowe
Wyrażenie warunkowe może zawierać dowolny z następujących elementów.
Expression, element | Opis |
---|---|
AttributeName |
Sprawdza, czy określony atrybut ma wartość niezerową. |
istniejeAttributeName |
Sprawdza, czy określony atrybut istnieje w kontekście klienta. |
AttributeName,wartość |
Zwraca wynik określonej operacji. |
ConditionalExpression**||**ConditionalExpression |
Sprawdza, czy którekolwiek z określonych wyrażeń warunkowych ma wartość true. |
ConditionalExpression&&ConditionalExpression |
Sprawdza, czy oba określone wyrażenia warunkowe są prawdziwe. |
! (ConditionalExpression) |
Odwrotność wyrażenia warunkowego. |
Member_of{SidArray} |
Sprawdza, czy tablica SID_AND_ATTRIBUTES kontekstu klienta zawiera wszystkie identyfikatory zabezpieczeń (SID) na liście rozdzielanej przecinkami określonymi przez SidArray. W przypadku opcji Zezwalaj na acE identyfikator SID kontekstu klienta musi mieć atrybut SE_GROUP_ENABLED, który ma być traktowany jako dopasowanie. W przypadku odmów acEs identyfikator SID kontekstu klienta musi mieć SE_GROUP_ENABLED lub atrybut SE_GROUP_USE_FOR_DENY_ONLY, który ma być traktowany jako dopasowanie. Tablica SidArray może zawierać ciągi SID (na przykład "S-1-5-6") lub aliasy SID (na przykład "BA" |
Atrybuty
Atrybut reprezentuje element w tablicy AUTHZ_SECURITY_ATTRIBUTES_INFORMATION w kontekście klienta. Nazwa atrybutu może zawierać dowolne znaki alfanumeryczne i dowolne znaki ":", "/", "." i "_".
Wartość atrybutu może być dowolnym z następujących typów.
Typ wartości | Opis |
---|---|
Liczba całkowita |
64-bitowa liczba całkowita w notacji dziesiętnej lub szesnastkowej. |
Struna |
Wartość ciągu rozdzielana cudzysłowami. |
SID |
SID(S-1-1-0) lub SID(BA). Musi być na RHS Member_of lub Device_Member_of. |
BLOB |
Liczba szesnastkowa, po której następuje liczba szesnastkowa. Jeśli długość liczb jest nieparzysta, wartość # jest tłumaczona na wartość 0, aby była parzysta. Ponadto wartość #wyświetlana w innym miejscu jest tłumaczona na wartość 0. |
Operatorów
Następujące operatory są definiowane do użycia w wyrażeniach warunkowych do testowania wartości atrybutów. Wszystkie te operatory są operatorami binarnymi i używane w postaci AttributeNameOperatorValue.
Operator | Opis |
---|---|
== |
Konwencjonalna definicja. |
!= |
Konwencjonalna definicja. |
< |
Konwencjonalna definicja. |
<= |
Konwencjonalna definicja. |
> |
Konwencjonalna definicja. |
>= |
Konwencjonalna definicja. |
Contains |
wartość TRUE, jeśli wartość określonego atrybutu jest nadzbiorem określonej wartości; w przeciwnym razie false. |
Any_of |
wartość TRUE, jeśli określona wartość jest nadzbiorem wartości określonego atrybutu; w przeciwnym razie false. |
Ponadto operatory jednoargumentowe istnieją, Member_of i negacja (!) są definiowane zgodnie z opisem w tabeli Wyrażenia warunkowe.
Operator "Contains" musi być poprzedzony białym znakiem, a następnie operator "Any_of" musi być poprzedzony białym znakiem.
Priorytet
Operatory są oceniane w następującej kolejności pierwszeństwa, a operacje równego pierwszeństwa są oceniane od lewej do prawej.
- Istnieje, Member_of
- Zawiera, Any_of
- ==, !=, <, <=, >, >=
- !
- &&
- ||
Ponadto każda część wyrażenia warunkowego może być ujęta w nawiasy. Wyrażenia w nawiasach są oceniane jako pierwsze.
Nieznane wartości
Wyniki wyrażeń warunkowych czasami zwracają wartość Unknown. Na przykład którakolwiek z operacji relacyjnych zwraca Nieznany, gdy określony atrybut nie istnieje.
W poniższej tabeli opisano wyniki operacji logicznej AND między dwoma wyrażeniami warunkowymi, ConditionalExpression1 i ConditionalExpression2.
ConditionalExpression1 | ConditionalExpression2 | ConditionalExpression1&&ConditionalExpression2 |
---|---|---|
true |
true |
true |
true |
FALSE |
FALSE |
true |
NIEZNANY |
NIEZNANY |
FALSE |
true |
FALSE |
FALSE |
FALSE |
FALSE |
FALSE |
NIEZNANY |
FALSE |
NIEZNANY |
true |
NIEZNANY |
NIEZNANY |
FALSE |
FALSE |
NIEZNANY |
NIEZNANY |
NIEZNANY |
W poniższej tabeli opisano wyniki operacji logicznej OR między dwoma wyrażeniami warunkowymi, ConditionalExpression1 i ConditionalExpression2.
ConditionalExpression1 | ConditionalExpression2 | ConditionalExpression1||ConditionalExpression2 |
---|---|---|
true |
true |
true |
true |
FALSE |
true |
true |
NIEZNANY |
true |
FALSE |
true |
true |
FALSE |
FALSE |
FALSE |
FALSE |
NIEZNANY |
NIEZNANY |
NIEZNANY |
true |
true |
NIEZNANY |
FALSE |
NIEZNANY |
NIEZNANY |
NIEZNANY |
NIEZNANY |
Negacja wyrażenia warunkowego z wartością UNKNOWN jest również UNKNOWN.
Warunkowa ocena ACE
W poniższej tabeli opisano wynik sprawdzania dostępu warunkowego ACE w zależności od ostatecznej oceny wyrażenia warunkowego.
Typ ACE | PRAWDZIWY | FAŁSZYWY | NIEZNANY |
---|---|---|---|
Pozwolić |
Pozwolić |
Ignoruj ACE |
Ignoruj ACE |
Zaprzeczać |
Zaprzeczać |
Ignoruj ACE |
Zaprzeczać |
Przykłady
W poniższych przykładach pokazano, jak określone zasady dostępu są reprezentowane przez warunkową ACE zdefiniowaną przy użyciu języka SDDL.
-
zasady
-
Zezwalaj na wykonywanie wszystkim, jeśli zostaną spełnione oba następujące warunki:
- Tytuł = PM
- Dział = Finanse lub Dział = Sprzedaż
-
SDDL
-
D:(XA; ; FX;;; S-1-1-0; (@User.Title=="PM" && (@User.Division=="Finance" || @User.Division ==" Sales)))
-
zasady
-
Zezwalaj na wykonywanie, jeśli którykolwiek z projektów użytkownika przecina się z projektami plików.
-
SDDL
-
D:(XA; ; FX;;; S-1-1-0; (@User.Project Any_of @Resource.Project))
-
zasady
-
Zezwalaj na dostęp do odczytu, jeśli użytkownik zalogował się przy użyciu karty inteligentnej, jest operatorem kopii zapasowej i łączy się z maszyny z włączoną funkcją BitLocker.
-
SDDL
-
D:(XA; ;FR;; S-1-1-0; (Member_of {SID(Smartcard_SID), SID(BO)} && @Device.Bitlocker))