13 アクセス制御リスト #
crmシェル(crmsh)またはHawk2などのクラスタ管理ツールは、root
ユーザまたはhaclient
グループ内のユーザが使用できます。デフォルトで、これらのユーザは完全な読み込み/書き込みのアクセス権を持ちます。アクセスを制限するか、または詳細なアクセス権を割り当てるには、「アクセス制御リスト」(ACL)を使用できます。
アクセス制御リストは、順序付けされたアクセスルールセットで構成されています。各ルールにより、クラスタ設定の一部への読み込みまたは書き込みアクセスの許可、またはアクセスの拒否が行われます。ルールは通常、組み合わせて特定の役割を生成し、ユーザを自分のタスクに一致する役割に割り当てることができます。
このACLマニュアルは、pacemaker-2.0
以上のCIB構文バージョンでCIBを検証する場合にのみ適用します。この検証方法およびCIBバージョンのアップグレード方法の詳細については、注記: CIB構文バージョンのアップグレードを参照してください。
13.1 要件と前提条件 #
クラスタでACLの使用を開始する前に、次の条件が満たされていることを確認します。
NIS、Active Directoryを使用するか、またはすべてのノードに同じユーザを手動で追加して、クラスタ内のすべてのノード上に同じユーザがいることを確認します。
ACLでアクセス権を変更したいすべてのユーザが
haclient
グループに属している必要があります。すべてのユーザが絶対パス
/usr/sbin/crm
でcrmshを実行する必要があります。権限のないユーザがcrmshを実行する場合は、
/usr/sbin
を使用して、PATH
変数を展開する必要があります。
ACLはオプションの機能です。デフォルトでは、ACLの使用は無効になっています。
ACL機能が無効化された場合、
root
およびhaclient
グループに属するすべてのユーザは、クラスタ設定への完全な読み込み/書き込みアクセス権を持ちます。ACLが有効化され、設定される場合でも、
root
およびデフォルトのCRM所有者は両方とも、「常に」hacluster
クラスタ設定への完全なアクセス権を持ちます。
13.2 概念の概要 #
アクセス制御リストは、順序付けされたアクセスルールセットで構成されています。各ルールにより、クラスタ設定の一部への読み込みまたは書き込みアクセスの許可、またはアクセスの拒否が行われます。ルールは通常、組み合わせて特定の役割を生成し、ユーザを自分のタスクに一致する役割に割り当てることができます。ACLの役割はCIBへのアクセス権を表すルールのセットです。ルールは次の要素で構成されています。
read
、write
、またはdeny
のようなアクセス権。ルールを適用する場所の指定。種類、ID参照、またはXPath式を使用して指定できます。XPathはXMLドキュメントでノードを選択するための言語です。http://en.wikipedia.org/wiki/XPathを参照してください。
通常、ACLを役割にバンドルし、システムユーザ(ACLターゲット)に特定の役割を割り当てると便利です。ACLルールを作成するためには、次の方法があります。
13.7項 「XPath式によるACLルールの設定」をクリックします。ACLルールを作成するためには、その記述言語であるXMLの構造を理解している必要があります。
13.8項 「短縮によるACLルールの設定」をクリックします。簡略構文を作成し、ACLルールが一致するオブジェクトに適用します。
13.3 クラスタでのACLの使用の有効化 #
ACLの設定を開始する前に、ACLの使用を「有効にする」必要があります。有効にするには、crmshで次のコマンドを使用します。
root #
crm
configure property enable-acl=true
または、手順13.1「Hawk2でのACLの使用の有効化」で説明するように、Hawk2を使用します。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーで、
を選択して、グローバルクラスタオプションとそれらの現在の値を表示します。No
で追加されます。値を
Yes
に設定して変更を適用します。
13.4 読み込み専用monitor役割の作成 #
次のサブセクションでは、Hawk2またはcrmシェルのいずれかでmonitor
役割を定義することにより、読み込み専用アクセスを設定する方法について説明します。
13.4.1 Hawk2による読み込み専用monitor役割の作成 #
次の手順は、monitor
役割を定義し、それをユーザに割り当てることで、クラスタ設定への読み込み専用アクセスを設定する方法を示しています。または、手順13.4「monitor役割を追加して、crmshを持つユーザに割り当てる」で説明されているように、crmshを使用してこの操作を実行することもできます。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーで、
を選択します。固有な「
」として、monitor
などを入力します。アクセス
として、Read
を選択します。/cib
を入力します。この操作は、
monitor
の名前を持つ新しい役割を作成して、read
の権利を設定し、XPath式/cib
を使用してCIB内のすべての要素に適用します。必要に応じてプラスアイコンをクリックしてルールを追加し、個別のパラメータを指定します。
上矢印や下矢印のボタンを使用して、個別のルールをソートできます。
リソースや制約に対するアクセス権を設定するには、13.8項 「短縮によるACLルールの設定」で説明したように、短縮構文も使用できます。
13.4.2 crmshによる読み込み専用monitor役割の作成 #
次の手順は、monitor
役割を定義し、それをユーザに割り当てることで、クラスタ設定への読み込み専用アクセスを設定する方法を示しています。
root
としてログインします。crmshの対話モードを開始します。
root #
crm
configurecrm(live)configure#
ACLの役割を次のとおり定義します。
role
コマンドを使用して、新しい役割を定義します。crm(live)configure#
role
monitor read xpath:"/cib"前のコマンドは、
monitor
の名前を持つ新しい役割を作成して、read
の権利を設定し、XPath式/cib
を使用してCIB内のすべての要素に適用します。必要な場合は、アクセス権およびXPath引数をさらに追加できます。必要に応じてさらに役割を追加します。
役割を1つ以上のACLターゲットに割り当てます。このACLターゲットは、該当のシステムユーザです。これらのシステムユーザが
haclient
グループに属していることを確認します。crm(live)configure#
acl_target
tux monitor変更を確認します:。
crm(live)configure#
show
変更をコミットします。:
crm(live)configure#
commit
リソースや制約に対するアクセス権を設定するには、13.8項 「短縮によるACLルールの設定」で説明したように、短縮構文も使用できます。
13.5 ユーザの削除 #
次のサブセクションでは、Hawk2またはcrmshのいずれかで、ACLから既存のユーザを削除する方法について説明します。
13.5.1 Hawk2によるユーザの削除 #
ACLからユーザを削除するには、次の手順に従います。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーで、
を選択します。システムユーザ(ACLターゲット)を削除するには、
列の下にあるごみ箱アイコンをクリックします。ダイアログボックスを確認します。
13.5.2 crmshによるユーザの削除 #
ACLからユーザを削除するには、プレースホルダUSERをユーザの名前で置き換えます置換します。
root #
crm
configure delete USERNAME
別の方法として、edit
サブコマンドを使用できます。
root #
crm
configure edit USERNAME
13.6 既存の役割の削除 #
次のサブセクションでは、Hawk2またはcrmshのいずれかで、既存の役割を削除する方法について説明します。
この役割にユーザを含めないでください。役割内にユーザへの参照がまだある場合、役割を削除できません。まず、ユーザへの参照を削除してから、役割を削除してください。
13.6.1 Hawk2による既存の役割の削除 #
役割を削除するには、次の手順に従います。
Hawk2にログインします。
https://HAWKSERVER:7630/
左のナビゲーションバーで、
を選択します。役割を削除するには、
列の下にあるごみ箱アイコンをクリックします。ダイアログボックスを確認します。エラーメッセージが表示される場合は、役割が「空」であり、ユーザを参照していないことを確認してください。
13.6.2 crmshによる既存の役割の削除 #
既存の役割を削除するには、プレースホルダROLEを役割の名前で置き換えます。
root #
crm
configure delete ROLE
13.7 XPath式によるACLルールの設定 #
XPathによってACLルールを管理するには、その記述言語であるXMLの構造を理解している必要があります。XMLでクラスタ設定を表示する次のコマンドで構造を取得します(例 13.1を参照)。
root #
crm
configure show xml
<cib> <!-- ... --> <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
を使用します。
一例として、表13.1「オペレータ役割 - アクセスタイプおよびXPath式」は、「オペレータ」の役割を作成するためのパラメータ(アクセスタイプおよびXPath式)を示しています。この役割を持つユーザは、2番目の列で説明されるタスクのみ実行することができ、リソースを再構成することはできません(たとえば、パラメータや操作の変更など)。また、コロケーションや順序の制約の設定を変更することもできません。
タイプ |
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 クラスタのステータスを表示します。 |
13.8 短縮によるACLルールの設定 #
XML構造を扱いたくないユーザ向けには、より簡単な方法があります。
たとえば、次のXPathを検討します。
//*[@id="rsc1"]
このXPathは、IDがrsc1
であるXMLノードをすべて探し出します。
短縮構文はこのように書かれます。
ref:"rsc1"
これは制約にも使用できます。これが冗長なXPathです。
//constraints/rsc_location
短縮構文はこのように書かれます。
type:"rsc_location"
短縮構文はcrmshおよびHawk2で使用できます。CIBデーモンは一致するオブジェクトにACLルールを適用する方法を認識しています。