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