Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

30.2. IdM ドメインでの Host-based Access Control の設定

Host-based access control 用にドメインを設定するには以下を行います。
  1. 重要

    カスタムの HBAC ルールを作成する前に allow_all ルールを無効化しないでください。作成してしまうと、ユーザーはどのホストにもアクセスできなくなります。

30.2.1. HBAC ルールの作成

以下を使用して、HBAC ルールを作成できます。
サンプルについては「HBAC ルールの例」を参照してください。

Web UI: HBAC ルールの作成

  1. PolicyHost Based Access ControlHBAC Rulesを選択します。
  2. Add をクリックして、新規ルールの追加を開始します。
  3. ルールの名前を入力して Add and Edit をクリックし、HBAC ルールの設定ページに直接移動します。
  4. Who エリアで対象ユーザーを指定します。
    • 特定のユーザーまたはグループのみに HBAC ルールを適用するには、Specified Users and Groups を選択してから、Add をクリックしてユーザーまたはグループを追加します。
    • 全ユーザーに HBAC ルールを適用するには、Anyone を選択します。
    HBAC ルールの対象ユーザーの指定

    図30.2 HBAC ルールの対象ユーザーの指定

  5. Accessing エリアで対象ホストを指定します。
    • 特定のホストまたはグループのみに HBAC ルールを適用するには、Specified hosts and Groups を選択してから、Add をクリックしてホストまたはグループを追加します。
    • 全ホストに HBAC ルールを適用するには、Any Host を選択します。
  6. Via Service エリアでは、対象の HBAC サービスを指定します。
    • 特定のサービスまたはグループのみに HBAC ルールを適用するには、Specified Services and Groups を選択してから、Add をクリックしてサービスまたはグループを追加します。
    • 全サービスに HBAC ルールを適用するには、Any Service を選択します。

    注記

    デフォルトでは HBAC ルール用に、最も一般的なサービスおよびサービスグループのみが設定されています。
    • 現在利用可能なサービス一覧を表示するには、PolicyHost-Based Access ControlHBAC Services を選択します。
    • 現在利用可能なサービスグループ一覧を表示するのは PolicyHost-Based Access ControlHBAC Service Groups を選択します。
    さらにサービスやサービスグループを追加するには、「カスタムの HBAC サービス用に HBAC サービスエントリーの追加」 および 「HBAC サービスグループの追加」 を参照してください。
  7. HBAC ルール設定ページで特定の設定を変更すると、ページの上部の Save ボタンがハイライトされます。ボタンがハイライトされたら、クリックして変更を確定します。

