如何將標示為機密的 Windows Server 2003 Service Pack 1 屬性

文章翻譯 文章翻譯
文章編號: 922836 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

在 [Active Directory 目錄服務對於 Microsoft Windows Server 2000 和 Microsoft Windows Server 2003,很難防止已驗證的使用者讀取屬性。通常,如果使用者要求的屬性或其屬性設定的 READ_PROPERTY 權限,是授與讀取權限。在 Active Directory 中的預設安全性設定使已驗證的使用者具有所有屬性的 「 讀取 」 權限。本文將告訴您,如何防止 Windows Server 2003 Service Pack 1 (SP1) 中的屬性的讀取權限。

簡介

本文將告訴您,如何將標示為機密的 Windows Server 2003 Service Pack 1 屬性。

其他相關資訊

Windows Server 2003 SP1 引入了一種標示為機密屬性的方法。若要執行此動作會修改 searchFlags 屬性結構描述中的值。searchFlags 屬性值包含多重位元代表各種屬性的屬性。比方說如果設定位元 1 被索引屬性。位元 7 (128) 會將屬性指定為機密。

需求和條件約束

僅網域控制站正在執行 Windows Server 2003 SP1 或更新版本的強制執行機密屬性的讀取權限檢查。「 機密屬性 」 功能是繫結至 Windows Server 2003 SP1 或更新版本的安裝。這項功能不會根據是否啟用網域或樹系功能等級。

請勿使用 「 機密屬性 」 功能,除非下列情況成立:
  • 所有 Windows Server 2003 網域控制站都有 Windows Server 2003 SP1 或更新版本,安裝。
  • 所有的 Windows 2000 網域控制站已升級或移除。
如果網域包含混合的網域控制站正在執行 Windows 2000 Server 原始發行版本的 Windows Server 2003 和 Windows Server 2003 SP1 的可能就會發生下列情況:
  • 如果未經授權的用戶端查詢 Windows 2000 Server 為基礎和 Windows Server 2003 基礎的網域控制站的機密屬性資料,用戶端可以讀取資料。
  • 如果未經授權的用戶端查詢 Windows Server 2003 SP1 為基礎的網域控制站的機密屬性資料,用戶端無法讀取資料。
您無法將標示為機密的基底結構描述屬性。「 員工編號 」 是基底結構描述屬性的範例。這個屬性無法標示為機密,因為其 systemsFlags 屬性值設為 0x10 (基底結構描述)。如需詳細資訊,請參閱 < 如何判斷屬性是否為基底結構描述屬性 > 一節和 < 如何判斷 searchFlags 屬性值,當您使用現有屬性 」 區段]。

測試

如同您會測試對 Active Directory 所做的任何變更與任何結構描述延伸,我們建議您在對映生產樹系的實驗室中徹底測試屬性的變更。測試,可協助您在程序的運作順暢的保證,並偵測到問題時。

存取控制檢查

之後 Windows Server 2003 SP1 安裝 Active Directory Active Directory 執行的讀取權限檢查之後檢查機密屬性。如果機密屬性存在,如果已為這些屬性設定 READ_PROPERTY 權限,Active Directory 也會要求 CONTROL_ACCESS 屬性或其屬性集 」 權限。

附註[完全控制] 使用權限設定包括 CONTROL_ACCESS 的權限。

使用中的目錄會在下列情況中執行的讀取權限檢查在物件上:
  • 當您評估是否物件符合搜尋篩選條件。
  • 當您傳回符合搜尋篩選條件一個物件的屬性。
預設情況下,只有系統管理員才有 CONTROL_ACCESS 所有物件的權限。因此,只有系統管理員可以讀取機密的屬性。 系統管理員可能會委派任何使用者或任何群組這些權限。

泛型和特定物件的存取控制項目

在 Active Directory 中的每個物件具有與它相關聯的存取控制資訊。這項資訊稱為安全性描述元。 安全性描述元會控制可使用者和群組的存取類型。建立物件時,會自動建立安全性描述元。

安全性描述元中的使用權限項目集稱為判別存取控制清單 (DACL)。DACL 中的每個使用權限項目稱為存取控制項目 (ACE)。

可以授與該物件的權限或 CONTROL_ACCESS 的授與使用權限機密屬性在物件上使用泛型或特定物件的存取控制項目,方法。 藉由在物件上明確地戳記或使用繼承,您可以授與權限。繼承則表示是容器的階層架構中較高的容器上設定的可繼承的存取控制項目。

