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

15 アクセス制御リスト

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

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

注記
注記: CIB構文検証バージョンと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へのアクセス権を表すルールのセットです。ルールは次の要素で構成されています。

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

  • ルールを適用する場所の指定。種類、ID参照、またはXPath式を使用して指定できます。XPathはXMLドキュメントでノードを選択するための言語です。https://en.wikipedia.org/wiki/XPathを参照してください。

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

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

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

# crm configure property enable-acl=true

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

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

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

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

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

15.4 読み込み専用monitor役割の作成

次のサブセクションでは、Hawk2またはcrmシェルのいずれかでmonitor役割を定義することにより、読み込み専用アクセスを設定する方法について説明します。

15.4.1 Hawk2による読み込み専用monitor役割の作成

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

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

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

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

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

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

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

    ACLの役割のルールを定義する場所を示すHawk2のCreate Role画面
    図 15.1: Hawk2の役割作成
  7. 作成をクリックします。

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

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

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

手順 15.3: Hawk2によるターゲットへの役割割り当て

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

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

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

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

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

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

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

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

15.4.2 crmshによる読み込み専用monitor役割の作成

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

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

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

    # 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

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

15.5 ユーザの削除

次のサブセクションでは、Hawk2またはcrmshのいずれかで、ACLから既存のユーザを削除する方法について説明します。

15.5.1 Hawk2によるユーザの削除

ACLからユーザを削除するには、次の手順に従います。

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

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

  3. システムユーザ(ACLターゲット)を削除するには、操作列の下にあるごみ箱アイコンをクリックします。

  4. ダイアログボックスを確認します。

15.5.2 crmshによるユーザの削除

ACLからユーザを削除するには、プレースホルダUSERをユーザの名前で置き換えます置換します。

# crm configure delete USERNAME

別の方法として、editサブコマンドを使用できます。

# crm configure edit USERNAME

15.6 既存の役割の削除

次のサブセクションでは、Hawk2またはcrmshのいずれかで、既存の役割を削除する方法について説明します。

注記
注記: 参照されているユーザを含む役割の削除

この役割にユーザを含めないでください。役割内にユーザへの参照がまだある場合、役割を削除できません。まず、ユーザへの参照を削除してから、役割を削除してください。

15.6.1 Hawk2による既存の役割の削除

役割を削除するには、次の手順に従います。

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

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

  3. 役割を削除するには、操作列の下にあるごみ箱アイコンをクリックします。

  4. ダイアログボックスを確認します。エラーメッセージが表示されたら、役割がで、ユーザを参照していないことを確認します。

15.6.2 crmshによる既存の役割の削除

既存の役割を削除するには、プレースホルダROLEを役割の名前で置き換えます。

# crm configure delete ROLE

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

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

# crm configure show xml
例 15.1: 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ルールを適用する方法を認識しています。