コマンドライン: HBAC ルールの作成

  1. ipa hbacrule-add コマンドを使用して、ルールを追加します。
    $ ipa hbacrule-add
    Rule name: rule_name
    ---------------------------
    Added HBAC rule "rule_name"
    ---------------------------
      Rule name: rule_name
      Enabled: TRUE
  2. 対象のユーザーを指定します。
    • 指定のユーザーまたはグループのみに HBAC ルールを適用するには、ipa hbacrule-add-user コマンドを使用します。
      たとえば、グループを追加するには以下を実行します。
      $ ipa hbacrule-add-user
      Rule name: rule_name
      [member user]:
      [member group]: group_name
        Rule name: rule_name
        Enabled: TRUE
        User Groups: group_name
      -------------------------
      Number of members added 1
      -------------------------
      複数のユーザーまたはグループを追加するには、--users および --groups オプションを使用します。
      $ ipa hbacrule-add-user rule_name --users=user1 --users=user2 --users=user3
        Rule name: rule_name
        Enabled: TRUE
        Users: user1, user2, user3
      -------------------------
      Number of members added 3
      -------------------------
    • HBAC ルールを全ユーザーに適用するには、ipa hbacrule-mod コマンドを使用して、all ユーザーカテゴリーを指定します。
      $ ipa hbacrule-mod rule_name --usercat=all
      ------------------------------
      Modified HBAC rule "rule_name"
      ------------------------------
        Rule name: rule_name
        User category: all
        Enabled: TRUE

      注記

      HBAC ルールが個別ユーザーまたはグループに関連付けられている場合には、ipa hbacrule-mod --usercat=all は失敗します。このような場合には、ipa hbacrule-remove-user コマンドを使用してユーザーとグループを削除します。
      詳細は、--help オプションを指定して ipa hbacrule-remove-user を実行します。
  3. 対象のホストを指定します。
    • 指定のホストまたはグループのみに HBAC ルールを適用するには、ipa hbacrule-add-host コマンドを使用します。
      たとえば、単一のホストを追加するには、以下を実行します。
      $ ipa hbacrule-add-host
      Rule name: rule_name
      [member host]: host.example.com
      [member host group]:
        Rule name: rule_name
        Enabled: TRUE
        Hosts: host.example.com
      -------------------------
      Number of members added 1
      -------------------------
      複数のホストまたはグループを追加するには、--hosts および --hostgroups オプションを使用します。
      $ ipa hbacrule-add-host rule_name --hosts=host1 --hosts=host2 --hosts=host3
        Rule name: rule_name
        Enabled: TRUE
        Hosts: host1, host2, host3
      -------------------------
      Number of members added 3
      -------------------------
    • HBAC ルールを全ホストに適用するには、ipa hbacrule-mod コマンドを使用して、all ホストカテゴリーを指定します。
      $ ipa hbacrule-mod rule_name --hostcat=all
      ------------------------------
      Modified HBAC rule "rule_name"
      ------------------------------
        Rule name: rule_name
        Host category: all
        Enabled: TRUE

      注記

      HBAC ルールが個別ホストまたはグループに関連付けられている場合には、ipa hbacrule-mod --hostcat=all は失敗します。このような場合には、ipa hbacrule-remove-host コマンドを使用してホストとグループを削除します。
      詳細は、--help オプションを指定して ipa hbacrule-remove-host を実行します。
  4. 対象の HBAC サービスを指定します。
    • 指定のサービスまたはグループのみに HBAC ルールを適用するには、ipa hbacrule-add-service コマンドを使用します。
      たとえば、単一のサービスを追加するには以下を実行します。
      $ ipa hbacrule-add-service
      Rule name: rule_name
      [member HBAC service]: ftp
      [member HBAC service group]:
      Rule name: rule_name
      Enabled: TRUE
      Services: ftp
      -------------------------
      Number of members added 1
      -------------------------
      複数のサービスまたはグループを追加するには、--hbacsvcs および --hbacsvcgroups オプションを使用します。
      $ ipa hbacrule-add-service rule_name --hbacsvcs=su --hbacsvcs=sudo
        Rule name: rule_name
        Enabled: TRUE
        Services: su, sudo
      -------------------------
      Number of members added 2
      -------------------------

      注記

      最も一般的なサービスおよびサービスグループのみが HBAC ルール用に設定されます。さらに追加するには「カスタムの HBAC サービス用に HBAC サービスエントリーの追加」および「HBAC サービスグループの追加」を参照してください。
    • HBAC ルールを全サービスに適用するには、ipa hbacrule-mod コマンドを使用して、all サービスカテゴリーを指定します。
      $ ipa hbacrule-mod rule_name --servicecat=all
      ------------------------------
      Modified HBAC rule "rule_name"
      ------------------------------
        Rule name: rule_name
        Service category: all
        Enabled: TRUE

      注記

      HBAC ルールが個別サービスまたはグループに関連付けられている場合には、ipa hbacrule-mod --servicecat=all は失敗します。このような場合には、ipa hbacrule-remove-service コマンドを使用してサービスとグループを削除します。
      詳細は、--help オプションを指定して ipa hbacrule-remove-service を実行します。
  5. オプション: HBAC ルールが正しく追加されたことを確認します。
    1. ipa hbacrule-find コマンドを使用して、HBAC ルールが IdM に追加されたことを確認します。
    2. ipa hbacrule-show コマンドを使用して、HBAC ルールのプロパティーを確認します。
    詳細は、--help オプションを指定してコマンドを実行します。

HBAC ルールの例

例30.1 サービスを使用して単一ユーザーに全ホストへのアクセス権を割り当てる手順

サービスを使用して admin ユーザーがドメイン内の全システムにアクセスできるようにするには、新規の HBAC ルールを作成して、以下を設定します。
  • ユーザーを admin に設定します。
  • ホストを Any host (web UI で) に設定します。または、ipa hbacrule-add (ルールの追加) または ipa hbacrule-mod を指定して --hostcat=all を実行します。
  • サービスを Any service (web UI で) に設定します。または、ipa hbacrule-add (ルールの追加) または ipa hbacrule-mod を指定して --servicecat=all を実行します。

例30.2 特定のサービスのみを使用してホストにアクセスする手順

全ユーザーが sudo 関連のサービスを使用して、host.example.com という名前のホストにアクセスするには、新規の HBAC ルールを作成して、以下を設定します。
  • ユーザーを Anyone (web UI で) に設定します。または、ipa hbacrule-add (ルールの追加) または ipa hbacrule-mod を指定して --usercat=all を実行します。
  • ホストを host.example.com に設定します。
  • HBAC サービスグループを Sudo に設定します。この Sudo は sudo と関連サービスのデフォルトグループです。

30.2.2. HBAC ルールのテスト

IdM では、シミュレーションのシナリオを使用して、さまざまな状況で HBAC 設定をテストすることができます。シミュレーションテストの実行を行うことで、HBAC ルールが実稼働環境にデプロイされる前に、設定ミスの問題や、セキュリティーリスクを検出できます。

重要

カスタムの HBAC ルールを必ずテストしてから実稼働環境での使用を開始するようにしてください。
IdM は、信頼される Active Directory (AD) ユーザーに対して HBAC ルールが有効であるかどうかのテストは行わない点に注意してください。AD データは IdM LDAP ディレクトリーに保存されないので、HBAC シナリオをシミュレーションする場合に、IdM は AD ユーザーのグループメンバーシップを解決できません。
以下を使用して、HBAC ルールをテストすることができます。