泛型和特定物件的存取控制項目基本上都相同。什麼分開的設定它們是控制項的存取控制項目提供透過繼承以及物件存取透過程度。泛用的存取控制項目套用至整個物件。特定物件的存取控制項目提供進一步控制何種物件繼承存取控制項目。當您使用 [特定物件的存取控制項目時您可以指定該屬性或繼承的存取控制項目物件的屬性集。

當您使用 [機密屬性] 功能時 CONTROL_ACCESS 使用權限是授與指派給使用者的通用存取控制項目。如果 CONTROL_ACCESS 權限授予藉由指派特定物件的存取控制項目,使用者,將只有 CONTROL_ACCESS 機密屬性的權限。

當您使用的通用存取控制項目時,會授與下列權限:
  • 所有延伸的權利
  • 允許驗證
  • 變更密碼
  • 為接收
  • 重設密碼
  • 傳送為
當您使用的通用存取控制項目時,會授與的權限可能會提供比放到整個物件需要更多的存取。如果是重要的考量這您可以在物件上設定特定物件的存取控制項目,以便存取控制項目僅適用於機密的屬性。當您使用 [特定物件的存取控制項目時您可以控制屬性] 或 [將屬性設定為適用的存取控制項目。

使用者介面在 Windows Server 2003 不會公開 Control_Access 權限。您可以使用 Dsacls.exe 工具藉由指定泛用存取控制項目設定 Control_Access 權限。 但是,您不能使用此工具可指派特定物件的存取控制項目。唯一可以藉由指派特定物件的存取控制項目設定 Control_Access 權限的工具是 Ldp.exe 工具。

附註存取控制的深入討論已超出本文的範圍。如需關於存取控制的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn.microsoft.com/en-us/library/aa374860(VS.85).aspx
http://technet.microsoft.com/en-us/library/cc749433.aspx

如何使用繼承

在大型網域中並不實用以手動方式將控制項存取指派給使用者或每個物件具有機密屬性群組。解決方案是使用繼承來設定容器的階層架構中較高的可繼承的存取控制項目。這個存取控制項目套用至該容器的所有子物件。

預設情況下,繼承會啟用所有組織單位 (OU),以及為內建的系統管理員帳戶以外的所有使用者帳戶。如果您建立了具有繼承停用使用者帳戶或複製內建的系統管理員帳戶建立系統管理帳戶,您必須啟用這些帳戶的繼承。否則,繼承模型並不會套用到這些帳戶。

如何建立機密屬性

  1. 決定要標示為機密,何種屬性或加入您想讓機密的屬性。
  2. 如此使用者可以檢視屬性資料,請授與適當的使用者 Control_Access 權限]。
工具,例如 Ldp.exe 工具和 Adsiedit.msc 工具可用來建立機密的屬性。.ldf 檔案通常用來擴充架構。這些檔案也可用來將標示為機密屬性。 檔案,您所建立的實作應該調整在測試階段,這樣您才知道完全什麼您正在加入至結構描述當您發佈至生產環境。.ldf 檔案有助於避免錯誤。

下列範例.ldf 檔案可用來執行下列動作:
  • 將屬性加入至結構描述
  • 標示為機密屬性
  • 將屬性加入至使用者類別
附註使用.ldf 檔案前請閱讀有關如何將物件和屬性加入至結構描述的重要資訊的 [物件識別項"和"屬性語法"] 區段。

範例.ldf 檔案

下列程式碼會將屬性加入至結構描述,並標示為機密屬性。
dn: CN=ConfidentialAttribute-LDF,CN=Schema,Cn=Configuration,DC=domain,DC=com
changetype: add
objectClass: attributeSchema
lDAPDisplayName: ConfidentialAttribute
adminDescription: This attribute stores user's confidential data
attributeID: 1.2.840.113556.1.xxxx.xxxx.1.x
attributeSyntax: 2.5.5.12
oMSyntax: 64
isSingleValued: TRUE
showInAdvancedViewOnly: TRUE
searchFlags: 128

dn:
changeType: modify
add: schemaupdatenow
schemaupdatenow: 1
-
下列程式碼會將新屬性加入至使用者 class.
dn: CN=User,CN=Schema,CN=Configuration,DC=domain,DC=com
changetype: modify
add: mayContain
mayContain: ConfidentialAttribute

dn:
changeType: modify
add: schemaupdatenow
schemaupdatenow: 1
-

如何讓非系統管理使用者查看屬性資料

附註下列程序會要求您使用 Ldp.exe 工具,會包含與 Windows Server 2003 R2 Active Directory 應用程式模式 (ADAM)。其他版本 Ldp.exe 工具不能設定權限。

如何以手動方式設定使用者帳戶上的 [Control_Access 權限

  1. 開啟 Ldp.exe 工具隨附於 Windows Server 2003 R2 ADAM。
  2. 連接,並將繫結至目錄。
  3. 選取使用者帳戶],在帳戶上按一下滑鼠右鍵]、 按一下 [進階]、 按一下 安全性描述元,然後再按一下 [確定]]。
  4. 在 [DACL] 方塊按一下 新增 ACE
  5. 在 [受信任者] 方塊輸入 [群組名稱或您要授與權限的使用者名稱]。
  6. 控制存取] 方塊中,在確認您在步驟 5 中對所作的變更。

