Bahasa Definisi Deskriptor Keamanan untuk ACE Bersyarah
Entri kontrol akses bersyar (ACE) memungkinkan kondisi akses dievaluasi saat pemeriksaan akses dilakukan. Bahasa definisi deskriptor keamanan (SDDL) menyediakan sintaksis untuk menentukan ACE bersyar dalam format string.
SDDL untuk ACE bersyarkat sama dengan untuk ACE apa pun, dengan sintaks untuk pernyataan bersyarkat yang ditambahkan ke akhir string ACE. Untuk informasi tentang SDDL, lihat Bahasa Definisi Deskriptor Keamanan.
Tanda "#" identik dengan "0" dalam atribut sumber daya. Misalnya, D:AI(XA; OKI;FA;;; WD; (OctetStringType==#1#2#3##)) setara dengan dan ditafsirkan sebagai D:AI(XA; OKI;FA;;; WD; (OctetStringType==#01020300)).
- Format Untai (Karakter) ACE Bersyarkat
- Ekspresi Bersyarah
- Atribut
- Operator
- Operator Precedence
- Nilai Tidak Diketahui
- Evaluasi ACE Bersyarkat
- Contoh
- Topik terkait
Format Untai (Karakter) ACE Bersyarkat
Setiap ACE dalam string deskriptor keamanan diapit tanda kurung. Bidang ACE berada dalam urutan berikut dan dipisahkan oleh titik koma (;).
AceType**;AceFlags;Hak;ObjectGuid;InheritObjectGuid;AccountSid;(ConditionalExpression)**
Bidang seperti yang dijelaskan dalam String ACE, dengan pengecualian berikut.
Bidang AceType bisa menjadi salah satu string berikut.
String jenis ACE Konstanta dalam Sddl.h Nilai AceType "XA" SDDL_CALLBACK_ACCESS_ALLOWED ACCESS_ALLOWED_CALLBACK_ACE_TYPE "XD" SDDL_CALLBACK_ACCESS_DENIED ACCESS_DENIED_CALLBACK_ACE_TYPE String ACE menyertakan satu atau beberapa ekspresi bersyarkat, yang diapit dalam tanda kurung di akhir string.
Ekspresi bersyarat
Ekspresi bersyarah dapat menyertakan salah satu elemen berikut.
Elemen ekspresi | Deskripsi |
---|---|
AttributeName |
Menguji apakah atribut yang ditentukan memiliki nilai bukan nol. |
AttributeName ada |
Menguji apakah atribut yang ditentukan ada dalam konteks klien. |
Nilai Operator AttributeName |
Mengembalikan hasil operasi yang ditentukan. |
ConditionalExpression**||**ConditionalExpression |
Menguji apakah salah satu ekspresi bersyarkat yang ditentukan benar. |
ConditionalExpression && ConditionalExpression |
Menguji apakah kedua ekspresi bersyarkat yang ditentukan benar. |
! (ConditionalExpression) |
Inversi ekspresi bersyarat. |
Member_of{SidArray} |
Menguji apakah array SID_AND_ATTRIBUTES konteks klien berisi semua Pengidentifikasi Keamanan (SID) dalam daftar yang dipisahkan koma yang ditentukan oleh SidArray. Untuk Izinkan ACE, SID konteks klien harus memiliki atribut SE_GROUP_ENABLED yang diatur agar dianggap cocok. Untuk Tolak ACE, SID konteks klien harus memiliki atribut SE_GROUP_ENABLED atau SE_GROUP_USE_FOR_DENY_ONLY yang diatur agar dianggap cocok. Array SidArray dapat berisi string SID (misalnya, "S-1-5-6") atau alias SID (misalnya, "BA" |
Atribut
Atribut mewakili elemen dalam array AUTHZ_SECURITY_ATTRIBUTES_INFORMATION dalam konteks klien. Nama atribut dapat berisi karakter alfanumerik dan salah satu karakter ":", "/", ".", dan "_".
Nilai atribut dapat berupa salah satu jenis berikut.
Jenis nilai | Deskripsi |
---|---|
Bilangan bulat |
Bilangan bulat 64-bit dalam notasi desimal atau heksadesimal. |
String |
Nilai string dibatasi oleh tanda kutip. |
SID |
SID(S-1-1-0) atau SID(BA). Harus berada di RHS Member_of atau Device_Member_of. |
BLOB |
# diikuti dengan angka heksadesimal. Jika panjang angka ganjil, maka # diterjemahkan ke 0 untuk membuatnya merata. Juga # yang muncul di tempat lain dalam nilai diterjemahkan ke 0. |
Operator
Operator berikut didefinisikan untuk digunakan dalam ekspresi bersyarah untuk menguji nilai atribut. Semua ini adalah operator biner dan digunakan dalam formulir Nilai Operator AttributeName.
Operator | Deskripsi |
---|---|
== |
Definisi konvensional. |
!= |
Definisi konvensional. |
< |
Definisi konvensional. |
<= |
Definisi konvensional. |
> |
Definisi konvensional. |
>= |
Definisi konvensional. |
Berisi |
TRUE jika nilai atribut yang ditentukan adalah superset dari nilai yang ditentukan; jika tidak, FALSE. |
Any_of |
TRUE jika nilai yang ditentukan adalah superset dari nilai atribut yang ditentukan; jika tidak, FALSE. |
Selain itu, operator unary Ada, Member_of, dan negasi (!) didefinisikan seperti yang dijelaskan dalam tabel Ekspresi Bersyarat.
Operator "Berisi" harus didahului dan diikuti oleh spasi kosong, dan operator "Any_of" harus didahului oleh spasi kosong.
Operator Precedence
Operator dievaluasi dalam urutan prioritas berikut, dengan operasi prioritas yang sama dievaluasi dari kiri ke kanan.
- Ada, Member_of
- Berisi, Any_of
- ==, !=, <, <=, >, >=
- !
- &&
- ||
Selain itu, bagian mana pun dari ekspresi bersyarkat dapat diapit dalam tanda kurung. Ekspresi dalam tanda kurung dievaluasi terlebih dahulu.
Nilai Tidak Diketahui
Hasil ekspresi bersyarah terkadang mengembalikan nilai Tidak Diketahui. Misalnya, salah satu operasi relasional mengembalikan Tidak Diketahui ketika atribut yang ditentukan tidak ada.
Tabel berikut ini menjelaskan hasil untuk operasi AND logis antara dua ekspresi bersyarah, ConditionalExpression1 dan ConditionalExpression2.
ConditionalExpression1 | ConditionalExpression2 | ConditionalExpression1 && ConditionalExpression2 |
---|---|---|
BENAR |
BENAR |
BENAR |
BENAR |
SALAH
|
SALAH
|
BENAR |
TIDAK DIKETAHUI |
TIDAK DIKETAHUI |
SALAH
|
BENAR |
SALAH
|
SALAH
|
SALAH
|
SALAH
|
SALAH
|
TIDAK DIKETAHUI |
SALAH
|
TIDAK DIKETAHUI |
BENAR |
TIDAK DIKETAHUI |
TIDAK DIKETAHUI |
SALAH
|
SALAH
|
TIDAK DIKETAHUI |
TIDAK DIKETAHUI |
TIDAK DIKETAHUI |
Tabel berikut ini menjelaskan hasil untuk operasi OR logis antara dua ekspresi bersyarkat, ConditionalExpression1 dan ConditionalExpression2.
ConditionalExpression1 | ConditionalExpression2 | ConditionalExpression1 || ConditionalExpression2 |
---|---|---|
BENAR |
BENAR |
BENAR |
BENAR |
SALAH
|
BENAR |
BENAR |
TIDAK DIKETAHUI |
BENAR |
SALAH
|
BENAR |
BENAR |
SALAH
|
SALAH
|
SALAH
|
SALAH
|
TIDAK DIKETAHUI |
TIDAK DIKETAHUI |
TIDAK DIKETAHUI |
BENAR |
BENAR |
TIDAK DIKETAHUI |
SALAH
|
TIDAK DIKETAHUI |
TIDAK DIKETAHUI |
TIDAK DIKETAHUI |
TIDAK DIKETAHUI |
Negasi ekspresi kondisional dengan nilai UNKNOWN juga TIDAK DIKETAHUI.
Evaluasi ACE Bersyarkat
Tabel berikut ini menjelaskan hasil pemeriksaan akses dari ACE kondisional tergantung pada evaluasi akhir ekspresi kondisional.
Jenis ACE | BENAR | SALAH | UNKNOWN |
---|---|---|---|
Bolehkan |
Bolehkan |
Abaikan ACE |
Abaikan ACE |
Tolak |
Tolak |
Abaikan ACE |
Tolak |
Contoh
Contoh berikut menunjukkan bagaimana kebijakan akses yang ditentukan diwakili oleh ACE bersyarkat yang ditentukan dengan menggunakan SDDL.
-
Kebijakan
-
Izinkan Jalankan ke Semua Orang jika kedua kondisi berikut terpenuhi:
- Judul = PM
- Divisi = Keuangan atau Divisi = Penjualan
-
SDDL
-
D:(XA; ; FX;;; S-1-1-0; (@User.Title=="PM" && (@User.Division=="Finance" || @User.Division ==" Sales")))
-
Kebijakan
-
Izinkan eksekusi jika salah satu proyek pengguna bersinggungan dengan proyek file.
-
SDDL
-
D:(XA; ; FX;;; S-1-1-0; (@User.Project Any_of @Resource.Project))
-
Kebijakan
-
Izinkan akses baca jika pengguna telah masuk dengan kartu pintar, adalah operator cadangan, dan terhubung dari mesin dengan Bitlocker diaktifkan.
-
SDDL
-
D:(XA; ;FR;;; S-1-1-0; (Member_of {SID(Smartcard_SID), SID(BO)} && @Device.Bitlocker))
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk