目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise High Availability Extensionのドキュメント / 管理ガイド / 設定および管理 / アクセス制御リスト
適用項目 SUSE Linux Enterprise High Availability Extension 15 SP2

12 アクセス制御リスト

crmシェル(crmsh)またはHawk2などのクラスタ管理ツールは、rootユーザまたはhaclientグループ内のユーザが使用できます。デフォルトで、これらのユーザは完全な読み込み/書き込みのアクセス権を持ちます。アクセスを制限するか、または詳細なアクセス権を割り当てるには、「アクセス制御リスト」(ACL)を使用できます。

アクセス制御リストは、順序付けされたアクセスルールセットで構成されています。各ルールにより、クラスタ設定の一部への読み込みまたは書き込みアクセスの許可、またはアクセスの拒否が行われます。ルールは通常、組み合わせて特定の役割を生成し、ユーザを自分のタスクに一致する役割に割り当てることができます。

注記
注記: CIB構文検証バージョンとACLとの違い

このACLマニュアルは、pacemaker-2.0以上のCIB構文バージョンでCIBを検証する場合にのみ適用します。この検証方法およびCIBバージョンのアップグレード方法の詳細については、注記: CIB構文バージョンのアップグレードを参照してください。

12.1 要件と前提条件

クラスタでACLの使用を開始する前に、次の条件が満たされていることを確認します。

  • NIS、Active Directoryを使用するか、またはすべてのノードに同じユーザを手動で追加して、クラスタ内のすべてのノード上に同じユーザがいることを確認します。

  • ACLでアクセス権を変更したいすべてのユーザがhaclientグループに属している必要があります。

  • すべてのユーザが絶対パス/usr/sbin/crmでcrmshを実行する必要があります。

  • 権限のないユーザがcrmshを実行する場合は、/usr/sbinを使用して、PATH変数を展開する必要があります。

重要
重要: デフォルトのアクセス権
  • ACLはオプションの機能です。デフォルトでは、ACLの使用は無効になっています。

  • ACL機能が無効化された場合、rootおよびhaclientグループに属するすべてのユーザは、クラスタ設定への完全な読み込み/書き込みアクセス権を持ちます。

  • ACLが有効化され、設定される場合でも、rootおよびデフォルトのCRM所有者haclient は両方とも、「常に」クラスタ設定への完全なアクセス権を持ちます。

ACLを使用するには、XPathに関するいくらかの知識が必要になります。XPathはXMLドキュメントでノードを選択するための言語です。http://en.wikipedia.org/wiki/XPathを参照するか、http://www.w3.org/TR/xpath/の仕様を確認してください。

12.2 クラスタでのACLの使用の有効化

ACLの設定を開始する前に、ACLの使用を「有効にする」必要があります。有効にするには、crmshで次のコマンドを使用します。

root # crm configure property enable-acl=true

または、手順12.1「Hawk2でのACLの使用の有効化」で説明するように、Hawk2を使用します。

手順 12.1: Hawk2でのACLの使用の有効化
  1. Hawk2にログインします。

    https://HAWKSERVER:7630/
  2. 左のナビゲーションバーで、クラスタ設定を選択して、グローバルクラスタオプションとそれらの現在の値を表示します。

  3. クラスタ設定の下にある空のドロップダウンボックスをクリックし、enable-aclを選択してパラメータを追加します。デフォルト値Noで追加されます。

  4. 値をYesに設定して変更を適用します。

12.3 ACLの基\'96\'7b事項

アクセス制御リストは、順序付けされたアクセスルールセットで構成されています。各ルールにより、クラスタ設定の一部への読み込みまたは書き込みアクセスの許可、またはアクセスの拒否が行われます。ルールは通常、組み合わせて特定の役割を生成し、ユーザを自分のタスクに一致する役割に割り当てることができます。ACLの役割はCIBへのアクセス権を表すルールのセットです。ルールは次の要素で構成されています。

  • readwrite、またはdenyのようなアクセス権。

  • ルールを適用する場所の指定。種類、ID参照、またはXPath式を使用して指定できます。

通常、ACLを役割にバンドルし、システムユーザ(ACLターゲット)に特定の役割を割り当てると便利です。ACLルールを作成するためには、次の2つの方法があります。

12.3.1 XPath式によるACLルールの設定

XPathによってACLルールを管理するには、その記述言語であるXMLの構造を理解している必要があります。XMLでクラスタ設定を表示する次のコマンドで構造を取得します(例 12.1を参照)。