如何使用繼承來指派 Control_Access 權限

若要將繼承建立存取控制項項目,對您想要的使用者或群組,較高層容器階層架構中有機密屬性的物件相比授與 Control_Access 權限。在網域層級或適用於企業容器階層架構中的任何點,您可以設定這個存取控制項目。子物件具有機密屬性必須有啟用的繼承。

如果要指派 Control_Access 權限,請依照下列步驟執行:
  1. 開啟包含在 Windows Server 2003 R2 ADAM Ldp.exe 檔案。
  2. 連接,並將繫結至一個目錄。
  3. 選取 OU 或容器,容器階層架構中較高比組織單位或該容器具有機密屬性的物件按一下滑鼠右鍵按一下 [進階]、 按一下 [安全性描述元,且然後按一下 [確定]
  4. 在 [DACL] 方塊中,按一下 加入 ACE
  5. 在 [受信任者] 方塊輸入 [群組名稱或您要授與權限的使用者名稱]。
  6. 控制存取] 方塊中,在確認您在步驟 5 中對所作的變更。
  7. 在 [物件類型] 方塊中,按一下機密您新增的屬性。
  8. 請確定繼承啟用目標物件上。

如何判斷 systemFlags 屬性值,當您使用現有的屬性

如果您使用現有的物件時,您必須確認目前 searchFlags 屬性值是什麼。如果您將物件加入您可以定義值,當您新增物件。有許多方法來取得 searchFlags 屬性值。使用最適合您的方法。

