僅當您的 CIB 是由 pacemaker-2.0
或更高 CIB 語法版本驗證時,此 ACL 文件才適用。如需關於如何檢查這一點以及升級 CIB 版本的詳細資料,請參閱注意:升級 CIB 語法版本。
如果您已從 SUSE Linux Enterprise High Availability Extension 11 SPx 升級並保留了以前的 CIB 版本,請參閱《SUSE Linux Enterprise High Availability Extension 11 SP3 管理指南》(或更低版本的管理指南) 中的「存取控制清單」一章。此文件位於 https://documentation.suse.com/sle-ha-11。
在您開始對叢集使用 ACL 前,請確定符合下列條件︰
請使用 NIS、Active Directory 或者透過手動將相同使用者新增至所有節點的方式,來確保叢集中的所有節點上擁有相同的使用者。
您要使用 ACL 修改其存取權限的所有使用者都必須屬於 haclient
群組。
所有使用者都需要使用 crmsh 的絕對路徑 /usr/sbin/crm
來執行 crmsh。
如果非特權使用者要執行 crmsh,則需要使用 /usr/sbin
延伸其 PATH
變數。
ACL 是一個選擇性功能。ACL 預設處於停用狀態。
如果未啟用 ACL,root
以及屬於 haclient
群組的所有使用者對於叢集組態將擁有完整的讀取/寫入存取權。
即使啟用並設定了 ACL,root
和預設 CRM 擁有者 hacluster
也永遠擁有對叢集組態的完整存取權。
若要使用 ACL,您需要瞭解一些 XPath 方面的知識。XPath 是一種用於在 XML 文件中選取節點的語言。請參閱 http://en.wikipedia.org/wiki/XPath 或在 http://www.w3.org/TR/xpath/ 上查詢規格。
在開始設定 ACL 之前,需要先啟用 ACL。若要實現此目的,請在 crmsh 中使用以下指令︰
root #
crm
configure property enable-acl=true
或者,依程序 12.1 「使用 Hawk 啟用 ACL」所述使用 Hawk2。
登入 Hawk2︰
https://HAWKSERVER:7630/
在左側導覽列中,選取
以顯示全域叢集選項及它們目前的值。
在No
。
將其值設定為 Yes
,然後套用變更。
存取控制清單由一組排序的存取規則構成。每個規則允許對一部分叢集組態進行讀取或寫入存取,或者拒絕對該部分進行存取。多個規則通常會組合起來構成特定的角色,這樣便可以將使用者指定到與其任務相符的角色。ACL 角色是一組用於描述 CIB 存取權限的規則。規則由以下元素組成︰
存取權限,例如讀取
、寫入
或拒絕
定義在何種情況下套用規則的規格。此規格可以是類型、ID 參考或 XPath 運算式。
通常,便利的做法是將 ACL 綁定到角色,並將特定的角色指定給系統使用者 (ACL 目標)。建立 ACL 規則的方法有兩種︰
第 12.3.1 節 「透過 XPath 運算式設定 ACL 規則」。您需要瞭解基礎 XML 的結構才能建立 ACL 規則。
第 12.3.2 節 「透過縮寫設定 ACL 規則」。建立要套用至相符物件的簡寫語法與 ACL 規則。
若要透過 XPath 管理 ACL 規則,您需要瞭解基礎 XML 的結構。使用以下指令擷取結構,該指令將以 XML 格式顯示您的叢集組態 (請參閱範例 12.1)︰
root #
crm
configure show xml
<num_updates="59" dc-uuid="175704363" crm_feature_set="3.0.9" validate-with="pacemaker-2.0" epoch="96" admin_epoch="0" cib-last-written="Fri Aug 8 13:47:28 2014" have-quorum="1"> <configuration> <crm_config> <cluster_property_set id="cib-bootstrap-options"> <nvpair name="stonith-enabled" value="true" id="cib-bootstrap-options-stonith-enabled"/> [...] </cluster_property_set> </crm_config> <nodes> <node id="175704363" uname="alice"/> <node id="175704619" uname="bob"/> </nodes> <resources> [...] </resources> <constraints/> <rsc_defaults> [...] </rsc_defaults> <op_defaults> [...] </op_defaults> <configuration> </cib>
您可以使用 XPath 語言在此 XML 文件中尋找節點。例如,若要選取根節點 (cib
),請使用 XPath 運算式 /cib
。若要尋找全域叢集組態,請使用 XPath 運算式 /cib/configuration/crm_config
。
例如,表格 12.1 「Operator 角色 — 存取類型和 XPath 運算式」顯示了用於建立「operator」角色的參數 (存取類型和 XPath 運算式)。具有此角色的使用者僅可執行第二欄中所述的任務 — 他們既不能重新設定任何資源 (例如,變更參數或操作),也不能變更並存或順序條件約束的組態。
類型 |
XPath/說明 |
---|---|
寫入 |
//crm_config//nvpair[@name='maintenance-mode'] 開啟或關閉叢集維護模式。 |
寫入 |
//op_defaults//nvpair[@name='record-pending'] 選擇是否要記錄待處理操作。 |
寫入 |
//nodes/node//nvpair[@name='standby'] 將節點設定為線上模式或待命模式。 |
寫入 |
//resources//nvpair[@name='target-role'] 啟動、停止、升級或降級任何資源。 |
寫入 |
//resources//nvpair[@name='maintenance'] 選擇是否應將資源置於維護模式。 |
寫入 |
//constraints/rsc_location 將資源從一個節點移轉/移動到另一個節點。 |
讀取 |
/cib 檢視叢集的狀態。 |
不想處理 XML 結構的使用者可以使用更簡單的方法,
例如,您可以考慮使用如下 Xpath︰
//*[@id="rsc1"]
它會尋找 ID 為 rsc1
的所有 XML 節點。
相應的簡寫語法如下︰
ref:"rsc1"
這也適用於條件約束。以下是詳細的 XPath︰
//constraints/rsc_location
相應的簡寫語法如下︰
type:"rsc_location"
可以在 crmsh 和 Hawk2 中使用簡寫語法。CIB 精靈知道如何將 ACL 規則套用至相符物件。
下面的程序說明如何透過定義 monitor
角色並將其指定給使用者,來設定對叢集組態的唯讀存取權限。您也可以依照程序 12.4 「使用 crmsh 新增 Monitor 角色並指定使用者」所述使用 crmsh 來實現此目的。
若要設定對資源或條件約束的存取權限,也可以依照第 12.3.2 節 「透過縮寫設定 ACL 規則」所述使用簡寫語法。
下面的程序說明如何透過定義 monitor
角色並將其指定給使用者,來設定對叢集組態的唯讀存取權。
以 root
身分登入。
啟動 crmsh 的互動模式︰
root #
crm
configurecrm(live)configure#
定義 ACL 角色︰
使用 role
指令定義新角色︰
crm(live)configure#
role
monitor read xpath:"/cib"
上面的指令會建立一個名為 monitor
的新角色,為其設定讀取
權限,並使用 XPath 運算式 /cib
將其套用至 CIB 中的所有元素。如果需要,您可以新增更多存取權限及 XPath 引數。
根據需要新增其他角色。
將角色指定給一或多個 ACL 目標,即相應的系統使用者。請確定他們屬於 haclient
群組。
crm(live)configure#
acl_target
tux monitor
檢查您的變更︰
crm(live)configure#
show
提交您的變更︰
crm(live)configure#
commit
若要設定對資源或條件約束的存取權限,也可以依照第 12.3.2 節 「透過縮寫設定 ACL 規則」所述使用簡寫語法。