Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
31.2. IdM ドメインでのホストベースのアクセス制御設定
ホストベースのアクセス制御用にドメインを設定するには、次のコマンドを実行します。
- 重要カスタムの HBAC ルールを作成する前に、
low_all
ルールを無効にしないでください。これを行うと、どのホストにもアクセスできなくなります。
31.2.1. HBAC ルールの作成
HBAC ルールを作成するには、次のコマンドを使用できます。
- IdM Web UI は、「Web UI - HBAC ルールの作成」を参照してください。
- コマンドラインは、「コマンドライン: HBAC ルールの作成」を参照してください。
例については、「HBAC ルールの例」 を参照してください。
注記
IdM は、ユーザーのプライマリーグループを、IdM グループオブジェクトへのリンクの代わりに、
gidNumber
属性の数値として保存します。このため、HBAC ルールでは、ユーザーの補助グループだけで、プライマリーグループは参照できません。
Web UI - HBAC ルールの作成
- Policy → Host-Based Access Control → HBAC Rules を選択します。
- Add をクリックして、新規ルールの追加を開始します。
- ルールの名前を入力し、追加および編集 をクリックして、HBAC ルール設定ページに直接移動します。
- Who エリアで、ターゲットユーザーを指定します。
- 指定したユーザーまたはグループにのみ適用する場合は、指定したユーザーとグループ を選択します。次に、Add をクリックしてユーザーまたはグループを追加します。
- HBAC ルールをすべてのユーザーに適用するには、Anyone を選択します。
図31.2 HBAC ルールのターゲットユーザーの指定
- Accessing エリアで、ターゲットホストを指定します。
- 指定したホストまたはグループにのみ HBAC ルールを適用するには、指定したホストおよびグループ を選択します。次に、Add をクリックしてホストまたはグループを追加します。
- HBAC ルールをすべてのホストに適用するには、Any Hostを選択します。
- Via Service エリアで、ターゲット HBAC サービスを指定します。
- 指定したサービスまたはグループにのみ適用する場合は、指定したサービスとグループ を選択します。Add をクリックしてサービスまたはグループを追加します。
- HBAC ルールをすべてのサービスに適用するには、Any Service を選択します。
注記最も一般的なサービスおよびサービスグループのみが、デフォルトで HBAC ルールに対して設定されます。- 現在利用可能なサービスの一覧を表示するには、ポリシー → ホストベースのアクセス制御 → HBAC サービス を選択します。
- 現在利用可能なサービスグループの一覧を表示するには、ポリシー → ホストベースのアクセス制御 → HBAC サービスグループ を選択します。
さらにサービスおよびサービスグループを追加するには、「カスタム HBAC サービス用の HBAC サービスエントリーの追加」 および 「HBAC サービスグループの追加」 を参照してください。 - HBAC ルール設定ページで特定の設定を変更すると、ページの最上部にある 保存 が強調表示されます。この場合は、ボタンをクリックして変更を確定します。
コマンドライン: HBAC ルールの作成
- ipa hbacrule-add コマンドを使用して、ルールを追加します。
$ ipa hbacrule-add Rule name:
rule_name
--------------------------- Added HBAC rule "rule_name" --------------------------- Rule name: rule_name Enabled: TRUE - ターゲットユーザーを指定します。
- 指定したユーザーまたはグループにのみ 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 を実行します。
- ターゲットホストを指定します。
- 指定したホストまたはグループにのみ HBAC ルールを適用するには、ipa hbacrule-add-host コマンドを使用します。たとえば、1 つのホストを追加するには、次のコマンドを実行します
$ 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 を実行します。
- ターゲットの 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 を実行します。
- オプション:HBAC ルールが正しく追加されたことを確認します。
- ipa hbacrule-find コマンドを使用して、HBAC ルールが IdM に追加されていることを確認します。
- ipa hbacrule-show を実行して、HBAC ルールのプロパティーを確認します。
詳細は、--help
オプションを指定してコマンドを実行します。
HBAC ルールの例
例31.1 任意のサービスを使用した全ホストへの単一ユーザーアクセスの付与
admin
ユーザーが任意のサービスを使用して、ドメイン内のすべてのシステムにアクセスできるようにするには、新しい HBAC ルールを作成し、以下を設定します。
- ユーザーを
admin
に - (Web UI) ホストを Any hostに。または
--hostcat=all
を ipa hbacrule-add (ルールの追加時) または ipa hbacrule-mod に。 - (Web UI) サービスを Any serviceに。または
--servicecat=all
を ipa hbacrule-add (ルールの追加時) または ipa hbacrule-mod に。
例31.2 特定のサービスのみをホストへのアクセスに使用できるようにする
すべてのユーザーが
sudo
関連のサービスを使用して host.example.com
という名前のホストにアクセスする必要があることを確認するには、新しい HBAC ルールを作成し、以下を設定します。
- (Web UI) ユーザーを Anyoneに。または
--usercat=all
を ipa hbacrule-add (ルールの追加時) または ipa hbacrule-mod に。 host.example.com
へのホスト- HBAC サービスグループを
Sudo
に。これはsudo
と関連サービスのデフォルトグループです。
31.2.2. HBAC ルールのテスト
IdM では、シミュレートシナリオを使用して、さまざまな状況で HBAC 設定をテストできます。シミュレートしたテストランを実行することで、実稼働環境に HBAC ルールをデプロイする前に、設定ミスやセキュリティーリスクを見つけることができます。
重要
プロダクションで使用する前に、カスタム HBAC ルールを常にテストしてください。
IdM では、信頼された Active Directory (AD) ユーザーに対する HBAC ルールの影響については検証されない点に注意してください。AD データは IdM LDAP ディレクトリーに保存されないため、HBAC シナリオをシミュレートする場合、IdM は AD ユーザーのグループメンバーシップを解決できません。
HBAC ルールをテストするには、次のコマンドを使用できます。
- IdM Web UI は、「Web UI - HBAC ルールのテスト」を参照してください。
- コマンドラインは、「コマンドライン: HBAC ルールのテスト」を参照してください。
Web UI - HBAC ルールのテスト
- Policy → Host-Based Access Control → HBAC Test を選択します。
- Who 画面で、テスト実行の ID が割り当てられたユーザーを指定し、次 をクリックします。
図31.3 HBAC テストのターゲットユーザーの指定
- アクセス 画面: ユーザーがアクセスしようとするホストを指定し、次へ をクリックします。
- Via Service 画面で、ユーザーが使用するサービスを指定し、次 をクリックします。
- ルール 画面で、テストする HBAC ルールを選択し、次へ をクリックします。ルールを選択しないと、すべてのルールがテストされます。Include Enabled を選択して、状況が
Enabled
であるすべてのルールでテストを実行します。Include Disabled を選択して、状況がDisabled
であるすべてのルールでテストを実行します。HBAC ルールの状態を表示および変更するには、ポリシー → ホストベースのアクセス制御 → HBAC ルール を選択します。重要テストを複数のルールで実行すると、選択したルールの中から少なくとも 1 つがアクセスを許可していれば成功します。 - Run Test 画面で Run Test をクリックします。
図31.4 HBAC テストの実行
- テスト結果を確認します。
ACCESS DENIED
が表示された場合は、テストでそのユーザーにアクセスが許可されていませんでした。ACCESS GRANTED
が表示された場合は、ホストコンピューターに正常にアクセスできたことを示しています。
図31.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 ルールを指定するには、以下を行います。
--rules
オプションを使用して、1 つ以上の HBAC ルールを定義します。--disable
を使用して、ステータスがdisabled
である HBAC ルールをすべてテストします。
HBAC ルールの現在の状態を表示するには、ipa hbacrule-find コマンドを実行します。
例31.3 コマンドラインからの HBAC ルールのテスト
以下のテストでは、HBAC ルール
rule2
により、sudo
サービスを使用して user1
が example.com
にアクセスできなくなりました。
$ ipa hbactest --user=user1 --host=example.com --service=sudo --rules=rule1
---------------------
Access granted: False
---------------------
Not matched rules: rule1
例31.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 match rules
は、アクセスを阻止するルールを一覧表示します。
31.2.3. HBAC ルールの無効化
HBAC ルールを無効にするとルールが非アクティブになりますが、削除はされません。HBAC ルールを無効にした場合は、後で再度有効にできます。
注記
たとえば、カスタムの HBAC ルールを初めて設定する場合は、HBAC ルールを無効にすると便利です。新しい設定がデフォルトの
low_all
HBAC ルールで上書きされないようにするには、low_all
を無効にする必要があります。
HBAC ルールを無効にするには、次のコマンドを使用できます。
- IdM Web UI は、「Web UI - HBAC ルールの無効化」を参照してください。
- コマンドラインは、「コマンドライン: HBAC ルールの無効化」を参照してください。
Web UI - HBAC ルールの無効化
- Policy → Host-Based Access Control → HBAC Rules を選択します。
- 無効にする HBAC ルールを選択し、Disable をクリックします。
図31.6 allow_all
HBAC ルールの無効化

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