若要使用 Ldp.exe 工具取得 searchFlags 屬性值,請依照下列步驟執行:
  1. 按一下 [開始]、 按一下 [執行]、 輸入 LDP,然後按一下 [確定]]。
  2. 按一下 [連線],然後再按一下 [繫結
  3. 繫結根目錄] 網域的系統管理員身分或繫結成是企業系統管理員的帳戶。
  4. 按一下 [檢視],然後再按一下 [樹狀結構
  5. 按一下 [CN = 架構 cn = 組態,dc = rootdomain,然後按一下 [確定]
  6. 在左窗格中展開 [CN = 架構 cn = 組態,dc = rootdomain
  7. 找不到您要標記為機密,屬性的網域名稱,然後再展開它。
  8. 在填入的物件的屬性清單,尋找 searchFlags 來判斷該物件目前的 searchFlags 屬性值。
附註若要決定新 searchFlags 屬性值,使用下列公式:
128 + current searchFlags attribute value = new searchFlags attribute value

如何判斷屬性是否為基底結構描述屬性

若要判斷是否屬性是基底結構描述屬性,請使用 Ldp.exe 工具檢查 systemFlags 屬性值。

LDP 輸出的員工-識別碼 – systemFlags: 0x10 = (FLAG_SCHEMA_BASE_OBJECT)

在下列的範例 Ldp.exe 輸出 Ldp.exe 會識別 systemFlags 屬性值,為 0x10 和基底結構描述屬性。 因此,您無法將標示為機密這個屬性。
>> Dn: CN=Employee-ID,CN=Schema,CN=Configuration,DC=domain,DC=com
	2> objectClass: top; attributeSchema; 
	1> cn: Employee-ID; 
	1> distinguishedName: CN=Employee-ID,CN=Schema,CN=Configuration,DC=domain,DC=com; 
	1> instanceType: 0x4 = ( IT_WRITE ); 
	1> whenCreated: 08/05/2005 14:58:58 Central Standard Time; 
	1> whenChanged: 08/05/2005 14:58:58 Central Standard Time; 
	1> uSNCreated: 220; 
	1> attributeID: 1.2.840.113556.1.4.35; 
	1> attributeSyntax: 2.5.5.12 = ( SYNTAX_UNICODE_TYPE ); 
	1> isSingleValued: TRUE; 
	1> rangeLower: 0; 
	1> rangeUpper: 16; 
	1> uSNChanged: 220; 
	1> showInAdvancedViewOnly: TRUE; 
	1> adminDisplayName: Employee-ID; 
	1> adminDescription: Employee-ID; 
	1> oMSyntax: 64 = ( OM_S_UNICODE_STRING ); 
	1> searchFlags: 0x0 = (  ); 
	1> lDAPDisplayName: employeeID; 
	1> name: Employee-ID; 
	1> objectGUID: 64fb3ed1-338f-466e-a879-595bd3940ab7; 
	1> schemaIDGUID: bf967962-0de6-11d0-a285-00aa003049e2; 
	1> systemOnly: FALSE; 
	1> systemFlags: 0x10 = ( FLAG_SCHEMA_BASE_OBJECT ); 
	1> objectCategory: CN=Attribute-Schema,CN=Schema,CN=Configuration,DC=domain,DC=com;

LDP 輸出的員工編號 systemFlags: 0x0 =)

在下列的範例 Ldp.exe 輸出 Ldp.exe 會識別 systemFlags 屬性值為 0。 This attribute can be marked as confidential.
>> Dn: CN=Employee-Number,CN=Schema,CN=Configuration,DC=warrenw,DC=com
	2> objectClass: top; attributeSchema; 
	1> cn: Employee-Number; 
	1> distinguishedName: CN=Employee-Number,CN=Schema,CN=Configuration,DC=warrenw,DC=com; 
	1> instanceType: 0x4 = ( IT_WRITE ); 
	1> whenCreated: 08/05/2005 14:58:58 Central Standard Time; 
	1> whenChanged: 08/05/2005 14:58:58 Central Standard Time; 
	1> uSNCreated: 221; 
	1> attributeID: 1.2.840.113556.1.2.610; 
	1> attributeSyntax: 2.5.5.12 = ( SYNTAX_UNICODE_TYPE ); 
	1> isSingleValued: TRUE; 
	1> rangeLower: 1; 
	1> rangeUpper: 512; 
	1> mAPIID: 35943; 
	1> uSNChanged: 221; 
	1> showInAdvancedViewOnly: TRUE; 
	1> adminDisplayName: Employee-Number; 
	1> adminDescription: Employee-Number; 
	1> oMSyntax: 64 = ( OM_S_UNICODE_STRING ); 
	1> searchFlags: 0x0 = (  ); 
	1> lDAPDisplayName: employeeNumber; 
	1> name: Employee-Number; 
	1> objectGUID: 2446d04d-b8b6-46c7-abbf-4d8e7e1bb6ec; 
	1> schemaIDGUID: a8df73ef-c5ea-11d1-bbcb-0080c76670c0; 
	1> systemOnly: FALSE; 
	1> systemFlags: 0x0 = (  ); 
	1> objectCategory: CN=Attribute-Schema,CN=Schema,CN=Configuration,DC=warrenw,DC=com; 
-----------

物件識別項

當您新增的屬性或類別物件的結構描述時,其中一個必要的屬性是物件識別元 (也稱為 OID)。物件識別項用來唯一定義物件類別和屬性。請確定您的公司會取得要識別其屬性的唯一物件識別項。不支援產生例如 Oidgen.exe] 工具的物件識別碼的工具。若要從 Microsoft 取得物件識別元,請造訪下列 Microsoft 網站]:
http://msdn2.microsoft.com/en-us/library/ms677620.aspx

屬性語法

attributeSyntax 屬性,也才能將新物件加入至結構描述。這個屬性會定義儲存體表示、 位元組順序和比對規則進行比較的屬性型別。語法定義屬性值必須是字串]、 [一個數字] 或 [時間單位。每個物件的每個屬性都正好與其中一個的語法與相關聯。請確定您選取正確的屬性語法的新屬性。這點特別重要,如果您同步輕量型目錄存取通訊協定 (LDAP) 目錄與另一個 LDAP 目錄。將屬性加入至結構描述之後,不能變更其屬性的語法。

如需有關 attributeSyntax 屬性的詳細資訊,請造訪下列 Microsoft 網站]:
hhttp://msdn.microsoft.com/en-us/library/ms675236(VS.85).aspx
如需詳細 searchFlags 屬性的值的相關資訊,請造訪下列 Microsoft ? ? ‾ ? ?],然後再搜尋 < 效果的索引上搜尋 >]:
http://technet2.microsoft.com/WindowsServer/en/library/8196d68e-776a-4bbc-99a6-d8c19f36ded41033.mspx?mfr=true

屬性

文章編號: 922836 - 上次校閱: 2007年10月11日 - 版次: 3.4
這篇文章中的資訊適用於:
  • Microsoft Windows Server 2003 Service Pack 1?應用於:
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003, Standard x64 Edition
關鍵字:?
kbmt kbhowto kbinfo KB922836 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:922836
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com