Bagikan melalui


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

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.

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

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

[MS-DTYP]: Bahasa Deskripsi Deskriptor Keamanan