DN distinguished name和DACL SACL的含义(转)
DN-- distinguished name和DACL SACL的含義
很多人雖然會使用dsadd等命令添加用戶,但是dsadd的命令說明里面并沒有涉及到dc,cn,ou的含義,很多人都不明白,這里是微軟的技術(shù)支持人員的回信,希望對大家有幫助。
CN,OU,DC都是LDAP連接服務(wù)器的端字符串中的區(qū)別名稱(DN,distinguished name);
LDAP連接服務(wù)器的連接字串格式為:ldap://servername/DN
其中DN有三個屬性,分別是CN,OU,DC
LDAP是一種通訊協(xié)議,如同HTTP是一種協(xié)議一樣的!
在 LDAP 目錄中。
DC (Domain Component)
CN (Common Name)
OU (Organizational Unit)
An LDAP 目錄類似于文件系統(tǒng)目錄. 下列目錄:
DC=redmond,DC=wa,DC=microsoft,DC=com
如果我們類比文件系統(tǒng)的話,可被看作如下文件路徑:
Com\Microsoft\Wa\Redmond
例如:CN=test,OU=developer,DC=domainname,DC=com
在上面的代碼中cn=test 可能代表一個用戶名, ou=developer 代表一個active directory中的 組織單位。這句話的含義可能就是說明test這個對象處在domainname. com域的developer組織單元中。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
任意訪問控制列表( Discretionary ACL )、系統(tǒng)訪問控制列表( System ACL )。任意訪問控制列表包含了用戶和組的列表,以及相應(yīng)的權(quán)限,允許或拒絕。每一個用戶或組在任意訪問控制列表中都有特殊的權(quán)限。而系統(tǒng)訪問控制列表是為審核服務(wù)的,包含了對象被訪問的時間
他們都是在sd中的!
什么是sd呢?先來看看安全對象吧
安全對象Securable Object是擁有SD的Windows的對象。
所有的被命名的Windows的對象都是安全對象。一些沒有命名的對象是安全對象,如:進(jìn)程和線程,也有安全描述符SD。安全對象Securable Object是擁有SD的Windows的對象。
在Windows系統(tǒng)中,其是用一個安全描述符(Security Descriptors)的結(jié)構(gòu)來保存其權(quán)限的設(shè)置信息,簡稱為SD,其在Windows SDK中的結(jié)構(gòu)名是“SECURITY_DESCRIPTOR”,這是包括了安全設(shè)置信息的結(jié)構(gòu)體。一個安全描述符包含以下信息:
? 一個安全標(biāo)識符(Security identifiers),其標(biāo)識了該信息是哪個對象的,也就是用于記錄安全對象的ID。簡稱為:SID。
? 一個DACL(Discretionary Access Control List),其指出了允許和拒絕某用戶或用戶組的存取控制列表。 當(dāng)一個進(jìn)程需要訪問安全對象,系統(tǒng)就會檢查DACL來決定進(jìn)程的訪問權(quán)。如果一個對象沒有DACL,那么就是說這個對象是任何人都可以擁有完全的訪問權(quán)限。
? 一個SACL(System Access Control List),其指出了在該對象上的一組存取方式(如,讀、寫、運行等)的存取控制權(quán)限細(xì)節(jié)的列表。
? 還有其自身的一些控制位。
DACL和SACL構(gòu)成了整個存取控制列表Access Control List,簡稱ACL,ACL中的每一項,我們叫做ACE(Access Control Entry),ACL中的每一個ACE
Windows訪問控制鏈表
訪問控制鏈表(ACL)
一個ACL是一個ACE鏈表。每個ACL中的ACE標(biāo)示一個托管以及指定允許的訪問權(quán)限、否定或托管的設(shè)計。一個對象的安全描述符號包含兩種類型的ACL,一個是DACL,一個是SACL。
一個目錄訪問控制鏈表(DACL)標(biāo)示允許或拒絕訪問一個安全對象的托管。當(dāng)一個進(jìn)程常識訪問一個安全對象的時候,系統(tǒng)檢查對象的DACL中的ACE來決定是否賦予訪問權(quán)限。如果對象沒有DACL,系統(tǒng)賦予完全的訪問權(quán)限,如果對象的DACL沒有ACE,那么系統(tǒng)拒絕所有訪問對象的嘗試,因為DACL不允許任何訪問權(quán)限。系統(tǒng)檢查ACE序列直到找到一到多個ACE,或者直到任何請求的訪問權(quán)限被否定。更多的信息參見:DACL怎么樣控制一個對象的。對于創(chuàng)建DACL的信息,見創(chuàng)建一個DACL。
一個系統(tǒng)訪問控制鏈表(SACL)是管理員登錄嘗試訪問一個安全對象。每個ACE指定一個指定的托管嘗試的訪問類型,這個訪問會導(dǎo)致系統(tǒng)產(chǎn)生一個安全事件日志。一個SACL中的ACE能夠產(chǎn)生訪問嘗試失敗或成功的時候產(chǎn)生評估記錄,在將來的release中,一個SACL在一個未授權(quán)用戶嘗試訪問一個對象的時候發(fā)出一個警告。更多SACL的信息參見Audit Generation和SACL訪問權(quán)限。
不要嘗試直接使用一個ACL來工作。為了確保ACL能夠語義正確的,使用適當(dāng)?shù)暮瘮?shù)來創(chuàng)建和操縱ACL。更多的信息參見:從ACL中取得信息和創(chuàng)建或修改一個ACL。
ACL也提供訪問控制微軟的Active Directory目錄服務(wù)對象。活動目錄服務(wù)接口(ADSI)包括創(chuàng)建和修改ACL內(nèi)容的程序。更多信息參見:控制訪問活動目錄對象。
ACE
一個訪問控制實體(ACE)是ACL中的一個元素。一個ACL可能包含0到多個ACE。每個ACE通過一個指定的托管來控制或監(jiān)視一個對象。更多關(guān)于添加、刪除、改變ACE,見修改ACL對象。
Window Me/98/95:不支持訪問控制
有6種類型的ACE,三種被所有的安全對象支持,其他類型是對象特定的ACE,由目錄服務(wù)對象支持。
所有ACE類型都包含下面訪問控制信息:
1. 一個安全標(biāo)示符號(SID)來標(biāo)示ACE應(yīng)用的托管
2. 一個訪問掩碼指定ACE控制的訪問權(quán)限
3. 一個指示ACE類型的標(biāo)志位
4. 一系列位標(biāo)志決定是否子容器或?qū)ο罂梢岳^承ACE從基本對象到ACL附著的對象。
下表列出了三個所有安全對象支持的ACE類型:
|
Type |
Description |
|
訪問拒絕ACE |
用在一個DACL中拒絕到一個托管的訪問權(quán)限 |
|
訪問允許ACE |
用在一個DACL中允許到托管的訪問權(quán)限 |
|
系統(tǒng)評估ACE |
用在SACL中,當(dāng)托管嘗試檢查指定訪問權(quán)限時產(chǎn)生一個評估記錄 |
對于對象指定的ACE,參見對象指定ACE。
注意,系統(tǒng)警告ACE對象現(xiàn)在不支持。
托管
一個托管是一個用戶帳戶、組帳戶或登錄會話到一個ACE應(yīng)用。每個ACL中的ACE都有一個SID來標(biāo)示托管。用戶帳戶包含人使用的帳戶或程序帳戶(例如,Window服務(wù)用來登錄到本地計算機的)。組帳戶不能用來登錄到計算機,但在ACE中非常有用,用來拒絕或允許一到多個用戶帳戶的訪問權(quán)限。一個登錄SID表示當(dāng)前的登錄會話用來允許和拒絕訪問權(quán)限,直到用戶登出。
NT4.0和后來版本中訪問控制函數(shù)使用TRUSTEE結(jié)構(gòu)體來表示一個托管。這個結(jié)構(gòu)體能使你用一個字符串或一個SID來表示一個托管。如果你使用一個名字,從TRUSTEE結(jié)構(gòu)創(chuàng)建ACE的函數(shù)執(zhí)行SID緩沖區(qū)分配工作并且查詢SID對應(yīng)的帳戶名稱。有兩個助手函數(shù),BuildTrusteeWithSid和BuildTrusteeWithName,可以用SID或名字來初始化一個TRUSTEE結(jié)構(gòu)。BuildTrusteeWithObjectsAndSid和BuildTrusteeWithObjectsAndName允許你使用一個對象指定的ACE信息來初始化一個TRUSTEE結(jié)構(gòu)體。其他3個助手函數(shù),GetTrusteeFrorm、GetTrusteeName和GetTrusteeType,返回TRUSTEE結(jié)構(gòu)各成員的值。
Window XP/2000:TRUSTEE的ptstrName成員可以是一個指向OBJECTS_AND_NAME或OBJECTS_AND_SID結(jié)構(gòu)體的指針。這些結(jié)構(gòu)體說明對象指定ACE的信息,除了托管的名字和SID之外。這可以象SetEntriesInAcl和GetExplicitEntriesFromAcl這樣的函數(shù)存儲對象指定ACE的信息到EXPLICIT_ACCESS結(jié)構(gòu)體的Trustee成員中。
TRUSTEE結(jié)構(gòu)體:
typedef struct _TRUSTEE {
PTRUSTEE pMultipleTrustee;
MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
TRUSTEE_FORM TrusteeForm;
TRUSTEE_TYPE TrusteeType;
LPTSTR ptstrName;
} TRUSTEE, *PTRUSTEE;
訪問權(quán)限和訪問掩碼
一個訪問權(quán)限是一個標(biāo)志位對應(yīng)到一個特殊操作集合,這個集合表示線程可以在安全對象上執(zhí)行的操作。例如:注冊表鍵KEY_SET_VALUE訪問權(quán)限,對應(yīng)到線程在這個鍵下設(shè)置的值的能力。如果線程想在一個對象執(zhí)行一個操作,但沒有必要的訪問權(quán)限,系統(tǒng)不執(zhí)行操作。
一個訪問掩碼是一個32位的值,它對應(yīng)到對象支持的訪問權(quán)限。所有的Windows NT/2000/XP安全對象使用一個Windows訪問掩碼格式,這個格式包含下面的訪問權(quán)限位:
1.通用訪問權(quán)限
2.標(biāo)準(zhǔn)訪問權(quán)限
3. SACL訪問權(quán)限
4.目錄服務(wù)訪問權(quán)限
當(dāng)一個線程想打開一個對象的句柄,線程通常指定一個訪問掩碼來請求一系列的訪問權(quán)限。例如,需要設(shè)置和查詢注冊表鍵的程序可以使用一個訪問掩碼來請求KEY_SET_VALUE和KEY_QUERY_VALUE訪問權(quán)限來打開該鍵。
下面表顯示了操作每種類型安全對象的信息:
|
對象類型 |
安全描述符號函數(shù) |
|
NTFS上的文件或目錄系統(tǒng) |
GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
|
命名管道和匿名管道 |
GetSecurityInfo, SetSecurityInfo |
|
控制臺屏幕緩沖區(qū) |
Not supported. |
|
進(jìn)程和線程 |
GetSecurityInfo, SetSecurityInfo |
|
文件映射對象 |
GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
|
Access tokens |
SetKernelObjectSecurity, GetKernelObjectSecurity |
|
Windows管理對象 (windows工作站和桌面) |
GetSecurityInfo, SetSecurityInfo |
|
注冊表鍵 |
GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
|
Windows服務(wù) |
GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
|
本地和遠(yuǎn)程打印機 |
GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
|
網(wǎng)絡(luò)共享 |
GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
|
進(jìn)程間同步對象 (事件, mutexes, semaphores, and waitable timers) |
GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
|
作業(yè)對象 |
GetNamedSecurityInfo, SetNamedSecurityInfo, GetSecurityInfo, SetSecurityInfo |
通用訪問權(quán)限
安全對象使用Windows訪問掩碼格式,四個高位說明通用訪問權(quán)限。每個安全對象類型映射到這些位到一系列標(biāo)準(zhǔn)和對象特殊訪問權(quán)限。例如:一個Window文件對象映射GENERIC_READ位到READ_CONTROL和SYNCHRONIZE標(biāo)準(zhǔn)訪問權(quán)限和FILE_READ_DATA、FILE_READ_EA和FILE_READ_ATTRIBUTES對象指定訪問權(quán)限。其他類型對象映射GENERIC_READ位到與類型對象適應(yīng)的一些訪問權(quán)限。
你可以在你打開一個對象句柄的時候使用通用訪問權(quán)限來指定需要的訪問類型;這通常比指定所有對應(yīng)標(biāo)準(zhǔn)和特指權(quán)限要簡單。
下表顯示了通用訪問權(quán)限定義的常量。
|
常量 |
解釋 |
|
GENERIC_ALL |
讀、寫和執(zhí)行訪問 |
|
GENERIC_EXECUTE |
執(zhí)行 |
|
GENERIC_READ |
讀 |
|
GENERIC_WRITE |
寫 |
應(yīng)用程序定義的私有安全訪問對象能使用通用訪問權(quán)限。
安全描述符
安全描述符包含了安全對象相關(guān)的安全信息。安全描述父由一個SECURITY_DESCRIPTOR結(jié)構(gòu)體組成,它關(guān)聯(lián)到一個安全對象。一個安全描述符包含下面的安全信息:
1. 擁有者或基本組對象的安全I(xiàn)D(SIDs)
2. DACL指定特殊用戶或組的允許或拒絕的訪問權(quán)限
3. SACL指定對象通用評估記錄嘗試的訪問類型
4. 一個控制位集合,說明安全描述符的含義或它每個成員
程序不需要直接操作安全描述符的內(nèi)容。Windows API提供設(shè)置和返回安全描述符號的函數(shù)。另外,有用來創(chuàng)建和初始化一個新對象安全描述符號的函數(shù)。
Windows NT 3.51和更早的版本,Windows ME/98/95:參見:低級訪問控制。
工作在活動目錄對象上安全描述符程序能使用Windows的安全函數(shù)或ADSI(活動目錄服務(wù)接口)提供的安全接口。更多ADSI的信息參見:訪問控制如何在活動目錄中工作?
DACL是怎么控制訪問對象的?
當(dāng)一個線程想訪問一個安全對象時候,系統(tǒng)要么允許訪問,要拒絕訪問。如果對象沒有DACL,系統(tǒng)賦予訪問權(quán)限,否則系統(tǒng)查找DACL中的該線程的ACE。每個對象DACL中的ACE指定托管的訪問允許或拒絕的訪問權(quán)限,它可以是一個用戶帳戶、組帳戶或登錄會話。
系統(tǒng)比較ACE中的托管和線程訪問標(biāo)記的托管標(biāo)示。一個訪問標(biāo)記包含SID來說明用戶和用戶輸入的組帳戶。一個標(biāo)記也包含一個登錄SID,來表示當(dāng)前的登錄會話。在訪問檢查期間,系統(tǒng)忽略不可用的組SID。更多可用不可用信息以及拒絕SID,見訪問標(biāo)記中的SID屬性。
通常,系統(tǒng)使用現(xiàn)成餓基本訪問標(biāo)記來請求訪問。然而,如果現(xiàn)成正在扮演其他用戶,系統(tǒng)使用現(xiàn)成的扮演標(biāo)記。
系統(tǒng)家產(chǎn)序列中的每個ACE,直到下面的情況發(fā)生:
1. 一個顯式拒絕任何與線程訪問標(biāo)記中列出托管不同的訪問ACE出現(xiàn)
2. 線程訪問標(biāo)記中列出的一個或多個允許訪問的ACE出現(xiàn),這個標(biāo)記顯式賦予所有權(quán)限。
3. 所有的ACE都檢查過,并且至少一個訪問權(quán)限沒有顯式的允許,這種情況下暗示拒絕。
下圖描述一個DACL對象允許訪問一個線程而拒絕訪
問另一個線程。
對于線程A,系統(tǒng)讀ACE1并且立即拒絕訪問,因為訪問拒絕ACE應(yīng)用到線程訪問標(biāo)記中的用戶。這種情況下,系統(tǒng)并沒有檢查ACE2和3。對于線程B,ACE1沒有應(yīng)用,因此系統(tǒng)處理ACE2,其允許寫操作,并且ACE3允許讀和執(zhí)行操作。
因為系統(tǒng)在請求訪問并顯式允許或拒絕的時候停止檢查,DACL中的ACE順序非常重要。注意,如果ACE順序與例子中的不同,系統(tǒng)可能分配訪問權(quán)限給A。對于系統(tǒng)對象,操作系統(tǒng)定義一個首選的DACL中ACE的順序。
總結(jié)
以上是生活随笔為你收集整理的DN distinguished name和DACL SACL的含义(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dwarf2结构在gcc中的应用及调试器
- 下一篇: 牛腩新闻发布系统(一):SQLHelpe