root # crm configure show xml
例 12.1: 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「オペレータ役割 - アクセスタイプおよびXPath式」は、オペレータの役割を作成するためのパラメータ(アクセスタイプおよびXPath式)を示しています。この役割を持つユーザは、2番目の列で説明されるタスクのみ実行することができ、リソースを再構成することはできません(たとえば、パラメータや操作の変更など)。また、コロケーションや順序の制約の設定を変更することもできません。

表 12.1: オペレータ役割 - アクセスタイプおよび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

クラスタのステータスを表示します。

12.3.2 短縮によるACLルールの設定

XML構造を扱いたくないユーザ向には、より簡単な方法があります。

たとえば、次のXPathを検討します。

//*[@id="rsc1"]

このXPathは、IDがrsc1であるXMLノードをすべて探し出します。

短縮構文はこのように書かれます。

ref:"rsc1"

これは制約にも使用できます。これが冗長なXPathです。

//constraints/rsc_location

短縮構文はこのように書かれます。

type:"rsc_location"

短縮構文はcrmshおよびHawk2で使用できます。CIBデーモンは一致するオブジェクトにACLルールを適用する方法を認識しています。

12.4 Hawk2によるACLの設定

次の手順は、monitor役割を定義し、それをユーザに割り当てることで、クラスタ設定への読み込み専用アクセスを設定する方法を示しています。または、手順12.4「監視の役割を追加して、crmshを持つユーザに割り当てる」で説明されているように、crmshを使用してこの操作を実行することもできます。

手順 12.2: Hawk2によるMonitor役割の追加
  1. Hawk2にログインします。

    https://HAWKSERVER:7630/
  2. 左のナビゲーションバーで、役割を選択します。

  3. 作成をクリックします。

  4. 固有な役割IDとして、monitorなどを入力します。

  5. アクセス権利として、Readを選択します。

  6. Xpathとして、XPath式/cibを入力します。

    Image
  7. 作成をクリックします。

    この操作は、monitorの名前を持つ新しい役割を作成して、readの権利を設定し、XPath式/cibを使用してCIB内のすべての要素に適用します。

  8. 必要に応じてプラスアイコンをクリックしてルールを追加し、個別のパラメータを指定します。

  9. 上矢印や下矢印のボタンを使用して、個別のルールをソートできます。

手順 12.3: Hawk2によるターゲットの役割割当

手順 12.2で作成した役割をシステムユーザ(ターゲット)に割り当てるには、次の手順に従います。

  1. Hawk2にログインします。

    https://HAWKSERVER:7630/
  2. 左のナビゲーションバーで、ターゲットを選択します。

  3. システムユーザ(ACLターゲット)を作成するには、作成をクリックして、固有のターゲットIDを入力します(例:tux)。このユーザがhaclientグループに属することを確認します。

  4. ターゲットに役割を割り当てるには、1つ以上の役割を選択します。

    例では、手順 12.2で作成したmonitor役割を選択します。

    Image
  5. 選択内容を確認します。

リソースや制約に対するアクセス権を設定するには、12.3.2項 「短縮によるACLルールの設定」で説明したように、短縮構文も使用できます。

12.5 crmshによるACLの設定

次の手順は、monitor役割を定義し、それをユーザに割り当てることで、クラスタ設定への読み込み専用アクセスを設定する方法を示しています。

手順 12.4: 監視の役割を追加して、crmshを持つユーザに割り当てる
  1. rootとしてログインします。

  2. crmshの対話モードを開始します。

    root # crm configure
    crm(live)configure# 
  3. ACLの役割を次のとおり定義します。

    1. roleコマンドを使用して、新しい役割を定義します。

      crm(live)configure# role monitor read xpath:"/cib"

      前のコマンドは、monitorの名前を持つ新しい役割を作成して、readの権利を設定し、XPath式/cibを使用してCIB内のすべての要素に適用します。必要な場合は、アクセス権およびXPath引数をさらに追加できます。

    2. 必要に応じてさらに役割を追加します。

  4. 役割を1つ以上のACLターゲットに割り当てます。このACLターゲットは、該当のシステムユーザです。これらのシステムユーザがhaclientグループに属していることを確認します。

    crm(live)configure# acl_target tux monitor
  5. 変更を確認します:

    crm(live)configure# show
  6. 変更をコミットします:

    crm(live)configure# commit

リソースや制約に対するアクセス権を設定するには、12.3.2項 「短縮によるACLルールの設定」で説明したように、短縮構文も使用できます。