Web UI: HBAC ルールのテスト

  1. PolicyHost-Based Access ControlHBAC Testを選択します。
  2. Who 画面で、ID のテストを実行するユーザーを指定して、Next をクリックします。
    HBAC テスト用の対象ユーザーの指定

    図30.3 HBAC テスト用の対象ユーザーの指定

  3. Accessing 画面でユーザーがアクセスを試みるホストを指定して、Next をクリックします。
  4. Via Service 画面で、ユーザーが使用を試みるサービスを指定して、Next をクリックします。
  5. Rules 画面で、テストする HBAC ルールを選択して Next をクリックします。ルールを選択しない場合には、すべてのルールがテストされます。
    Include Enabled を選択して、ステータスが Enabled の全ルールに対してテストを実行します。Include Disabled を選択して、ステータスが Disabled の全ルールにテストを実行します。HBAC ルールの表示やステータスの変更は、PolicyHost Based Access ControlHBAC Rules を選択します。

    重要

    複数のルールでテストが実行される場合には、選択したルールの 1 つでアクセスが許可されるとテストに成功します。
  6. Run Test 画面で、Run Test をクリックします。
    HBAC テストの実行

    図30.4 HBAC テストの実行

  7. テストの結果を確認します。
    • ACCESS DENIED が表示されると、テストへのアクセス権が拒否されたことになります。
    • ACCESS GRANTED が表示されると、ホストへのアクセスが正常に許可されたことになります。
    HBAC テスト結果の確認

    図30.5 HBAC テスト結果の確認

    デフォルトでは、IdM はテスト結果を表示する際には、テスト済みの HBAC ルールをすべて表示します。
    • アクセスを許可するルールを表示するには、Matched を選択してください。
    • アクセスを拒否するルールを表示するには、Unmatched を選択してください。

コマンドライン: HBAC ルールのテスト

ipa hbactest コマンドを使用して、最低でも以下を指定します。
  • ID のテストを実行するユーザー
  • ユーザーがアクセスを試みるホスト
  • ユーザーが使用を試みるサービス
たとえば、対話式に値を指定する場合には、以下のコマンドを実行します。
$ ipa hbactest
User name: user1
Target host: example.com
Service: sudo
---------------------
Access granted: False
---------------------
Not matched rules: rule1
デフォルトでは、IdM はステータスが enabled の HBAC ルールすべてでテストを実行します。別の HBAC ルールを指定するには、以下を実行します。
  • HBAC ルールを 1 つまたは複数定義するには、--rules オプションを使用します。
  • ステータスが disabled の HBAC ルールをすべてテストするには --disabled オプションを使用します。
HBAC ルールの現在のステータスを表示するには ipa hbacrule-find コマンドを使用します。

例30.3 コマンドラインからの HBAC ルールのテスト

以下のテストでは、rule2 という名前の HBAC ルールを使用して、user1sudo を使用して example.com にアクセスできないようにします。
$ ipa hbactest --user=user1 --host=example.com --service=sudo --rules=rule1
---------------------
Access granted: False
---------------------
  Not matched rules: rule1

例30.4 コマンドラインからの複数の HBAC ルールのテスト

複数の HBAC ルールをテストする場合は、ユーザーが正常にアクセスできるように許可するルールが 1 つ以上あればテストに合格します。
$ ipa hbactest --user=user1 --host=example.com --service=sudo --rules=rule1 --rules=rule2
--------------------
Access granted: True
--------------------
  Matched rules: rule2
  Not matched rules: rule1
出力の内容:
  • Matched rules では、正常なアクセスを許可するルールを表示します。
  • Not matched rules はアクセスを拒否するルールを表示します。

30.2.3. HBAC ルールの無効化

HBAC ルールを無効にするとルールが無効になりますが、削除はされません。HBAC ルールを無効にする場合は、後でもう一度有効化することができます。

注記

たとえば、カスタムの HBAC ルールを初めて作成したあとに HBAC ルールを無効にする場合に便利です。また、新規設定がデフォルトの allow_all HBAC ルールで上書きされないようにするには allow_all を無効にする必要があります。
HBAC ルールを無効にするには、以下を使用します。

Web UI: HBAC ルールの無効化

  1. PolicyHost-Based Access ControlHBAC Rulesを選択します。
  2. 無効化する HBAC ルールを選択して Disable をクリックします。
allow_all の HBAC ルールの無効化

図30.6 allow_all の HBAC ルールの無効化

コマンドライン: HBAC ルールの無効化

ipa hbacrule-disable コマンドを使用します。たとえば、allow_all ルールを無効にするには、以下を実行します。
$ ipa hbacrule-disable allow_all
------------------------------
Disabled HBAC rule "allow_all"
------------------------------