Linguaggio di definizione del descrittore di sicurezza per gli ACL condizionali
Una voce di controllo di accesso condizionale (ACE) consente di valutare una condizione di accesso quando viene eseguito un controllo di accesso. Il linguaggio SDDL (Security Descriptor Definition Language) fornisce la sintassi per definire gli ACL condizionali in un formato stringa.
L'SDDL per un ace condizionale è uguale a quello di qualsiasi ACE, con la sintassi per l'istruzione condizionale aggiunta alla fine della stringa ACE. Per informazioni su SDDL, vedere Security Descriptor Definition Language.
Il segno "#" è sinonimo di "0" negli attributi della risorsa. Ad esempio, D:AI(XA; OICI;FA;;; Nana bianca; (OctetStringType==#1#2#3#)) equivale a e interpretato come D:AI(XA; OICI;FA;;; Nana bianca; (OctetStringType==#01020300)).
- Formato stringa ACE condizionale
- Espressioni condizionali
- Attributi
- Operatori
- Ordine di precedenza degli operatori
- Valori sconosciuti
- Valutazione ACE condizionale
- Esempi
- Argomenti correlati
Formato stringa ACE condizionale
Ogni ACE in una stringa del descrittore di sicurezza è racchiusa tra parentesi. I campi dell'ace sono nell'ordine seguente e sono separati da punti e virgola (;).
AceType**;AceFlags;Diritti;ObjectGuid;InheritObjectGuid;AccountSid;(ConditionalExpression)**
I campi sono descritti in Stringhe ACE, con le eccezioni seguenti.
Il campo AceType può essere una delle stringhe seguenti.
Stringa di tipo ACE Costante in Sddl.h Valore AceType "XA" SDDL_CALLBACK_ACCESS_ALLOWED ACCESS_ALLOWED_CALLBACK_ACE_TYPE "XD" SDDL_CALLBACK_ACCESS_DENIED ACCESS_DENIED_CALLBACK_ACE_TYPE La stringa ACE include una o più espressioni condizionali, racchiuse tra parentesi alla fine della stringa.
Espressioni condizionali
Un'espressione condizionale può includere uno degli elementi seguenti.
Elemento dell'espressione | Descrizione |
---|---|
AttributeName |
Verifica se l'attributo specificato ha un valore diverso da zero. |
Exists AttributeName |
Verifica se l'attributo specificato esiste nel contesto client. |
Valore dell'operatore AttributeName |
Restituisce il risultato dell'operazione specificata. |
ConditionalExpression ConditionalExpression**||** |
Verifica se una delle espressioni condizionali specificate è true. |
ConditionalExpression && ConditionalExpression |
Verifica se entrambe le espressioni condizionali specificate sono true. |
! (ConditionalExpression) |
Inverso di un'espressione condizionale. |
Member_of{SidArray} |
Verifica se la matrice SID_AND_ATTRIBUTES del contesto client contiene tutti gli identificatori di sicurezza (SID) nell'elenco delimitato da virgole specificato da SidArray. Per Consenti ACL, un SID del contesto client deve avere l'attributo SE_GROUP_ENABLED impostato per essere considerato una corrispondenza. Per Deny ACEs, un SID del contesto client deve avere il SE_GROUP_ENABLED o l'attributo SE_GROUP_USE_FOR_DENY_ONLY impostato per essere considerato una corrispondenza. La matrice SidArray può contenere stringhe SID (ad esempio, "S-1-5-6") o alias SID (ad esempio, "BA" |
Attributi
Un attributo rappresenta un elemento nella matrice AUTHZ_SECURITY_ATTRIBUTES_INFORMATION nel contesto client. Un nome di attributo può contenere qualsiasi carattere alfanumerico e qualsiasi carattere ":", "/", "." e "_".
Un valore di attributo può essere uno dei tipi seguenti.
Tipo di valore | Descrizione |
---|---|
Intero |
Intero a 64 bit nella notazione decimale o esadecimale. |
String |
Valore stringa delimitato da virgolette. |
SID |
SID(S-1-1-0) o SID(BA). Deve essere su RHS di Member_of o Device_Member_of. |
BLOB |
# seguito da numeri esadecimali. Se la lunghezza dei numeri è dispari, il valore # viene convertito in 0 per renderlo pari. Anche un oggetto # visualizzato altrove nel valore viene convertito in 0. |
Operatori
Gli operatori seguenti vengono definiti per l'uso nelle espressioni condizionali per testare i valori degli attributi. Tutti questi sono operatori binari e usati nel formato AttributeName Operator Value.
Operatore | Descrizione |
---|---|
== |
Definizione convenzionale. |
!= |
Definizione convenzionale. |
< |
Definizione convenzionale. |
<= |
Definizione convenzionale. |
> |
Definizione convenzionale. |
>= |
Definizione convenzionale. |
Contiene |
TRUE se il valore dell'attributo specificato è un superset del valore specificato; in caso contrario, FALSE. |
Any_of |
TRUE se il valore specificato è un superset del valore dell'attributo specificato; in caso contrario, FALSE. |
Inoltre, gli operatori unari Esistono, Member_of e negazione (!) vengono definiti come descritto nella tabella Espressioni condizionali.
L'operatore "Contains" deve essere preceduto e seguito da spazi vuoti e l'operatore "Any_of" deve essere preceduto da spazi vuoti.
Ordine di precedenza degli operatori
Gli operatori vengono valutati nell'ordine di precedenza seguente, con operazioni di uguale precedenza valutate da sinistra a destra.
- Esiste, Member_of
- Contiene, Any_of
- ==, !=, <, <=, >, >=
- !
- &&
- ||
Inoltre, qualsiasi parte di un'espressione condizionale può essere racchiusa tra parentesi. Le espressioni racchiuse tra parentesi vengono valutate per prime.
Valori sconosciuti
I risultati delle espressioni condizionali a volte restituiscono un valore Sconosciuto. Ad esempio, una delle operazioni relazionali restituisce Unknown quando l'attributo specificato non esiste.
Nella tabella seguente vengono descritti i risultati di un'operazione AND logica tra due espressioni condizionali, ConditionalExpression1 e ConditionalExpression2.
ConditionalExpression1 | ConditionalExpression2 | ConditionalExpression1 && ConditionalExpression2 |
---|---|---|
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
FALSE |
TRUE |
SCONOSCIUTO |
SCONOSCIUTO |
FALSE |
TRUE |
FALSE |
FALSE |
FALSE |
FALSE |
FALSE |
SCONOSCIUTO |
FALSE |
SCONOSCIUTO |
TRUE |
SCONOSCIUTO |
SCONOSCIUTO |
FALSE |
FALSE |
SCONOSCIUTO |
SCONOSCIUTO |
SCONOSCIUTO |
Nella tabella seguente vengono descritti i risultati di un'operazione OR logica tra due espressioni condizionali, ConditionalExpression1 e ConditionalExpression2.
ConditionalExpression1 | ConditionalExpression2 | ConditionalExpression1 || ConditionalExpression2 |
---|---|---|
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
TRUE |
SCONOSCIUTO |
TRUE |
FALSE |
TRUE |
TRUE |
FALSE |
FALSE |
FALSE |
FALSE |
SCONOSCIUTO |
SCONOSCIUTO |
SCONOSCIUTO |
TRUE |
TRUE |
SCONOSCIUTO |
FALSE |
SCONOSCIUTO |
SCONOSCIUTO |
SCONOSCIUTO |
SCONOSCIUTO |
Anche la negazione di un'espressione condizionale con un valore UNKNOWN è UNKNOWN.
Valutazione ACE condizionale
La tabella seguente descrive il risultato del controllo di accesso di un ace condizionale a seconda della valutazione finale dell'espressione condizionale.
Tipo ACE | TRUE | FALSE | SCONOSCIUTO |
---|---|---|---|
Consenti |
Consenti |
Ignora ACE |
Ignora ACE |
Nega |
Nega |
Ignora ACE |
Nega |
Esempi
Gli esempi seguenti illustrano come i criteri di accesso specificati sono rappresentati da un ace condizionale definito tramite SDDL.
-
Politica
-
Consenti esecuzione a tutti se vengono soddisfatte entrambe le condizioni seguenti:
- Title = PM
- Divisione = Finanza o Divisione = Vendite
-
SDDL
-
D:(XA; ; FX;;; S-1-1-0; (@User.Title=="PM" && (@User.Division=="Finance" || @User.Division ==" Sales")))
-
Politica
-
Consenti l'esecuzione se uno dei progetti dell'utente si interseca con i progetti del file.
-
SDDL
-
D:(XA; ; FX;;; S-1-1-0; (@User.Project Any_of @Resource.Project))
-
Politica
-
Consentire l'accesso in lettura se l'utente ha eseguito l'accesso con una smart card, è un operatore di backup e si connette da un computer con Bitlocker abilitato.
-
SDDL
-
D:(XA; ;FR;;; S-1-1-0; (Member_of {SID(Smartcard_SID), SID(BO)} && @Device.Bitlocker))