IdM ユーザー、グループ、ホスト、およびアクセス制御ルールの管理
ユーザーとホストの設定、グループでの管理、およびホストベースおよびロールベースのアクセス制御ルールによるアクセスの制御
概要
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 IdM コマンドラインユーティリティーの概要
Identity Management (IdM) コマンドラインユーティリティーの基本的な使用方法を説明します。
前提条件
IdM サーバーをインストールしていて、アクセス可能である。
詳細は、Identity Management のインストール を参照してください。
- IPA コマンドラインインターフェイスを使用する場合は、有効な Kerberos チケットを使用して IdM に対してを認証している。
1.1. IPA コマンドラインインターフェイスとは
IPA コマンドラインインターフェイス (CLI) は、Identity Management (IdM) の管理向けの基本的なコマンドラインインターフェイスです。
新しいユーザーを追加するための ipa user-add
コマンドなど、IdM を管理するための多くのサブコマンドがサポートされています。
IPA CLI では以下を行うことができます。
- ネットワーク内のユーザー、グループ、ホスト、その他のオブジェクトを追加、管理、または削除する。
- 証明書を管理する。
- エントリーを検索する。
- オブジェクトを表示し、オブジェクトリストを表示する。
- アクセス権を設定する。
- 正しいコマンド構文でヘルプを取得する。
1.2. IPA のヘルプとは
IPA ヘルプは、IdM サーバー用の組み込みドキュメントシステムです。
IPA コマンドラインインターフェイス (CLI) は、読み込んだ IdM プラグインモジュールから、利用可能なヘルプトピックを生成します。IPA ヘルプユーティリティーを使用するには、以下が必要です。
- IdM サーバーがインストールされ、実行している。
- 有効な Kerberos チケットで認証されている。
オプションを指定せずに ipa help
コマンドを実行すると、基本的なヘルプの使用方法と、最も一般的なコマンドの例が表示されます。
さまざまな ipa help
のユースケースに対して、次のオプションを使用できます。
$ ipa help [TOPIC | COMMAND | topics | commands]
-
[]
- 括弧は、すべてのパラメーターが任意であることを示しており、ipa help
のみを入力すれば、コマンドが実行できます。 |
- パイプ文字は または の意味になります。したがって、基本的なipa help
コマンドを使用して、TOPIC
、COMMAND
、topics
またはcommands
を指定できます。-
topics
— コマンドipa help topics
を実行して、IPA ヘルプでカバーされているuser
、cert
、server
などのトピックのリストを表示できます。 -
TOPIC
— 大文字の TOPIC は変数になります。したがって、特定のトピック (ipa help user
など) を指定できます。 -
commands
— コマンドipa help commands
を入力して、user-add
、ca-enable
、server-show
などの IPA ヘルプでカバーされているコマンドのリストを表示できます。 -
COMMAND
— 大文字の COMMAND は変数になります。したがって、ipa help user-add
などの特定のコマンドを指定できます。
-
1.3. IPA ヘルプトピックの使用
次の手順では、コマンドラインインターフェイスで IPA ヘルプを使用する方法について説明します。
手順
- 端末を開き、IdM サーバーに接続します。
ヘルプに記載されているトピックのリストを表示するには、
ipa help topics
を実行します。$ ipa help topics
トピックの 1 つを選択し、
ipa help [topic_name]
のパターンに従ってコマンドを作成します。topic_name
文字列の代わりに、前の手順でリストしたトピックの 1 つを追加します。この例では、
user
トピックを使用します。$ ipa help user
IPA ヘルプの出力が長すぎるため、テキスト全体を表示できない場合は、以下の構文を使用します。
$ ipa help user | less
スクロールダウンすれば、ヘルプ全体を表示できます
IPA CLI は、ユーザー
トピックのヘルプページを表示します。概要を読むと、トピックのコマンドを使用するパターンに関して、多くの例を確認できます。
1.4. IPA help コマンドの使用
次の手順では、コマンドラインインターフェイスで IPA help コマンドを作成する方法について説明します。
手順
- 端末を開き、IdM サーバーに接続します。
ヘルプで使用できるコマンドのリストを表示するには、
ipa help commands
コマンドを実行します。$ ipa help commands
コマンドの 1 つを選択し、
ipa help <COMMAND>
のパターンに従ってヘルプコマンドを作成します。<COMMAND>
文字列の代わりに、前の手順でリストしたコマンドの 1 つを追加します。$ ipa help user-add
関連情報
-
ipa
の man ページ
1.5. IPA コマンドの構造
IPA CLI は、以下のタイプのコマンドを区別します。
- 組み込みコマンド — 組み込みコマンドはすべて、IdM サーバーで利用できます。
- プラグインにより提供されたコマンド
IPA コマンドの構造を使用すると、さまざまなタイプのオブジェクトを管理できます。以下に例を示します。
- ユーザー
- ホスト
- DNS レコード
- 証明書
その他にも多数あります。
このようなほとんどのオブジェクトでは、IPA CLI に、以下を行うためのコマンドが含まれます。
-
追加 (
add
) -
修正 (
mod
) -
削除 (
del
) -
検索 (
find
) -
表示 (
show
)
コマンドの構造は次のとおりです。
ipa user-add
、ipa user-mod
、ipa user-del
、ipa user-find
、ipa user-show
ipa host-add
、ipa host-mod
、ipa host-del
、ipa host-find
、ipa host-show
ipa dnsrecord-add
、ipa dnsrecord-mod
、ipa dnsrecord-del
、ipa dnsrecord-find
、ipa dnrecord-show
ipa user-add [options]
でユーザーを作成できます。[options]
は任意です。ipa user-add
コマンドのみを使用する場合、スクリプトは、詳細を 1 つずつ要求します。
既存のオブジェクトを変更するには、オブジェクトを定義する必要があります。そのため、コマンドには、オブジェクト ipa user-mod USER_NAME [options]
も含まれます。
1.6. IPA コマンドを使用した IdM へのユーザーアカウントの追加
以下の手順では、コマンドラインを使用して Identity Management (IdM) データベースに新しいユーザーを追加する方法について説明します。
前提条件
- IdM サーバーにユーザーアカウントを追加するには、管理者権限が必要です。
手順
- 端末を開き、IdM サーバーに接続します。
新しいユーザーを追加するコマンドを入力します。
$ ipa user-add
このコマンドは、ユーザーアカウントの作成に必要な基本データの提供を求めるスクリプトを実行します。
- First name: フィールドに、新規ユーザーの名前を入力して、Enter キーを押します。
- Last name: フィールドに、新規ユーザーの苗字を入力し、Enter キーを押します。
User login [suggested user name]: にユーザー名を入力します。または、提案されたユーザー名を使用する場合は、Enter キーを押します。
ユーザー名は、IdM データベース全体で一意にする必要があります。そのユーザー名がすでに存在するためにエラーが発生した場合は、
ipa user-add
コマンドでそのプロセスを再度実行し、別の一意のユーザー名を使用します。
ユーザー名を追加すると、ユーザーアカウントが IdM データベースに追加され、IPA コマンドラインインターフェイス (CLI) は以下の出力を出力します。
---------------------- Added user "euser" ---------------------- User login: euser First name: Example Last name: User Full name: Example User Display name: Example User Initials: EU Home directory: /home/euser GECOS: Example User Login shell: /bin/sh Principal name: euser@IDM.EXAMPLE.COM Principal alias: euser@IDM.EXAMPLE.COM Email address: euser@idm.example.com UID: 427200006 GID: 427200006 Password: False Member of groups: ipausers Kerberos keys available: False
デフォルトでは、ユーザーアカウントにユーザーパスワードは設定されていません。ユーザーアカウントの作成中にパスワードを追加するには、次の構文で ipa user-add
コマンドを使用します。
$ ipa user-add --first=Example --last=User --password
次に、IPA CLI は、ユーザー名とパスワードを追加または確認するように要求します。
ユーザーがすでに作成されている場合は、ipa user-mod
コマンドでパスワードを追加できます。
関連情報
-
パラメーターの詳細は、
ipa help user-add
コマンドを実行してください。
1.7. IPA コマンドで IdM のユーザーアカウントの変更
各ユーザーアカウントの多くのパラメーターを変更できます。たとえば、新しいパスワードをユーザーに追加できます。
基本的なコマンド構文は user-add
構文とは異なります。たとえば、パスワードを追加するなど、変更を実行する既存のユーザーアカウントを定義する必要があるためです。
前提条件
- ユーザーアカウントを変更するには、管理者権限が必要です。
手順
- 端末を開き、IdM サーバーに接続します。
ipa user-mod
コマンドを入力し、変更するユーザーと、パスワードを追加するための--password
などのオプションを指定します。$ ipa user-mod euser --password
このコマンドは、新しいパスワードを追加できるスクリプトを実行します。
- 新しいパスワードを入力し、Enter キーを押します。
IPA CLI は次の出力を出力します。
---------------------- Modified user "euser" ---------------------- User login: euser First name: Example Last name: User Home directory: /home/euser Principal name: euser@IDM.EXAMPLE.COM Principal alias: euser@IDM.EXAMPLE.COM Email address: euser@idm.example.com UID: 427200006 GID: 427200006 Password: True Member of groups: ipausers Kerberos keys available: True
これでユーザーパスワードがアカウントに対して設定され、ユーザーが IdM にログインできます。
関連情報
-
パラメーターの詳細は、
ipa help user-mod
コマンドを実行してください。
1.8. IdM ユーティリティーに値をリスト形式で提供する方法
Identity Management (IdM) は、多値属性の値をリスト形式で保存します。
IdM は、多値リストを提供する次の方法に対応します。
同じコマンド呼び出しで、同じコマンドライン引数を複数回指定します。
$ ipa permission-add --right=read --permissions=write --permissions=delete ...
または、リストを中括弧で囲むこともできます。この場合、シェルはデプロイメントを実行します。
$ ipa permission-add --right={read,write,delete} ...
上記の例では、パーミッションをオブジェクトに追加する permission-add
コマンドを表示します。この例では、このオブジェクトについては触れていません。…
の代わりに、権限を追加するオブジェクトーを追加する必要があります。
このような多値属性をコマンド行から更新すると、IdM は、前の値リストを新しいリストで完全に上書きします。したがって、多値属性を更新するときは、追加する 1 つの値だけでなく、新しいリスト全体を指定する必要があります。
たとえば、上記のコマンドでは、パーミッションのリストには、読み取り、書き込み、および削除が含まれます。permission-mod
コマンドでリストを更新する場合は、すべての値を追加する必要があります。すべての値を追加しないと、追加されていない値は削除されます。
例 1: - ipa permission-mod
コマンドは、以前に追加した権限をすべて更新します。
$ ipa permission-mod --right=read --right=write --right=delete ...
または
$ ipa permission-mod --right={read,write,delete} ...
例 2 - ipa permission-mod
コマンドは、コマンドに含まれないため、--right=delete
引数を削除します。
$ ipa permission-mod --right=read --right=write ...
または
$ ipa permission-mod --right={read,write} ...
1.9. IdM ユーティリティーで特殊文字を使用する方法
特殊文字を含むコマンドライン引数を ipa
コマンドに渡す場合は、この文字をバックスラッシュ (\) でエスケープします。たとえば、一般的な特殊文字には、山かっこ (< および >)、アンパサンド (&)、アスタリスク (*)、またはバーティカルバー (|) があります。
たとえば、アスタリスク (*) をエスケープするには、次のコマンドを実行します。
$ ipa certprofile-show certificate_profile --out=exported\*profile.cfg
シェルが特殊文字を正しく解析できないため、エスケープしていない特殊文字をコマンドに含めると、予想通りに機能しなくなります。
第2章 コマンドラインでユーザーアカウントの管理
IdM (Identity Management) のユーザーライフサイクルには、次のようないくつかの段階があります。
- ユーザーアカウントを作成する
- ステージユーザーアカウントをアクティベートする
- ユーザーアカウントを保存する
- アクティブユーザー、ステージユーザー、または保存済みユーザーのアカウントを削除する
- 保存済みユーザーアカウントを復元する
2.1. ユーザーのライフサイクル
Identity Management (IdM) は、次の 3 つのユーザーアカウント状態に対応します
- ステージ ユーザーは認証できません。これは初期状態です。アクティブユーザーに必要なユーザーアカウントプロパティーをすべて設定できるわけではありません (例: グループメンバーシップ)。
- アクティブ ユーザーは認証が可能です。必要なユーザーアカウントプロパティーはすべて、この状態で設定する必要があります。
- 保存済み ユーザーは、以前にアクティブであったユーザーで、現在は非アクティブであるとみなされており、IdM への認証ができません。保存済みユーザーには、アクティブユーザーのときに有効になっていたアカウントプロパティーの大部分が保持されていますが、ユーザーグループからは除外されています。
IdM データベースからユーザーエントリーを完全に削除できます。
削除したユーザーアカウントを復元することはできません。ユーザーアカウントを削除すると、そのアカウントに関連する情報がすべて完全に失われます。
新規管理者は、デフォルトの管理ユーザーなど、管理者権限を持つユーザーのみが作成できます。すべての管理者アカウントを誤って削除した場合は、Directory Manager が、Directory Server に新しい管理者を手動で作成する必要があります。
admin
ユーザーを削除しないでください。admin
は IdM で必要な事前定義ユーザーであるため、この操作では特定のコマンドで問題が生じます。別の admin
ユーザーを定義して使用する場合は、管理者権限を少なくとも 1 つのユーザーに付与してから、ipa user-disable admin
を使用して、事前定義された admin ユーザーを無効にします。
ローカルユーザーを IdM に追加しないでください。Name Service Switch (NSS) は、ローカルユーザーとグループを解決する前に、IdM ユーザーとグループを常に解決します。つまり、たとえば IdM グループのメンバーシップは、ローカルユーザーでは機能しません。
2.2. コマンドラインを使用したユーザーの追加
次のユーザーを追加できます。
- アクティブ - ユーザーがアクティブに使用できるユーザーアカウント
- ステージ - ユーザーは、このアカウントを使用できません。新しいユーザーアカウントを準備する場合は、ステージユーザーを作成します。ユーザーがアカウントを使用する準備ができると、アクティベートできます。
以下の手順では、ipa user-add
コマンドを使用して、アクティブなユーザーを IdM サーバーに追加する方法を説明します。
同様に、ipa stageuser-add
コマンドでステージユーザーアカウントを作成できます。
IdM は、新しいユーザーアカウントに一意のユーザー ID (UID) を自動的に割り当てます。ipa user-add
コマンドで --uid=INT
オプションを使用すると、UID を手動で割り当てることができます。ただし、UID 番号が一意であるかどうかは、サーバーによって検証されません。そのため、複数のユーザーエントリーに同じ UID 番号が割り当てられる可能性があります。--gidnumber=INT
オプションを使用してユーザーアカウントに GID を手動で割り当てる場合も、ユーザーのプライベートグループ ID (GID) で同様の問題が発生する可能性があります。同じ ID を持つユーザーエントリーが複数あるかどうかを確認するには、ipa user-find --uid=<uid>
または ipa user-find --gidnumber=<gidnumber>
と入力します。
Red Hat は、複数のエントリーに同じ UID または GID を割り当てることがないようにすることを推奨します。ID が重複するオブジェクトがある、セキュリティー識別子 (SID) が正しく生成されません。SID は、IdM と Active Directory 間の信頼と、Kerberos 認証の正常な動作に不可欠です。
前提条件
- IdM、またはユーザー管理者ロールを管理する管理者権限
- Kerberos チケットを取得している。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
- 端末を開き、IdM サーバーに接続します。
ユーザーのログイン、ユーザーの名前、および名字を追加します。メールアドレスを追加することもできます。
$ ipa user-add user_login --first=first_name --last=last_name --email=email_address
IdM は、以下の正規表現で説明できるユーザー名をサポートします。
[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?
注記ユーザー名の末尾がドル記号 ($) で終わる場合は、Samba 3.x マシンでのサポートが有効になります。
大文字を含むユーザー名を追加すると、IdM が名前を保存する際に自動的に小文字に変換されます。したがって、IdM にログインする場合は、常にユーザー名を小文字で入力する必要があります。また、user と User など、大文字と小文字のみが異なるユーザー名を追加することはできません。
ユーザー名のデフォルトの長さは、最大 32 文字です。これを変更するには、
ipa config-mod --maxusername
コマンドを使用します。たとえば、ユーザー名の最大長を 64 文字にするには、次のコマンドを実行します。$ ipa config-mod --maxusername=64 Maximum username length: 64 ...
ipa user-add
コマンドには、多くのパラメーターが含まれます。リストを表示するには、ipa help コマンドを使用します。$ ipa help user-add
ipa help
コマンドの詳細は、IPA のヘルプとは を参照してください。
IdM ユーザーアカウントをリスト表示して、新規ユーザーアカウントが正常に作成されたかどうかを確認できます。
$ ipa user-find
このコマンドは、すべてのユーザーアカウントと、その詳細をリストで表示します。
2.3. コマンドラインでユーザーのアクティベート
ステージからアクティブに移行してユーザーアカウントをアクティベートするには、ipa stageuser-activate
コマンドを使用します。
前提条件
- IdM、またはユーザー管理者ロールを管理する管理者権限
- Kerberos チケットを取得している。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
- 端末を開き、IdM サーバーに接続します。
次のコマンドで、ユーザーアカウントをアクティベートします。
$ ipa stageuser-activate user_login ------------------------- Stage user user_login activated ------------------------- ...
IdM ユーザーアカウントをリスト表示して、新規ユーザーアカウントが正常に作成されたかどうかを確認できます。
$ ipa user-find
このコマンドは、すべてのユーザーアカウントと、その詳細をリストで表示します。
2.4. コマンドラインでユーザーの保存
ユーザーアカウントを削除しても、保存しておくことはできますが、後で復元するオプションはそのままにしておきます。ユーザーアカウントを保持するには、ipa user-del
コマンドまたは ipa stageuser-del
コマンドで、--preserve
オプションを使用します。
前提条件
- IdM、またはユーザー管理者ロールを管理する管理者権限
- Kerberos チケットを取得している。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
- 端末を開き、IdM サーバーに接続します。
次のコマンドで、ユーザーアカウントを保存します。
$ ipa user-del --preserve user_login -------------------- Deleted user "user_login" --------------------
注記ユーザーアカウントが削除されたという出力が表示されたにもかかわらず、アカウントは保持されています。
2.5. コマンドラインを使用したユーザーの削除
IdM (Identity Management) を使用すると、ユーザーを完全に削除できます。以下を削除できます。
-
アクティブユーザーの場合 -
ipa user-del
-
ステージユーザーの場合 -
ipa stageuser-del
-
保存済みユーザーの場合 -
ipa user-del
複数のユーザーを削除するときは、--continue
オプションを使用して、エラーに関係なくコマンドを続行します。成功および失敗した操作の概要は、コマンドが完了したときに標準出力ストリーム (stdout
) に出力されます。
$ ipa user-del --continue user1 user2 user3
--continue
を使用しないと、コマンドはエラーが発生するまでユーザーの削除を続行し、停止と終了を行います。
前提条件
- IdM、またはユーザー管理者ロールを管理する管理者権限
- Kerberos チケットを取得している。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
- 端末を開き、IdM サーバーに接続します。
次のコマンドで、ユーザーアカウントを削除します。
$ ipa user-del user_login -------------------- Deleted user "user_login" --------------------
ユーザーアカウントは、IdM から完全に削除されました。
2.6. コマンドラインでユーザーの復元
保存済みユーザーは、以下のステータスに復元できます。
-
アクティブユーザー -
ipa user-undel
-
ステージユーザー -
ipa user-stage
ユーザーアカウントを復元しても、そのアカウントの以前の属性がすべて復元されるわけではありません。たとえば、ユーザーのパスワードが復元されず、再設定する必要があります。
前提条件
- IdM、またはユーザー管理者ロールを管理する管理者権限
- Kerberos チケットを取得している。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
- 端末を開き、IdM サーバーに接続します。
次のコマンドで、ユーザーアカウントをアクティベートします。
$ ipa user-undel user_login ------------------------------ Undeleted user account "user_login" ------------------------------
または、ユーザーアカウントをステージユーザーとして復元することもできます。
$ ipa user-stage user_login ------------------------------ Staged user account "user_login" ------------------------------
検証
IdM ユーザーアカウントをリスト表示して、新規ユーザーアカウントが正常に作成されたかどうかを確認できます。
$ ipa user-find
このコマンドは、すべてのユーザーアカウントと、その詳細をリストで表示します。
第3章 IdM Web UI でユーザーアカウントの管理
Identity Management (IdM) は、さまざまなユーザーのライフサイクル状況の管理に役立つ 複数のステージ を提供します。
- ユーザーアカウントの作成
従業員が新しい会社で働き始める前に ステージユーザーアカウントを作成 し、従業員の初出勤日に合わせてアカウントをアクティベートできるように準備します。
この手順を省略し、アクティブなユーザーアカウントを直接作成できるようにします。この手順は、ステージユーザーアカウントの作成に類似しています。
- ユーザーアカウントをアクティベートする
- 従業員の最初の就業日に アカウントをアクティベート します。
- ユーザーアカウントを無効にする
- ユーザーが数か月間育児休暇を取得する場合は、一時的にアカウントを無効にする 必要があります。
- ユーザーアカウントを有効にする
- ユーザーが戻ってきたら、アカウントを再度有効にする 必要があります。
- ユーザーアカウントを保存する
- ユーザーが会社を辞める場合は、しばらくしてから会社に戻ってくる可能性を考慮して、アカウントを復元することができる状態で削除する 必要があります。
- ユーザーアカウントを復元する
- 2 年後にユーザーが復職する場合は、保存済みアカウントを復元 する必要があります。
- ユーザーアカウントを削除する
- 従業員が解雇された場合は、バックアップなしで アカウントを削除します。
3.1. ユーザーのライフサイクル
Identity Management (IdM) は、次の 3 つのユーザーアカウント状態に対応します
- ステージ ユーザーは認証できません。これは初期状態です。アクティブユーザーに必要なユーザーアカウントプロパティーをすべて設定できるわけではありません (例: グループメンバーシップ)。
- アクティブ ユーザーは認証が可能です。必要なユーザーアカウントプロパティーはすべて、この状態で設定する必要があります。
- 保存済み ユーザーは、以前にアクティブであったユーザーで、現在は非アクティブであるとみなされており、IdM への認証ができません。保存済みユーザーには、アクティブユーザーのときに有効になっていたアカウントプロパティーの大部分が保持されていますが、ユーザーグループからは除外されています。
IdM データベースからユーザーエントリーを完全に削除できます。
削除したユーザーアカウントを復元することはできません。ユーザーアカウントを削除すると、そのアカウントに関連する情報がすべて完全に失われます。
新規管理者は、デフォルトの管理ユーザーなど、管理者権限を持つユーザーのみが作成できます。すべての管理者アカウントを誤って削除した場合は、Directory Manager が、Directory Server に新しい管理者を手動で作成する必要があります。
admin
ユーザーを削除しないでください。admin
は IdM で必要な事前定義ユーザーであるため、この操作では特定のコマンドで問題が生じます。別の admin
ユーザーを定義して使用する場合は、管理者権限を少なくとも 1 つのユーザーに付与してから、ipa user-disable admin
を使用して、事前定義された admin ユーザーを無効にします。
ローカルユーザーを IdM に追加しないでください。Name Service Switch (NSS) は、ローカルユーザーとグループを解決する前に、IdM ユーザーとグループを常に解決します。つまり、たとえば IdM グループのメンバーシップは、ローカルユーザーでは機能しません。
3.2. Web UI でユーザーの追加
通常は、新入社員が働き始める前に、新しいユーザーアカウントを作成する必要があります。このようなステージアカウントにはアクセスできず、後でアクティベートする必要があります。
または、直接、アクティブなユーザーアカウントを作成できます。アクティブユーザーを追加する場合は、以下の手順に従って、アクティブユーザー タブでユーザーアカウントを追加します。
前提条件
- IdM、またはユーザー管理者ロールを管理する管理者権限
手順
- IdM Web UI にログインします。
Users → Stage Users タブに移動します。
または、Users → Active users でユーザーアカウントを追加することもできますが、アカウントにユーザーグループを追加することはできません。
- + Add アイコンをクリックします。
- Add stage user ダイアログボックスで、新しいユーザーの First name と Last name を入力します。
オプション: User login フィールドにログイン名を追加します。
空のままにすると、IdM サーバーは、名字の前に、名前の最初の 1 文字が追加された形式で、ログイン名を作成します。ログイン名には、32 文字まで使用できます。
- オプション: GID ドロップダウンメニューで、ユーザーを含めるグループを選択します。
- オプション: Password フィールドと Verify password フィールドにパスワードを入力して確定し、両方が一致していることを確認します。
Add ボタンをクリックします。
この時点では、ステージユーザー テーブルでユーザーアカウントを確認できます。
ユーザー名をクリックすると、電話番号、住所、職業の追加などの詳細設定を編集できます。
IdM は、新しいユーザーアカウントに一意のユーザー ID (UID) を自動的に割り当てます。管理者は、UID を手動で割り当てるだけでなく、既存の UID を変更することもできます。ただし、新しい UID 番号が一意であるかどうかは、サーバーによって検証されません。そのため、複数のユーザーエントリーに同じ UID 番号が割り当てられる可能性があります。ユーザーアカウントに GID (ユーザープライベートグループ ID) を手動で割り当てる場合も、ユーザープライベートグループ ID (GID) で同様の問題が発生する可能性があります。IdM CLI で ipa user-find --uid=<uid>
または ipa user-find --gidnumber=<gidnumber>
コマンドを使用すると、同じ ID を持つユーザーエントリーが複数あるかどうかを確認できます。
Red Hat は、複数のエントリーに同じ UID または GID を割り当てることがないようにすることを推奨します。ID が重複するオブジェクトがある、セキュリティー識別子 (SID) が正しく生成されません。SID は、IdM と Active Directory 間の信頼と、Kerberos 認証の正常な動作に不可欠です。
3.3. IdM Web UI でステージユーザーのアクティベート
ユーザーが IdM にログインする前、およびユーザーを IdM グループに追加する前に、この手順に従ってステージユーザーアカウントをアクティベートする必要があります。
前提条件
- IdM Web UI、またはユーザー管理者ロールを管理する管理者権限
- IdM に、1 つ以上のステージユーザーアカウント
手順
- IdM Web UI にログインします。
- ユーザー → ステージユーザー タブに移動します。
- 有効にするユーザーアカウントのチェックボックスをクリックします。
アクティベート ボタンをクリックします。
- Confirmation ダイアログボックスで OK をクリックします。
アクティベーションに成功したら、IdM Web UI により、ユーザーがアクティベートされ、ユーザーアカウントが アクティブユーザー に移動したことを示す緑色の確認が表示されます。このアカウントはアクティブで、ユーザーは IdM ドメインと IdM Web UI に対して認証できます。ユーザーは、初回ログイン時にパスワードを変更するように求められます。
このステージで、アクティブなユーザーアカウントをユーザーグループに追加できます。
3.4. Web UI でのユーザーアカウントの無効化
アクティブなユーザーアカウントを無効にできます。ユーザーアカウントを無効にすると、ユーザーアカウントはアカウントを非アクティブにできるため、そのユーザーアカウントを使用して Kerberos などの IdM サービスを認証および使用したり、タスクを実行することができません。
無効にしたユーザーアカウントはそのまま IdM に残り、関連する情報は何も変更しません。保存済みユーザーアカウントとは異なり、無効にしたユーザーアカウントはアクティブな状態のままとなり、ユーザーグループのメンバーになります。
ユーザーアカウントを無効にした後、既存の接続はユーザーの Kerberos TGT や他のチケットの有効期限が切れるまで有効です。チケットの期限が切れると、ユーザーが更新できなくなります。
前提条件
- IdM Web UI、またはユーザー管理者ロールを管理する管理者権限
手順
- IdM Web UI にログインします。
- ユーザー → アクティブユーザー タブに移動します。
- 無効にするユーザーアカウントのチェックボックスをクリックします。
無効 ボタンをクリックします。
- 確認 ダイアログボックスで、OK ボタンをクリックします。
無効化の手順に成功した場合は、アクティブユーザー テーブルの状態の列で確認できます。
3.5. Web UI でユーザーアカウントの有効化
IdM を使用して、無効にしたアクティブなユーザーアカウントを再度有効にできます。ユーザーアカウントを有効にすると、無効になったアカウントが有効になります。
前提条件
- IdM Web UI、またはユーザー管理者ロールを管理する管理者権限
手順
- IdM Web UI にログインします。
- ユーザー → アクティブユーザー タブに移動します。
- 有効にするユーザーアカウントのチェックボックスをクリックします。
有効 ボタンをクリックします。
- 確認 ダイアログボックスで、OK ボタンをクリックします。
変更に成功すると、アクティブユーザー テーブルの状態の列で確認できます。
3.6. IdM Web UI でアクティブなユーザーの保存
ユーザーアカウントを保存すると、アクティブユーザー タブからアカウントを削除した状態で、IdM でアカウントを維持できます。
従業員が退職する場合は、ユーザーアカウントを保存します。ユーザーアカウントを数週間または数か月間 (たとえば育児休暇) 無効にする場合は、ユーザーアカウントを無効にします。詳細は、Web UI でのユーザーアカウントの無効化 を参照してください。保存済みアカウントはアクティブではないため、そのユーザーが内部ネットワークにはアクセスできないものの、すべてのデータが含まれる状態でデータベース内に残ります。
復元したアカウントをアクティブモードに戻すことができます。
保存済みユーザーのリストは、以前のユーザーアカウントの履歴を提供します。
前提条件
- IdM (Identity Management) Web UI、またはユーザー管理者ロールを管理する管理者権限
手順
- IdM Web UI にログインします。
- ユーザー → アクティブユーザー タブに移動します。
- 保存するユーザーアカウントのチェックボックスをクリックします。
削除 ボタンをクリックします。
- ユーザーの削除 ダイアログボックスで、削除モード ラジオボタンを、保存 に切り替えます。
削除 ボタンをクリックします。
これにより、そのユーザーアカウントは、保存済みユーザー に移動します。
保存済みユーザーを復元する必要がある場合は、IdM Web UI でユーザーの復元 を参照してください。
3.7. IdM Web UI でユーザーの復元
IdM (Identity Management) を使用すると、保存済みユーザーアカウントをアクティブな状態で復元できます。保存済みユーザーをアクティブなユーザーまたはステージユーザーに復元できます。
前提条件
- IdM Web UI、またはユーザー管理者ロールを管理する管理者権限
手順
- IdM Web UI にログインします。
- ユーザー → 保存済みユーザー タブに移動します。
- 復元するユーザーアカウントのチェックボックスをクリックします。
復元 ボタンをクリックします。
- 確認 ダイアログボックスで、OK ボタンをクリックします。
IdM Web UI は、緑色の確認を表示し、ユーザーアカウントを アクティブユーザー タブに移動します。
3.8. IdM Web UI でユーザーの削除
ユーザーの削除は元に戻せない操作であり、グループメンバーシップやパスワードなど、ユーザーアカウントが IdM データベースから完全に削除されます。ユーザーの外部設定 (システムアカウントやホームディレクトリーなど) は削除されませんが、IdM からはアクセスできなくなります。
以下を削除できます。
アクティブなユーザー - IdM Web UI では、以下のオプションを利用できます。
ユーザーを一時的に保存する
詳細は IdM Web UI でアクティブなユーザーの保存 を参照してください。
- 完全に削除する
- ステージユーザー - ステージユーザーを完全に削除できます。
- 保存済みユーザー - 保存済みユーザーを完全に削除できます。
以下の手順では、アクティブなユーザーの削除を説明します。以下のタブでも同じようにユーザーアカウントを削除できます。
- ステージユーザー タブ
- 保存済みユーザー タブ
前提条件
- IdM Web UI、またはユーザー管理者ロールを管理する管理者権限
手順
- IdM Web UI にログインします。
ユーザー → アクティブユーザー タブに移動します。
ユーザー → ステージユーザー または ユーザー → 保存済みユーザー でも、ユーザーアカウントを削除できます。
- 削除 アイコンをクリックします。
- ユーザーの削除 ダイアログボックスで、モードの削除 ラジオボタンを、削除 に切り替えます。
- 削除 ボタンをクリックします。
ユーザーアカウントが、IdM から完全に削除されました。
第4章 Ansible Playbook を使用したユーザーアカウントの管理
Ansible Playbook を使用して IdM のユーザーを管理できます。ユーザーのライフサイクル を示した後、本章では以下の操作に Ansible Playbook を使用する方法を説明します。
-
YML
ファイルに直接リストされている ユーザーを 1 つ存在させる 手順 -
YML
ファイルに直接リストされている ユーザーを複数存在させる 手順 -
YML
ファイルから参照されるJSON
ファイルにリストされている ユーザーを複数存在させる 手順 -
YML
ファイルに直接リストされている ユーザーがないことを確認 します。
4.1. ユーザーのライフサイクル
Identity Management (IdM) は、次の 3 つのユーザーアカウント状態に対応します
- ステージ ユーザーは認証できません。これは初期状態です。アクティブユーザーに必要なユーザーアカウントプロパティーをすべて設定できるわけではありません (例: グループメンバーシップ)。
- アクティブ ユーザーは認証が可能です。必要なユーザーアカウントプロパティーはすべて、この状態で設定する必要があります。
- 保存済み ユーザーは、以前にアクティブであったユーザーで、現在は非アクティブであるとみなされており、IdM への認証ができません。保存済みユーザーには、アクティブユーザーのときに有効になっていたアカウントプロパティーの大部分が保持されていますが、ユーザーグループからは除外されています。
IdM データベースからユーザーエントリーを完全に削除できます。
削除したユーザーアカウントを復元することはできません。ユーザーアカウントを削除すると、そのアカウントに関連する情報がすべて完全に失われます。
新規管理者は、デフォルトの管理ユーザーなど、管理者権限を持つユーザーのみが作成できます。すべての管理者アカウントを誤って削除した場合は、Directory Manager が、Directory Server に新しい管理者を手動で作成する必要があります。
admin
ユーザーを削除しないでください。admin
は IdM で必要な事前定義ユーザーであるため、この操作では特定のコマンドで問題が生じます。別の admin
ユーザーを定義して使用する場合は、管理者権限を少なくとも 1 つのユーザーに付与してから、ipa user-disable admin
を使用して、事前定義された admin ユーザーを無効にします。
ローカルユーザーを IdM に追加しないでください。Name Service Switch (NSS) は、ローカルユーザーとグループを解決する前に、IdM ユーザーとグループを常に解決します。つまり、たとえば IdM グループのメンバーシップは、ローカルユーザーでは機能しません。
4.2. Ansible Playbook を使用して IdM ユーザーを存在させる手順
以下の手順では、Ansible Playbook を使用して IdM にユーザーを 1 つ存在させる方法を説明します。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
IdM に存在させるユーザーのデータを指定して Ansible Playbook ファイルを作成します。この手順は、
/usr/share/doc/ansible-freeipa/playbooks/user/add-user.yml
ファイルのサンプルをコピーして変更し、簡素化できます。たとえば、idm_user という名前のユーザーを作成し、 Password123 をユーザーパスワードとして追加するには、次のコマンドを実行します。--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create user idm_user ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: idm_user first: Alice last: Acme uid: 1000111 gid: 10011 phone: "+555123457" email: idm_user@acme.com passwordexpiration: "2023-01-19 23:59:59" password: "Password123" update_password: on_create
ユーザーを追加するには、以下のオプションを使用する必要があります。
- 名前: ログイン名
- first: 名前 (名) の文字列
- last: 名前 (姓) の文字列
利用可能なユーザーオプションの完全なリストは、
/usr/share/doc/ansible-freeipa/README-user.md
Markdown ファイルを参照してください。注記update_password: on_create
オプションを使用する場合には、Ansible はユーザー作成時にのみユーザーパスワードを作成します。パスワードを指定してユーザーが作成されている場合には、Ansible では新しいパスワードは生成されません。Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-IdM-user.yml
検証
ipa user-show
コマンドを使用して、新しいユーザーアカウントが IdM に存在するかどうかを確認できます。admin として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
admin の Kerberos チケットを要求します。
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
idm_user に関する情報を要求します。
$ ipa user-show idm_user User login: idm_user First name: Alice Last name: Acme ....
idm_userという名前のユーザー が IdM に存在しています。
4.3. Ansible Playbook を使用して IdM ユーザーを複数存在させる手順
以下の手順では、Ansible Playbook を使用して IdM にユーザーを複数存在させる方法を説明します。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
IdM に存在させるユーザーのデータを指定して Ansible Playbook ファイルを作成します。この手順は、
/usr/share/doc/ansible-freeipa/playbooks/user/ensure-users-present.yml
ファイルのサンプルをコピーして変更し、簡素化できます。たとえば、ユーザー idm_user_1、idm_user_2、idm_user_3 を作成し、idm_user_1 のパスワードを Password123 として追加します。--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create user idm_users ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: - name: idm_user_1 first: Alice last: Acme uid: 10001 gid: 10011 phone: "+555123457" email: idm_user@acme.com passwordexpiration: "2023-01-19 23:59:59" password: "Password123" - name: idm_user_2 first: Bob last: Acme uid: 100011 gid: 10011 - name: idm_user_3 first: Eve last: Acme uid: 1000111 gid: 10011
注記update_password: on_create オプションを指定しないと、Ansible は Playbook が実行されるたびにユーザーパスワードを再設定します。最後に Playbook が実行されてからユーザーがパスワードを変更した場合には、Ansible はパスワードを再設定します。
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-users.yml
検証
ipa user-show
コマンドを使用して、ユーザーアカウントが IdM に存在するかどうかを確認できます。管理者として
ipaserver
にログインします。$ ssh administrator@server.idm.example.com Password: [admin@server /]$
idm_user_1 に関する情報を表示します。
$ ipa user-show idm_user_1 User login: idm_user_1 First name: Alice Last name: Acme Password: True ....
idm_user_1 という名前のユーザーが IdM に存在しています。
4.4. Ansible Playbook を使用して JSON ファイルに指定してある複数の IdM ユーザーを存在させる手順
以下の手順では、Ansible Playbook を使用して IdM に複数のユーザーを存在させる方法を説明します。ユーザーは JSON
ファイルに保存されます。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
必要なタスクが含まれる Ansible Playbook ファイルを作成します。存在させるユーザーのデータが指定された
JSON
ファイルを参照します。この手順は、/usr/share/doc/ansible-freeipa/ensure-users-present-ymlfile.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Ensure users' presence hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Include users.json include_vars: file: users.json - name: Users present ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: "{{ users }}"
users.json
ファイルを作成し、IdM ユーザーを追加します。この手順を簡素化するには、/usr/share/doc/ansible-freeipa/playbooks/user/users.json
ファイルのサンプルをコピーして変更できます。たとえば、ユーザー idm_user_1、idm_user_2、idm_user_3 を作成し、idm_user_1 のパスワードを Password123 として追加します。{ "users": [ { "name": "idm_user_1", "first": "Alice", "last": "Acme", "password": "Password123" }, { "name": "idm_user_2", "first": "Bob", "last": "Acme" }, { "name": "idm_user_3", "first": "Eve", "last": "Acme" } ] }
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-users-present-jsonfile.yml
検証
ipa user-show
コマンドを使用して、ユーザーアカウントが IdM に存在するかどうかを確認できます。管理者として
ipaserver
にログインします。$ ssh administrator@server.idm.example.com Password: [admin@server /]$
idm_user_1 に関する情報を表示します。
$ ipa user-show idm_user_1 User login: idm_user_1 First name: Alice Last name: Acme Password: True ....
idm_user_1 という名前のユーザーが IdM に存在しています。
4.5. Ansible Playbook を使用してユーザーが存在しないことを確認する手順
以下の手順では、Ansible Playbook を使用して、特定のユーザーが IdM に存在しないことを確認する方法を説明します。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
IdM に存在させないユーザーを指定して Ansible Playbook ファイルを作成します。この手順は、
/usr/share/doc/ansible-freeipa/playbooks/user/ensure-users-present.yml
ファイルのサンプルをコピーして変更し、簡素化できます。たとえば、ユーザー idm_user_1、idm_user_2、idm_user_3 を削除するには、次のコマンドを実行します。--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete users idm_user_1, idm_user_2, idm_user_3 ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: - name: idm_user_1 - name: idm_user_2 - name: idm_user_3 state: absent
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/delete-users.yml
検証
ipa user-show
コマンドを使用して、ユーザーアカウントが IdM に存在しないことを確認できます。
管理者として
ipaserver
にログインします。$ ssh administrator@server.idm.example.com Password: [admin@server /]$
idm_user_1 に関する要求情報:
$ ipa user-show idm_user_1 ipa: ERROR: idm_user_1: user not found
idm_user_1 という名前のユーザーは IdM に存在しません。
4.6. 関連情報
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-user.md
Markdown ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/user
ディレクトリーのサンプルの Ansible Playbook を参照してください。
第5章 IdM でのユーザーパスワードの管理
5.1. IdM ユーザーパスワードは誰がどのように変更するのか
他のユーザーのパスワードを変更するパーミッションのない通常ユーザーは、独自の個人パスワードのみを変更できます。新しいパスワードは、そのユーザーがメンバーとなっているグループに適用される IdM パスワードポリシーに合致する必要があります。パスワードポリシーの設定方法の詳細は、IdM パスワードポリシーの定義 を参照してください。
管理者およびパスワード変更権限を持つユーザーは、新しいユーザーに初期パスワードを設定し、既存のユーザーのパスワードをリセットできます。これらのパスワードには、以下が該当します。
- IdM パスワードポリシーを満たす必要はありません。
- 最初のログインに成功したら失効します。このような場合、IdM はユーザーが期限切れのパスワードを直ちに変更するよう要求します。この動作を無効にするには、次回のログイン時にパスワード変更を求められることなく、IdM でパスワードリセットを有効にする を参照してください。
LDAP Directory Manager(DM) ユーザーは、LDAP ツールを使用してユーザーパスワードを変更できます。新しいパスワードは、任意の IdM パスワードポリシーを上書きできます。DM によって設定されたパスワードは最初のログイン後に有効期限が切れません。
5.2. IdM Web UI でのユーザーパスワードの変更
Identity Management (IdM) ユーザーは、IdM Web UI でユーザーパスワードを変更できます。
前提条件
- IdM Web UI にログインしている。
手順
右上隅の User name → Change password をクリックします。
図5.1 パスワードのリセット
- 現在のパスワードおよび新しいパスワードを入力します。
5.3. IdM Web UI での別のユーザーのパスワードのリセット
Identity Management (IdM) の管理ユーザーは、IdM Web UI で他のユーザーのパスワードを変更できます。
前提条件
- 管理ユーザーとして IdM Web UI にログインしている。
手順
- → を選択します。
- 編集するユーザー名をクリックします。
図5.2 パスワードのリセット
新しいパスワードを入力し、
をクリックします。図5.3 新しいパスワードの確認
5.4. Directory Manager ユーザーパスワードのリセット
Identity Management (IdM) Directory Manager のパスワードを紛失した場合は、リセットできます。
前提条件
-
IdM サーバーに
root
にアクセスできる。
手順
pwdhash
コマンドを使用して、新しいパスワードハッシュを生成します。以下に例を示します。# pwdhash -D /etc/dirsrv/slapd-IDM-EXAMPLE-COM password {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW...
Directory Server 設定へのパスを指定すると、
nsslapd-rootpwstoragescheme
属性に設定されたパスワードストレージスキームが自動的に使用され、新しいパスワードを暗号化します。トポロジー内のすべての IdM サーバーで、以下の手順を実行します。
サーバーにインストールされている IdM サービスをすべて停止します。
# ipactl stop
/etc/dirsrv/IDM-EXAMPLE-COM/dse.ldif
ファイルーを編集し、nsslapd-rootpw
属性を、pwdhash
コマンドで生成された値に設定します。nsslapd-rootpw: {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW...
- サーバーにインストールされている IdM サービスをすべて起動します。
# ipactl start
5.5. IdM CLI でのユーザーパスワードの変更または別のユーザーのパスワードのリセット
Identity Management (IdM) コマンドラインインターフェイス (CLI) を使用して、ユーザーパスワードを変更できます。管理ユーザーの場合は、CLI を使用して別のユーザーのパスワードをリセットできます。
前提条件
- IdM ユーザーの TGT (Ticket-Granting Ticket) を取得している。
- 別のユーザーのパスワードをリセットする場合は、IdM の管理ユーザーの TGT を取得している必要がある。
手順
ユーザーの名前と
--password
オプションを指定して、ipa user-mod
コマンドを入力します。このコマンドにより、新しいパスワードの入力が求められます。$ ipa user-mod idm_user --password Password: Enter Password again to verify: -------------------- Modified user "idm_user" -------------------- ...
ipa user-mod
の代わりに ipa passwd
idm_user を使用することもできます。
5.6. 次回のログイン時にパスワード変更を求められることなく、IdM でパスワードリセットを有効にする
デフォルトでは、管理者が別のユーザーのパスワードをリセットすると、初回のログインに成功したらパスワードが期限切れになります。IdM Directory Manager では、各 IdM 管理者に次の特権を指定できます。
- 初回ログイン後にパスワードの変更をユーザーに要求することなく、パスワードの変更操作を行うことができます。
- 強度や履歴の強制が適用されないようにパスワードポリシーをバイパスします。
パスワードポリシーをバイパスすると、セキュリティー上の脅威になる可能性があります。これらの追加の特権を付与するユーザーを選択するときは注意してください。
前提条件
- Directory Manager のパスワードを把握している。
手順
ドメイン内のすべての Identity Management (IdM) サーバーで、次の変更を行います。
ldapmodify
コマンドを実行して、LDAP エントリーを変更します。IdM サーバーの名前と 389 ポートを指定し、Enter キーを押します。$ ldapmodify -x -D "cn=Directory Manager" -W -h server.idm.example.com -p 389 Enter LDAP Password:
- Directory Manager パスワードを入力します。
ipa_pwd_extop
パスワード同期エントリーの識別名を入力し、Enter キーを押します。dn: cn=ipa_pwd_extop,cn=plugins,cn=config
変更の
modify
型を指定し、Enter キーを押します。changetype: modify
LDAP が実行する修正のタイプと、その属性を指定します。Enter キーを押します。
add: passSyncManagersDNs
passSyncManagersDNs
属性に管理ユーザーアカウントを指定します。属性は多値です。たとえば、admin
ユーザーに、Directory Manager の電源をリセットするパスワードを付与するには、次のコマンドを実行します。passSyncManagersDNs: \ uid=admin,cn=users,cn=accounts,dc=example,dc=com
- Enter キーを 2 回押して、エントリーの編集を停止します。
手順全体を以下に示します。
$ ldapmodify -x -D "cn=Directory Manager" -W -h server.idm.example.com -p 389 Enter LDAP Password: dn: cn=ipa_pwd_extop,cn=plugins,cn=config changetype: modify add: passSyncManagersDNs passSyncManagersDNs: uid=admin,cn=users,cn=accounts,dc=example,dc=com
passSyncManagerDNs
にリスト表示されている admin
ユーザーに、追加特権が追加されました。
5.7. IdM ユーザーのアカウントがロックされているかどうかの確認
Identity Management (IdM) 管理者は、IdM ユーザーのアカウントがロックされているかどうかを確認できます。そのためには、ユーザーの最大許容ログイン試行回数と、ユーザーの実際の失敗ログイン回数を比較する必要があります。
前提条件
- IdM の管理ユーザーの TGT (Ticket-Granting Ticket) を取得している。
手順
ユーザーアカウントのステータスを表示して、失敗したログインの数を確認します。
$ ipa user-status example_user ----------------------- Account disabled: False ----------------------- Server: idm.example.com Failed logins: 8 Last successful authentication: N/A Last failed authentication: 20220229080317Z Time now: 2022-02-29T08:04:46Z ---------------------------- Number of entries returned 1 ----------------------------
特定のユーザーに許可されたログイン試行回数を表示します。
- IdM 管理者として IdM Web UI にログインします。
- Identity → Users → Active users タブを開きます。
- ユーザー名をクリックして、ユーザー設定を開きます。
- パスワードポリシー セクションで、Max failures アイテムを探します。
-
ipa user-status
コマンドの出力に表示されているログイン失敗回数と、IdM Web UI に表示されているMax failures 数を比較します。ログインに失敗した回数が、許可されている最大ログイン試行回数と等しい場合、ユーザーアカウントはロックされます。
5.8. IIdM でのパスワード失敗後のユーザーアカウントのロック解除
ユーザーが間違ったパスワードを一定回数使用してログインしようとすると、Identity Management (IdM) はユーザーアカウントをロックするため、ユーザーはログインできなくなります。セキュリティー上の理由から、IdM では、ユーザーアカウントがロックされていることを示す警告メッセージは表示されません。代わりに、CLI プロンプトがユーザーにパスワードを何度も要求し続ける場合があります。
IdM は、指定した時間が経過した後にユーザーアカウントを自動的にアンロックします。または、以下の手順でユーザーアカウントのロックを手動で解除することもできます。
前提条件
- IdM 管理ユーザーの Ticket-Granting Ticket を取得している。
手順
ユーザーアカウントのロックを解除するには、
ipa user-unlock
コマンドを実行します。$ ipa user-unlock idm_user ----------------------- Unlocked account "idm_user" -----------------------
この後、ユーザーは再度ログインできるようになります。
5.9. IdM のユーザーに対する、最後に成功した Kerberos 認証の追跡の有効化
パフォーマンス上の理由から、Red Hat Enterprise Linux 8 で実行している Identity Management (IdM) には、ユーザーが最後に成功した Kerberos 認証のタイムスタンプが保存されません。そのため、ipa user-status
などの特定のコマンドではタイムスタンプが表示されません。
前提条件
- IdM の管理ユーザーの TGT (Ticket-Granting Ticket) を取得している。
-
手順を実行している IdM サーバーへの
root
アクセス権限がある。
手順
現在有効なパスワードプラグイン機能を表示します。
# ipa config-show | grep "Password plugin features" Password plugin features: AllowNThash, KDC:Disable Last Success
この出力は、
KDC:Disable Last Success
プラグインが有効になっていることを示しています。このプラグインにより、最後に成功した Kerberos 認証試行が ipa user-status 出力に表示されなくなります。現在有効な
ipa config-mod
コマンドに、すべての機能の--ipaconfigstring=feature
パラメーターを追加します (KDC:Disable Last Success
を除く)。# ipa config-mod --ipaconfigstring='AllowNThash'
このコマンドは、
AllowNThash
プラグインのみを有効にします。複数の機能を有効にするには、機能ごとに--ipaconfigstring=feature
パラメーターを個別に指定します。IdM を再起動します。
# ipactl restart
第6章 IdM パスワードポリシーの定義
本章では、Identity Management (IdM) パスワードポリシーについて、また、Ansible Playbook を使用して IdM に新規パスワードポリシーを追加する方法を説明します。
6.1. パスワードポリシーとは
パスワードポリシーは、パスワードが満たす必要のある一連のルールです。たとえば、パスワードポリシーでは、パスワードの最小長と最大有効期間を定義できます。このポリシーの対象となる全ユーザーには、十分に長いパスワードを設定して、指定の条件を満たす頻度でパスワードを変更する必要があります。このようにパスワードポリシーを使用することで、ユーザーのパスワードが検出されて悪用されるリスクが軽減されます。
6.2. IdM のパスワードポリシー
パスワードは、Identity Management (IdM) ユーザーが IdM Kerberos ドメインに対して認証する最も一般的な方法です。パスワードポリシーでは、このような IdM ユーザーのパスワードが満たす必要条件を定義します。
IdM パスワードポリシーは基礎となる LDAP ディレクトリーで設定されますが、Kerberos Key Distribution Center (KDC) はパスワードポリシーを強制的に使用します。
パスワードポリシー属性 は、IdM でのパスワードポリシーの定義に使用できる属性をリスト表示します。
属性 | 説明 | 例 |
---|---|---|
Max lifetime | パスワードのリセットが必要になるまでの、パスワードの有効期間 (日) の上限です。デフォルト値は 90 日です。 この属性が 0 に設定されている場合、パスワードの有効期限は切れないことに注意してください。 | Max lifetime = 180 ユーザーパスワードは 180 日間のみ有効です。有効期限が経過すると、IdM は変更を求めるプロンプトを表示します。 |
Min lifetime | パスワードを変更してから次に変更操作を行うまでに最小限開ける必要のある時間。 | Min lifetime = 1 ユーザーがパスワードの変更後に、次に変更するまでに最低でも 1 時間待機する必要があります。 |
History size | 保存される以前のパスワード数。パスワードの履歴にあるパスワードを再利用できませんが、保存されていない以前のものは使用できます。 | History size = 0 この場合、パスワード履歴は空になり、ユーザーは以前のパスワードをどれでも再利用できます。 |
Character classes | パスワードで使用する必要のある文字クラスの数。文字クラスは次のとおりです。 * 大文字 * 小文字 * 数字 * コンマ (,)、ピリオド (.)、アスタリスク (*) などの特殊文字 * 他の UTF-8 文字 1 つの文字を複数回連続で使用すると、文字クラスが 1 つ減少します。以下に例を示します。
*
* | Character classes = 0
必要なクラスのデフォルト数は 0 です。番号を設定するには、 この表の下に記載されている 重要 の注意事項も併せて参照してください。 |
Min length | パスワードの最小長。 追加のパスワードポリシーオプション のいずれかが設定されていると、パスワードの最小長は 6 文字です。 | Min length = 8 8 文字未満のパスワードは使用できません。 |
Max failures | IdM がユーザーアカウントをロックするまでのログイン試行の最大失敗数。 | Max failures = 6 ユーザーがパスワードを誤って 7 回入力すると、IdM はユーザーアカウントをロックします。 |
Failure reset interval | 失敗したログイン試行回数を IdM がリセットするまでの時間 (秒単位)。 | Failure reset interval = 60
|
Lockout duration |
| Lockout duration = 600 アカウントがロックされると、10 分間ログインできません。 |
国際文字や記号を使用できないハードウェアセットが各種ある場合には、文字クラス要件に英語と共通記号を使用してください。パスワードの文字クラスポリシーの詳細は、Red Hat ナレッジベースの What characters are valid in a password? を参照してください。
6.3. Ansible Playbook を使用して IdM にパスワードポリシーを存在させる手順
Ansible Playbook を使用して Identity Management (IdM) にパスワードポリシーを存在させるには、次の手順に従います。
IdM におけるデフォルトの global_policy
パスワードポリシーでは、パスワード内の異なる文字クラスの数は 0 に設定されています。履歴サイズも 0 に設定されています。
以下の手順に従って、Ansible Playbook を使用して、IdM グループにより強力なパスワードポリシーを適用します。
IdM グループのパスワードポリシーのみを定義できます。個別ユーザーにパスワードポリシーを定義できません。
前提条件
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。 - IdM 管理者パスワードを把握している。
- IdM にパスワードポリシーが存在することを確認するグループ。
手順
inventory.file
などのインベントリーファイルを作成し、[ipaserver]
セクションに IdM サーバーのFQDN
を定義します。[ipaserver] server.idm.example.com
Ansible Playbook を作成して、存在させるパスワードポリシーを定義します。この手順は、
/usr/share/doc/ansible-freeipa/playbooks/pwpolicy/pwpolicy_present.yml
ファイルの例をコピーして変更し、簡素化できます。--- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of pwpolicy for group ops ipapwpolicy: ipaadmin_password: "{{ ipaadmin_password }}" name: ops minlife: 7 maxlife: 49 history: 5 priority: 1 lockouttime: 300 minlength: 8 minclasses: 4 maxfail: 3 failinterval: 5
各変数の意味については、パスワードポリシーの属性 を参照してください。
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/new_pwpolicy_present.yml
Ansible Playbook を使用して、ops グループのパスワードポリシーを IdM に存在させることができました。
ops パスワードポリシーの優先度は 1に設定されますが、global_policy パスワードポリシーには優先度が設定されません。上記の理由から、ops ポリシーは ops グループのglobal_policy より自動的に優先され、すぐに有効になります。
global_policy は、ユーザーにポリシーが設定されていない場合のフォールバックポリシーとして機能し、グループポリシーよりも優先されることはありません。
関連情報
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-pwpolicy.md
ファイルを参照してください。 - Password policy priorities を参照してください。
6.4. IdM での追加のパスワードポリシーオプション
Identity Management (IdM) 管理者は、libpwquality
機能セットに基づく追加のパスワードポリシーオプションを有効にすることで、デフォルトのパスワード要件を強化できます。追加のパスワードポリシーオプションには、以下が含まれます。
--maxrepeat
- 新しいパスワードに使用できる、連続する同一文字数の上限を指定します。
--maxsequence
- 新しいパスワードにおける単調な文字シーケンスの最大長を指定します。このような配列の例は、12345 または fedcb です。このようなパスワードのほとんどは、簡素化チェックに合格しません。
--dictcheck
-
ゼロ以外の場合は、パスワード (修正可能) が辞書の単語と一致するかどうかを確認します。現在、
libpwquality
は、cracklib
ライブラリーを使用してディクショナリーの確認を実行しています。 --usercheck
- ゼロ以外の場合は、パスワード (修正可能) に、何らかの形式でユーザー名が含まれているかどうかを確認します。ユーザー名が 3 文字より短い場合は実行されません。
既存のパスワードには、追加のパスワードポリシーオプションを適用できません。追加オプションのいずれかを適用すると、IdM は、パスワードの最小文字数である --minlength
オプションを自動的に 6 文字に設定します。
RHEL 7、RHEL 8、RHEL 9 サーバーが混在する環境では、RHEL 8.4 以降で実行されているサーバーにのみ追加のパスワードポリシー設定を適用できます。ユーザーが IdM クライアントにログインし、IdM クライアントが RHEL 8.3 以前で実行している IdM サーバーと通信している場合は、システム管理者が設定した新しいパスワードポリシーの要件は適用されません。一貫した動作を確認するには、すべてのサーバーを RHEL 8.4 以降にアップグレードまたは更新します。
関連情報:
- IdM グループへの追加のパスワードポリシーの適用
-
pwquality(3)
man ページ
6.5. IdM グループへの追加のパスワードポリシーオプションの適用
Identity Management (IdM) で追加のパスワードポリシーオプションを適用するには、次の手順に従います。ここでは、新しいパスワードにユーザー名が含まれていないことと、パスワードに同じ文字が連続して 2 文字以内になるようにすることで、マネージャー グループのパスワードポリシーを強化する方法を説明します。
前提条件
- IdM 管理者としてログインしている。
- マネージャー グループが IdM に存在している。
- マネージャー パスワードポリシーが IdM に存在している。
手順
マネージャー グループのユーザーが提案するすべての新しいパスワードに、ユーザー名の確認を適用します。
$ ipa pwpolicy-mod --usercheck=True managers
注記パスワードポリシーの名前を指定しないと、デフォルトの
global_policy
が変更されます。マネージャー パスワードポリシーで、同一の連続した文字の上限を 2 に設定します。
$ ipa pwpolicy-mod --maxrepeat=2 managers
パスワードに、同一の連続した文字が 2 文字を超える場合は、パスワードが使用できなくなります。たとえば、eR873mUi111YJQ の組み合わせは、連続して 3 つの 1 を含むため、使用できません。
検証
test_user という名前のテストユーザーを追加します。
$ ipa user-add test_user First name: test Last name: user ---------------------------- Added user "test_user" ----------------------------
テストユーザーを マネージャー グループに追加します。
- IdM Web UI で、 → → をクリックします。
- managers をクリックします。
-
Add
をクリックします。 - Add users into user group 'managers' ページで、test_user をチェックします。
-
>
矢印をクリックして、ユーザーをProspective
列に移動します。 -
Add
をクリックします。
テストユーザーのパスワードをリセットします。
- → に移動します。
- test_user をクリックします。
-
Actions
メニューで、Reset Password
をクリックします。 - ユーザーの一時パスワードを入力します。
コマンドラインで、test_user の Kerberos Ticket-Granting Ticket (TGT) を取得してみてください。
$ kinit test_user
- 一時パスワードを入力します。
パスワードを変更する必要があることがシステムから通知されます。test_user のユーザー名を含むパスワードを入力します。
Password expired. You must change it now. Enter new password: Enter it again: Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again.
注記Kerberos には、詳細なエラーパスワードポリシーの報告はなく、特定のケースでは、パスワードが拒否された理由を明確に示していません。
入力したパスワードが拒否されたことがシステムから通知されます。連続して 3 文字以上の同一文字を含むパスワードを入力します。
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
入力したパスワードが拒否されたことがシステムから通知されます。マネージャー パスワードポリシーの基準を満たすパスワードを入力します。
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
取得した TGT を表示します。
$ klist Ticket cache: KCM:0:33945 Default principal: test_user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/07/2021 12:44:44 07/08/2021 12:44:44 krbtgt@IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
マネージャー のパスワードポリシーが、マネージャー グループのユーザーに対して正しく機能するようになりました。
関連情報
6.6. Ansible Playbook を使用して追加のパスワードポリシーオプションを IdM グループに適用する
Ansible Playbook を使用して追加のパスワードポリシーオプションを適用し、特定の IdM グループのパスワードポリシー要件を強化できます。この目的には、maxrepeat
、maxsequence
、dictcheck
、および usercheck
パスワードポリシーオプションを使用できます。この例では、managers グループに次の要件を設定する方法を説明します。
- ユーザーの新しいパスワードに、ユーザーのそれぞれのユーザー名が含まれていない。
- パスワードに含まれる連続する同一の文字が 2 文字以下である。
- パスワードに含まれる単調な文字列が 3 文字以内である。これは、システムが 1234 や abcd などの文字列を含むパスワードを受け入れないことを意味します。
前提条件
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している。
-
secret.yml Ansible vault に
ipaadmin_password
が保存されている。
- IdM にパスワードポリシーが存在することを確認するグループ。
手順
Ansible Playbook ファイル manager_pwpolicy_present.yml を作成して、存在させるパスワードポリシーを定義します。この手順を簡素化するには、次の例をコピーして変更します。
--- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of usercheck and maxrepeat pwpolicy for group managers ipapwpolicy: ipaadmin_password: "{{ ipaadmin_password }}" name: managers usercheck: True maxrepeat: 2 maxsequence: 3
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/manager_pwpolicy_present.yml
検証
test_user という名前のテストユーザーを追加します。
$ ipa user-add test_user First name: test Last name: user ---------------------------- Added user "test_user" ----------------------------
テストユーザーを マネージャー グループに追加します。
- IdM Web UI で、 → → をクリックします。
- managers をクリックします。
-
Add
をクリックします。 - Add users into user group 'managers' ページで、test_user をチェックします。
-
>
矢印をクリックして、ユーザーをProspective
列に移動します。 -
Add
をクリックします。
テストユーザーのパスワードをリセットします。
- → に移動します。
- test_user をクリックします。
-
Actions
メニューで、Reset Password
をクリックします。 - ユーザーの一時パスワードを入力します。
コマンドラインで、test_user の Kerberos Ticket-Granting Ticket (TGT) を取得してみてください。
$ kinit test_user
- 一時パスワードを入力します。
パスワードを変更する必要があることがシステムから通知されます。test_user のユーザー名を含むパスワードを入力します。
Password expired. You must change it now. Enter new password: Enter it again: Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again.
注記Kerberos には、詳細なエラーパスワードポリシーの報告はなく、特定のケースでは、パスワードが拒否された理由を明確に示していません。
入力したパスワードが拒否されたことがシステムから通知されます。連続して 3 文字以上の同一文字を含むパスワードを入力します。
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
入力したパスワードが拒否されたことがシステムから通知されます。3 文字を超える単調な文字列を含むパスワードを入力します。たとえば、1234 や fedc などの文字列です。
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
入力したパスワードが拒否されたことがシステムから通知されます。マネージャー パスワードポリシーの基準を満たすパスワードを入力します。
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
TGT を取得したことを確認します。これは、有効なパスワードを入力した後にのみ可能です。
$ klist Ticket cache: KCM:0:33945 Default principal: test_user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/07/2021 12:44:44 07/08/2021 12:44:44 krbtgt@IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
関連情報
- IdM での追加のパスワードポリシー
-
/usr/share/doc/ansible-freeipa/README-pwpolicy.md
-
/usr/share/doc/ansible-freeipa/playbooks/pwpolicy
第7章 パスワード失効に関する通知の管理
ipa-client-epn
パッケージに含まれる Expiring Password Notification (EPN) ツールを使用して、設定期間内にパスワードが失効する Identity Management (IdM) ユーザーのリストを構築できます。EPN ツールをインストール、設定、および使用するには、該当のセクションを参照してください。
7.1. Expiring Password Notification (EPN) ツールの概要
Expiring Password Notification (EPN) ツールは、設定期間内にパスワードが失効する Identity Management (IdM) ユーザーのリストの作成に使用可能なスタンドアロンツールです。
IdM 管理者は、EPN を使用して以下を行うことができます。
- 対象ユーザーのリストを JSON 形式で表示する。これは、ドライランモードを実行時に作成されます。
- 特定の日または日付の範囲に送信される電子メール数を計算する。
- パスワード期限切れのメール通知をユーザーに送信する。
-
Ipa-epn.timer
が EPN ツールを毎日実行し、定義済みの未来の日付範囲内にパスワードが執行するユーザーに対してメールを送信するように設定する。 - メール通知をカスタマイズして、ユーザーに送信する。
ユーザーアカウントが無効な場合には、パスワードが期限切れなってもメール通知は送信されません。
7.2. Expiring Password Notification ツールのインストール
Expiring Password Notification (EPN) ツールをインストールするには、次の手順に従います。
前提条件
- スマートホストで設定したローカルの Postfix SMTP サーバーを使用して、Identity Management (IdM) レプリカまたは IdM クライアントに EPN ツールをインストールします。
手順
EPN ツールをインストールします。
# dnf install ipa-client-epn
7.3. EPN ツールを実行してパスワードが失効するユーザーへのメール送信
Expiring Password Notification (EPN) ツールを実行してパスワードの期限が切れるユーザーにメールを送信するには、次の手順に従います。
EPN ツールはステートレスです。特定の日付にパスワードが失効するユーザーに対してメールの送信に失敗した場合には、EPN ツールには失敗したユーザーのリストは保存されません。
前提条件
-
ipa-client-epn
パッケージがインストールされている。Expiring Password Notification ツールのインストール を参照してください。 -
必要に応じて、
ipa-epn
メールテンプレートをカスタマイズする。期限切れのパスワード通知テンプレートの変更 を参照してください。
手順
epn.conf
設定ファイルを更新して、今後パスワードが失効するユーザーに通知されるように、EPN ツールのオプションを設定します。# vi /etc/ipa/epn.conf
必要に応じて
notify_ttls
を更新します。デフォルトでは、28、14、7、3 および 1 日以内にパスワードが期限切れになるユーザーに通知します。notify_ttls = 28, 14, 7, 3, 1
SMTP サーバーおよびポートを設定します。
smtp_server = localhost smtp_port = 25
メールで失効通知を送信するメールアドレスを指定します。配信に失敗したメールは以下のアドレスに返されます。
mail_from =admin-email@example.com
-
/etc/ipa/epn.conf
ファイルを保存します。 --dry-run
オプションなしでツールを実行した場合には、EPN ツールをドライランモードで実行し、パスワード失効メールの通知を送信するユーザーのリストを生成します。ipa-epn --dry-run [ { "uid": "user5", "cn": "user 5", "krbpasswordexpiration": "2020-04-17 15:51:53", "mail": "['user5@ipa.test']" } ] [ { "uid": "user6", "cn": "user 6", "krbpasswordexpiration": "2020-12-17 15:51:53", "mail": "['user5@ipa.test']" } ] The IPA-EPN command was successful
注記返されたユーザーのリストが非常に大きく、かつ
--dry-run
オプションなしでツールを実行すると、メールサーバーで問題が発生する可能性があります。ドライランモードで EPN ツールを実行時に返された全ユーザーのリストに失効メールを送信するには、
--dry-run
オプションをなしで EPN ツールを実行します。ipa-epn [ { "uid": "user5", "cn": "user 5", "krbpasswordexpiration": "2020-10-01 15:51:53", "mail": "['user5@ipa.test']" } ] [ { "uid": "user6", "cn": "user 6", "krbpasswordexpiration": "2020-12-17 15:51:53", "mail": "['user5@ipa.test']" } ] The IPA-EPN command was successful
EPN を監視システムに追加して、
--from-nbdays
および--to-nbdays
オプションで EPN を呼び出し、特定の時間内に期限切れになるユーザーパスワード数を確認できます。# ipa-epn --from-nbdays 8 --to-nbdays 12
注記--from-nbdays
および--to-nbdays
で EPN ツールを呼び出すと、自動的にドライランモードで実行されます。
検証
- EPN ツールを実行し、メール通知が送信されていることを確認します。
関連情報
-
ipa-epn
の man ページを参照してください。 -
epn.conf
の man ページを参照してください。
7.4. ipa-epn.timer を有効にして、パスワードが失効する全ユーザーへのメールの送信
ipa-epn.timer
を使用して Expiring Password Notification (EPN) ツールを実行し、パスワードの期限が切れるユーザーにメールを送信するには、次の手順に従います。ipa-epn.timer
は epn.conf
ファイルを解析し、そのファイルに設定された未来の日付範囲内にパスワードの期限が切れるユーザーにメールを送信します。
前提条件
-
ipa-client-epn
パッケージがインストールされている。 Expiring Password Notification (EPN) ツールのインストール を参照してください。 -
必要に応じて、
ipa-epn
メールテンプレートをカスタマイズする。Expiring Password Notification (EPN) のメールテンプレートの変更 を参照してください。
手順
ipa-epn.timer
を起動します。systemctl start ipa-epn.timer
タイマーを起動すると、デフォルトでは、EPN ツールは毎日午前 1 時に実行されます。
関連情報
-
ipa-epn
の man ページを参照してください。
7.5. Expiring Password Notification (EPN) のメールテンプレートの変更
Expiring Password Notification (EPN) のメールメッセージのテンプレートをカスタマイズするには、次の手順に従います。
前提条件
-
ipa-client-epn
パッケージがインストールされている。
手順
EPN メッセージテンプレートを開きます。
# vi /etc/ipa/epn/expire_msg.template
必要に応じてテンプレートテキストを更新します。
Hi {{ fullname }}, Your password will expire on {{ expiration }}. Please change it as soon as possible.
テンプレートでは以下の変数を使用できます。
- User ID: uid
- Full name: fullname
- First name: first
- Last name: last
- Password expiration date: expiration
- メッセージテンプレートファイルを保存します。
検証
- EPN ツールを実行し、メール通知に更新したテキストが含まれていることを確認します。
関連情報
-
ipa-epn
の man ページを参照してください。
第8章 IdM クライアントの IdM ユーザーへの sudo アクセスの許可
Identity Management でユーザーに sudo
アクセス権を付与する方法を詳しく説明します。
8.1. IdM クライアントの sudo アクセス
システム管理者は、root 以外のユーザーに、通常 root
ユーザー用に予約されている管理コマンドを実行できるようにする sudo
アクセスを付与できます。その結果、ユーザーが、通常、root
ユーザー用に予約される管理コマンドを実行する場合は、コマンドの前に sudo
を付けることができます。パスワードを入力すると、そのコマンドは root
ユーザーとして実行されます。データベースサービスアカウントなどの別のユーザーまたはグループとして sudo
コマンドを実行するには、sudo
ルールの RunAs エイリアス を設定できます。
Red Hat Enterprise Linux (RHEL) 8 ホストが Identity Management (IdM) クライアントとして登録されている場合は、以下の方法で、どの IdM ユーザーがホストでどのコマンドを実行できるかを定義する sudo
ルールを指定できます。
-
ローカルの
/etc/sudoers
ファイル - IdM での一元設定
コマンドラインインターフェイス (CLI) と IdM Web UI を使用して、IdM クライアントの sudo
集約ルール を作成できます。
Generic Security Service Application Programming Interface (GSSAPI) を使用して sudo
のパスワードレス認証を設定することもできます。これは、UNIX ベースのオペレーティングシステムがネイティブで Kerberos サービスにアクセスして認証する方法です。pam_sss_gss.so
Pluggable Authentication Module (PAM) を使用して SSSD サービスを介して GSSAPI 認証を呼び出し、有効な Kerberos チケットを使用して sudo
コマンドに対して認証を行うことができます。
関連情報
- Managing sudo access を参照してください。
8.2. CLI での IdM クライアントの IdM ユーザーへの sudo アクセス許可
Identity Management (IdM) では、特定の IdM ホストで IdM ユーザーアカウントの特定コマンドに sudo
アクセスを付与できます。最初に sudo
コマンドを追加してから、1 つまたは複数のコマンドに対して sudo
ルールを作成します。
たとえば、idmclient マシンで /usr/sbin/reboot
コマンドを実行する権限を idm_user に付与する idm_user_reboot の sudo
ルールを作成するには、以下の手順を実行します。
前提条件
- IdM 管理者としてログインしている。
- IdM で idm_user のユーザーアカウントを作成し、ユーザーのパスワードを作成してそのアカウントのロックを解除している。CLI を使用して新しい IdM ユーザーを追加する方法の詳細は、コマンドラインを使用したユーザーの追加 を参照してください。
-
idmclient ホストにローカル idm_user アカウントが存在しない。idm_user ユーザーは、ローカルの
/etc/passwd
ファイルには表示されません。
手順
IdM の
管理者
として Kerberos チケットを取得します。[root@idmclient ~]# kinit admin
sudo
コマンドの IdM データベースに/usr/sbin/reboot
コマンドを追加します。[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
idm_user_reboot という名前の
sudo
ルールを作成します。[root@idmclient ~]# ipa sudorule-add idm_user_reboot --------------------------------- Added Sudo Rule "idm_user_reboot" --------------------------------- Rule name: idm_user_reboot Enabled: TRUE
/usr/sbin/reboot
コマンドを idm_user_reboot ルールに追加します。[root@idmclient ~]# ipa sudorule-add-allow-command idm_user_reboot --sudocmds '/usr/sbin/reboot' Rule name: idm_user_reboot Enabled: TRUE Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
idm_user_reboot ルールを IdM idmclient ホストに適用します。
[root@idmclient ~]# ipa sudorule-add-host idm_user_reboot --hosts idmclient.idm.example.com Rule name: idm_user_reboot Enabled: TRUE Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
idm_user アカウントを idm_ user_reboot ルールに追加します。
[root@idmclient ~]# ipa sudorule-add-user idm_user_reboot --users idm_user Rule name: idm_user_reboot Enabled: TRUE Users: idm_user Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
オプション: idm_user_reboot ルールの有効性を定義します。
sudo
ルールが有効である時間を定義するには、--setattr sudonotbefore=DATE
オプションを指定してipa sudorule-mod sudo_rule_name
コマンドを使用します。DATE 値は、yyyymmddHHMMSSZ 形式に準拠し、明示的に指定される秒数である必要があります。たとえば、idm_user_reboot ルールの有効性の開始を 2025 12:34:00 年 12 月 31 に設定するには、次のコマンドを実行します。[root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotbefore=20251231123400Z
sudo ルールが有効な停止時間を定義するには、
--setattr sudonotafter=DATE
オプションを使用します。たとえば、idm_user_reboot ルールの有効期間の最後を 2026 12:34:00 年 12 月 31 に設定するには、次のコマンドを実行します。[root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotafter=20261231123400Z
サーバーからクライアントへの変更の伝播には数分かかる場合があります。
検証
- idmclient ホストに idm_user アカウントとしてログインします。
idm_user アカウントが実行可能な
sudo
ルールを表示します。[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idm_user on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user may run the following commands on idmclient: (root) /usr/sbin/reboot
sudo
を使用してマシンを再起動します。プロンプトが表示されたら、idm_user のパスワードを入力します。[idm_user@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for idm_user:
8.3. AD での IdM クライアントの IdM ユーザーへの sudo アクセス許可
Identity Management (IdM) システム管理者は、IdM ユーザーグループを使用して、アクセス許可、ホストベースのアクセス制御、sudo
ルール、および IdM ユーザーに対するその他の制御を設定できます。IdM ユーザーグループは、IdM ドメインリソースへのアクセスを許可および制限します。
Active Directory (AD) ユーザー と AD グループ の両方を IdM ユーザーグループに追加できます。これを実行するには、以下を行います。
- AD ユーザーまたはグループを 非 POSIX 外部 IdM グループに追加します。
- 非 POSIX 外部 IdM グループを IdM POSIX グループに追加します。
その後、POSIX グループの権限を管理することで、AD ユーザーの権限を管理できます。例えば、特定のコマンドの sudo
アクセスを、特定の IdM ホストの IdM POSIX ユーザーグループに付与できます。
AD ユーザーグループを、IdM 外部グループにメンバーとして追加することもできます。これにより、1 つの AD レルムにユーザーおよびグループの管理を維持することで、Windows ユーザーのポリシーの定義が容易になります。
IdM の SUDO ルールに AD ユーザーの ID オーバーライドを使用 しない でください。AD ユーザーの ID オーバーライドは、AD ユーザー自体ではなく、AD ユーザーの POSIX 属性のみを表します。
ID オーバーライドをグループメンバーとして追加できます。ただし、この機能は IdM API で IdM リソースを管理するためにのみ使用できます。グループメンバーとして ID オーバーライドを追加する可能性は POSIX 環境に拡張されていないため、sudo
またはホストベースのアクセス制御 (HBAC) ルールのメンバーシップには使用できません。
この手順では、ad_users_reboot sudo
ルールを作成して、administrator@ad-domain.com AD ユーザーに、idmclient IdM ホストで /usr/sbin/reboot
コマンドを実行するパーミッションを付与します。これは通常、root
ユーザー用に予約されています。administrator@ad-domain.com は ad_users_external 非 POSIX グループのメンバーであり、これは ad_users POSIX グループのメンバーでもあります。
前提条件
-
IdM
admin
Kerberos の チケット許可チケット (TGT) を取得しました。 - IdM ドメインと ad-domain.com AD ドメインの間にフォレスト間の信頼が存在します。
-
idmclient ホストにローカル 管理者 アカウントが存在しません。管理者 ユーザーがローカルの
/etc/passwd
ファイルにリストされていません。
手順
administrator@ad-domain メンバーを持つ ad_users_external グループを含む ad_users グループを作成します。
- オプション: IdM レルムで AD ユーザーを管理するために使用する、AD ドメイン内の対応するグループを作成または選択します。複数の AD グループを使用して、それらを IdM 側の異なるグループに追加できます。
ad_users_external グループを作成し、
--external
オプションを追加して、IdM ドメイン外のメンバーが含まれていることを示します。[root@ipaserver ~]# ipa group-add --desc='AD users external map' ad_users_external --external ------------------------------- Added group "ad_users_external" ------------------------------- Group name: ad_users_external Description: AD users external map
注記ここで指定する外部グループが、Active Directory セキュリティーグループ ドキュメントで定義されているように、
global
またはuniversal
グループスコープを持つ AD セキュリティーグループであることを確認してください。たとえば、グループスコープがdomain local
であるため、Domain users または Domain admins AD セキュリティーグループは使用できません。ad_users グループを作成します。
[root@ipaserver ~]# ipa group-add --desc='AD users' ad_users ---------------------- Added group "ad_users" ---------------------- Group name: ad_users Description: AD users GID: 129600004
administrator@ad-domain.com AD ユーザーを外部メンバーとして ad_users_external に追加します。
[root@ipaserver ~]# ipa group-add-member ad_users_external --external "administrator@ad-domain.com" [member user]: [member group]: Group name: ad_users_external Description: AD users external map External member: S-1-5-21-3655990580-1375374850-1633065477-513 ------------------------- Number of members added 1 -------------------------
AD ユーザーは、
DOMAIN\user_name
またはuser_name@DOMAIN
などの完全修飾名で識別される必要があります。次に、AD ID がユーザーの AD SID にマップされます。同じことが AD グループの追加にも当てはまります。ad_users_external を ad_users にメンバーとして追加します。
[root@ipaserver ~]# ipa group-add-member ad_users --groups ad_users_external Group name: ad_users Description: AD users GID: 129600004 Member groups: ad_users_external ------------------------- Number of members added 1 -------------------------
ad_users のメンバーに、idmclient ホストで
/usr/sbin/reboot
を実行する権限を付与します。sudo
コマンドの IdM データベースに/usr/sbin/reboot
コマンドを追加します。[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
ad_users_reboot という名前の
sudo
ルールを作成します。[root@idmclient ~]# ipa sudorule-add ad_users_reboot --------------------------------- Added Sudo Rule "ad_users_reboot" --------------------------------- Rule name: ad_users_reboot Enabled: True
/usr/sbin/reboot
コマンドを ad_users_reboot ルールに追加します。[root@idmclient ~]# ipa sudorule-add-allow-command ad_users_reboot --sudocmds '/usr/sbin/reboot' Rule name: ad_users_reboot Enabled: True Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
ad_users_reboot ルールを IdM idmclient ホストに適用します。
[root@idmclient ~]# ipa sudorule-add-host ad_users_reboot --hosts idmclient.idm.example.com Rule name: ad_users_reboot Enabled: True Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
ad_users
グループを ad_users_reboot ルールに追加します。[root@idmclient ~]# ipa sudorule-add-user ad_users_reboot --groups ad_users Rule name: ad_users_reboot Enabled: TRUE User Groups: ad_users Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
サーバーからクライアントへの変更の伝播には数分かかる場合があります。
検証
ad_users
グループの間接メンバーである administrator@ad-domain.com で idmclient ホストにログインします。$ ssh administrator@ad-domain.com@ipaclient Password:
オプション:
administrator@ad-domain.com
が実行できるsudo
コマンドを表示します。[administrator@ad-domain.com@idmclient ~]$ sudo -l Matching Defaults entries for administrator@ad-domain.com on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User administrator@ad-domain.com may run the following commands on idmclient: (root) /usr/sbin/reboot
sudo
を使用してマシンを再起動します。プロンプトが表示されたら、administrator@ad-domain.com
のパスワードを入力します。[administrator@ad-domain.com@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for administrator@ad-domain.com:
8.4. IdM Web UI を使用した IdM クライアントでの IdM ユーザーへの sudo アクセス権の付与
Identity Management (IdM) では、特定の IdM ホストで IdM ユーザーアカウントの特定コマンドに sudo
アクセスを付与できます。最初に sudo
コマンドを追加してから、1 つまたは複数のコマンドに対して sudo
ルールを作成します。
idmclient
マシンで /usr/sbin/reboot
コマンドを実行する権限を idm_user
に付与する idm_user_reboot
の sudo ルールを作成するには、以下の手順を実行します。
前提条件
- IdM 管理者としてログインしている。
-
IdM で
idm_user
のユーザーアカウントを作成し、ユーザーのパスワードを作成してそのアカウントのロックを解除している。コマンドラインインターフェイスを使用して新しい IdM ユーザーを追加する方法の詳細は、コマンドラインを使用したユーザーの追加 を参照してください。 -
idmclient
ホストにローカルidm_user
アカウントが存在しない。idm_user
ユーザーは、ローカルの/etc/passwd
ファイルには表示されません。
手順
sudo
コマンドの IdM データベースに/usr/sbin/reboot
コマンドを追加します。- Policy → Sudo → Sudo Commands の順に移動します。
- 右上にある Add をクリックして、Add sudo command ダイアログボックスを開きます。
sudo
:/usr/sbin/reboot
を使用してユーザーが実行できるコマンドを入力します。図8.1 IdM sudo コマンドの追加
- Add をクリックします。
新しい
sudo
コマンドエントリーを使用して sudo ルールを作成し、idm_user が idmclient マシンを再起動できるようにします。- Policy → Sudo → Sudo ルールに移動します。
- 右上にある Add をクリックして、Add sudo rule ダイアログボックスを開きます。
-
sudo
ルールの名前を入力します (idm_user_reboot)。 - Add and Edit をクリックします。
ユーザーを指定します。
- Who セクションで、Specified Users and Groups のラジオボタンを選択します。
- User category the rule applies to のサブセクションで Add をクリックして、Add users into sudo rule "idm_user_reboot" ダイアログボックスを開きます。
- Add users into sudo rule "idm_user_reboot" ダイアログボックスにある Available 列で、idm_user チェックボックスを選択し、これを Prospective 列に移動します。
- Add をクリックします。
ホストを指定します。
- Access this host セクションで、Specified Hosts and Groups ラジオボタンを確認します。
- Host category this rule applies to サブセクションで Add をクリックして、Add hosts into sudo rule "idm_user_reboot" ダイアログボックスを開きます。
- Add hosts into sudo rule "idm_user_reboot" ダイアログボックスにある Available 列で、idmclient.idm.example.com チェックボックスを選択し、これを Prospective 列に移動します。
- Add をクリックします。
コマンドを指定します。
- Run Commands セクションの Command category the rule applies to サブセクションで、Specified Commands and Groups ラジオボタンにチェックを入れます。
- Sudo Allow Commands サブセクションで Add をクリックして、Add allow sudo commands into sudo rule "idm_user_reboot" ダイアログボックスを開きます。
-
Add allow sudo commands into sudo rule "idm_user_reboot" ダイアログボックスにある Available 列で、
/usr/sbin/reboot
チェックボックスを選択し、これを Prospective 列に移動します。 - Add をクリックして、idm_sudo_reboot ページに戻ります。
図8.2 IdM sudo ルールの追加
- 左上隅にある Save をクリックします。
新しいルールはデフォルトで有効になります。
サーバーからクライアントへの変更の伝播には数分かかる場合があります。
検証
-
idmclient
にidm_user
としてログインします。 sudo
を使用してマシンを再起動します。プロンプトが表示されたら、idm_user
のパスワードを入力します。$ sudo /usr/sbin/reboot [sudo] password for idm_user:
sudo
ルールが正しく設定されている場合には、マシンが再起動します。
8.5. IdM クライアントでサービスアカウントとしてコマンドを実行する CLI での sudo ルールの作成
IdM では、RunAs エイリアス を使用して、sudo
ルールを設定し、別のユーザーまたはグループとして sudo
コマンドを実行できます。たとえば、データベースアプリケーションをホストする IdM クライアントが存在し、そのアプリケーションに対応するローカルサービスアカウントとしてコマンドを実行する必要があるとします。
この例を使用して、run_third-party-app_report
と呼ばれるコマンドラインに sudo
ルールを作成し、idm_user
アカウントが idmclient
ホストの thirdpartyapp
サービスアカウントとして /opt/third-party-app/bin/report
コマンドを実行できるようにします。
前提条件
- IdM 管理者としてログインしている。
-
IdM で
idm_user
のユーザーアカウントを作成し、ユーザーのパスワードを作成してそのアカウントのロックを解除している。CLI を使用して新しい IdM ユーザーを追加する方法の詳細は、コマンドラインを使用したユーザーの追加 を参照してください。 -
idmclient
ホストにローカルidm_user
アカウントが存在しない。idm_user
ユーザーは、ローカルの/etc/passwd
ファイルには表示されません。 -
idmclient
ホストに、third-party-app
という名前のカスタムアプリケーションがインストールされている。 -
third-party-app
アプリケーションのreport
コマンドが、/opt/third-party-app/bin/report
ディレクトリーにインストールされている。 -
third-party-app
アプリケーションにコマンドを実行するために、thirdpartyapp
という名前のローカルサービスアカウントを作成している。
手順
IdM の
管理者
として Kerberos チケットを取得します。[root@idmclient ~]# kinit admin
/opt/third-party-app/bin/report
コマンドを、sudo
コマンドの IdM データベースに追加します。[root@idmclient ~]# ipa sudocmd-add /opt/third-party-app/bin/report ---------------------------------------------------- Added Sudo Command "/opt/third-party-app/bin/report" ---------------------------------------------------- Sudo Command: /opt/third-party-app/bin/report
run_third-party-app_report
という名前のsudo
ルールを作成します。[root@idmclient ~]# ipa sudorule-add run_third-party-app_report -------------------------------------------- Added Sudo Rule "run_third-party-app_report" -------------------------------------------- Rule name: run_third-party-app_report Enabled: TRUE
--users=<user>
オプションを使用して、sudorule-add-runasuser
コマンドに RunAs ユーザーを指定します。[root@idmclient ~]# ipa sudorule-add-runasuser run_third-party-app_report --users=thirdpartyapp Rule name: run_third-party-app_report Enabled: TRUE RunAs External User: thirdpartyapp ------------------------- Number of members added 1 -------------------------
ユーザー (または
--groups=*
オプションで指定したグループ) は、ローカルサービスアカウントや Active Directory ユーザーなどの IdM の外部に配置できます。グループ名には%
接頭辞を追加しないでください。/opt/third-party-app/bin/report
コマンドをrun_third-party-app_report
ルールに追加します。[root@idmclient ~]# ipa sudorule-add-allow-command run_third-party-app_report --sudocmds '/opt/third-party-app/bin/report' Rule name: run_third-party-app_report Enabled: TRUE Sudo Allow Commands: /opt/third-party-app/bin/report RunAs External User: thirdpartyapp ------------------------- Number of members added 1 -------------------------
run_third-party-app_report
ルールを IdMidmclient
ホストに適用します。[root@idmclient ~]# ipa sudorule-add-host run_third-party-app_report --hosts idmclient.idm.example.com Rule name: run_third-party-app_report Enabled: TRUE Hosts: idmclient.idm.example.com Sudo Allow Commands: /opt/third-party-app/bin/report RunAs External User: thirdpartyapp ------------------------- Number of members added 1 -------------------------
idm_user
アカウントーをrun_third-party-app_report
ルールに追加します。[root@idmclient ~]# ipa sudorule-add-user run_third-party-app_report --users idm_user Rule name: run_third-party-app_report Enabled: TRUE Users: idm_user Hosts: idmclient.idm.example.com Sudo Allow Commands: /opt/third-party-app/bin/report RunAs External User: thirdpartyapp ------------------------- Number of members added 1
サーバーからクライアントへの変更の伝播には数分かかる場合があります。
検証
-
idmclient
ホストにidm_user
アカウントとしてログインします。 新しい sudo ルールをテストします。
idm_user
アカウントが実行可能なsudo
ルールを表示します。[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idm_user@idm.example.com on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user@idm.example.com may run the following commands on idmclient: (thirdpartyapp) /opt/third-party-app/bin/report
report
コマンドをthirdpartyapp
サービスアカウントとして実行します。[idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report [sudo] password for idm_user@idm.example.com: Executing report... Report successful.
8.6. IdM クライアントでサービスアカウントとしてコマンドを実行する IdM WebUI での sudo ルールの作成
IdM では、RunAs エイリアス を使用して、sudo
ルールを設定し、別のユーザーまたはグループとして sudo
コマンドを実行できます。たとえば、データベースアプリケーションをホストする IdM クライアントが存在し、そのアプリケーションに対応するローカルサービスアカウントとしてコマンドを実行する必要があるとします。
この例を使用して、run_third-party-app_report
という IdM WebUI に sudo
ルールを作成し、idm_user
アカウントが idmclient
ホストで thirdpartyapp
サービスアカウントとして /opt/third-party-app/bin/report
コマンドを実行できるようにします。
前提条件
- IdM 管理者としてログインしている。
-
IdM で
idm_user
のユーザーアカウントを作成し、ユーザーのパスワードを作成してそのアカウントのロックを解除している。CLI を使用して新しい IdM ユーザーを追加する方法の詳細は、コマンドラインを使用したユーザーの追加 を参照してください。 -
idmclient
ホストにローカルidm_user
アカウントが存在しない。idm_user
ユーザーは、ローカルの/etc/passwd
ファイルには表示されません。 -
idmclient
ホストに、third-party-app
という名前のカスタムアプリケーションがインストールされている。 -
third-party-app
アプリケーションのreport
コマンドが、/opt/third-party-app/bin/report
ディレクトリーにインストールされている。 -
third-party-app
アプリケーションにコマンドを実行するために、thirdpartyapp
という名前のローカルサービスアカウントを作成している。
手順
/opt/third-party-app/bin/report
コマンドを、sudo
コマンドの IdM データベースに追加します。- Policy → Sudo → Sudo Commands の順に移動します。
- 右上にある Add をクリックして、Add sudo command ダイアログボックスを開きます。
コマンド
/opt/third-party-app/bin/report
を入力します。- Add をクリックします。
新しい
sudo
コマンドエントリーを使用して、新しいsudo
ルールを作成します。- Policy → Sudo → Sudo ルールに移動します。
- 右上にある Add をクリックして、Add sudo rule ダイアログボックスを開きます。
sudo
ルールの名前 run_third-party-app_report を入力します。- Add and Edit をクリックします。
ユーザーを指定します。
- Who セクションで、Specified Users and Groups のラジオボタンを選択します。
- User category the rule applies to のサブセクションで Add をクリックして、Add users into sudo rule "run_third-party-app_report" ダイアログボックスを開きます。
Available 列の Add users into sudo rule "run_third-party-app_report" ダイアログボックスで、idm_user チェックボックスをオンにして、これを Prospective 列に移動します。
- Add をクリックします。
ホストを指定します。
- Access this host セクションで、Specified Hosts and Groups ラジオボタンを確認します。
- Host category this rule applies to サブセクションで Add をクリックして、 Add hosts into sudo rule "run_third-party-app_report" ダイアログボックスを開きます。
Available 列の Add hosts into sudo rule "run_third-party-app_report" ダイアログボックスで、idmclient.idm.example.com チェックボックスをオンにして、これを Prospective 列に移動します。
- Add をクリックします。
コマンドを指定します。
- Run Commands セクションの Command category the rule applies to サブセクションで、Specified Commands and Groups ラジオボタンにチェックを入れます。
- Sudo Allow Commands サブセクションで Add をクリックして、Add allow sudo commands into sudo rule "run_third-party-app_report" ダイアログボックスを開きます。
Available 列の Add allow sudo commands into sudo rule "run_third-party-app_report" ダイアログボックスで、
/opt/third-party-app/bin/report
チェックボックスをオンにして、これを Prospective 列に移動します。- Add をクリックして、run_third-party-app_report のページに戻ります。
RunAs ユーザーを指定します。
- As Whom で、指定したユーザーとグループ のラジオボタンを確認します。
- RunAs ユーザー サブセクションで Add をクリックして、Add RunAs users into sudo rule "run_third-party-app_report" ダイアログボックスを開きます。
Add RunAs users into sudo rule "run_third-party-app_report" ダイアログボックスで、External ボックスに
thirdpartyapp
サービスアカウントを入力し、これを Prospective 列に移動します。- Add をクリックして、run_third-party-app_report のページに戻ります。
- 左上隅にある Save をクリックします。
新しいルールはデフォルトで有効になります。
図8.3 sudo ルールの詳細
サーバーからクライアントへの変更の伝播には数分かかる場合があります。
検証
-
idmclient
ホストにidm_user
アカウントとしてログインします。 新しい sudo ルールをテストします。
idm_user
アカウントが実行可能なsudo
ルールを表示します。[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idm_user@idm.example.com on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user@idm.example.com may run the following commands on idmclient: (thirdpartyapp) /opt/third-party-app/bin/report
report
コマンドをthirdpartyapp
サービスアカウントとして実行します。[idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report [sudo] password for idm_user@idm.example.com: Executing report... Report successful.
8.7. IdM クライアントでの sudo の GSSAPI 認証の有効化
pam_sss_gss.so
PAM モジュールを介して、sudo
コマンドおよび sudo -i
コマンドの IdM クライアントで、Generic Security Service Application Program Interface (GSSAPI) 認証を有効にします。この設定により、IdM ユーザーは Kerberos チケットを使用して sudo
コマンドに対する認証が可能になります。
前提条件
-
IdM ホストに適用する IdM ユーザーの
sudo
ルールを作成している。この例では、idmclient
ホストで/usr/sbin/reboot
コマンドを実行するパーミッションをidm_user
アカウントに付与するidm_user_reboot
sudo
ルールが作成済みです。 -
/etc/sssd/sssd.conf
ファイルと、/etc/pam.d/
ディレクトリーの PAM ファイルを変更するためのroot
特権がある。
手順
-
/etc/sssd/sssd.conf
設定ファイルを開きます。 [domain/<domain_name>]
セクションに以下のエントリーを追加します。[domain/<domain_name>] pam_gssapi_services = sudo, sudo-i
-
/etc/sssd/sssd.conf
ファイルを保存して閉じます。 SSSD サービスを再起動して、設定の変更を読み込みます。
[root@idmclient ~]# systemctl restart sssd
RHEL 9.2 以降の場合:
オプション:
sssd
authselect
プロファイルを選択したかどうかを確認します。# authselect current Profile ID: sssd
sssd
authselect
プロファイルが選択されている場合は、GSSAPI 認証を有効にします。# authselect enable-feature with-gssapi
sssd
authselect
プロファイルが選択されていない場合は、それを選択して GSSAPI 認証を有効にします。# authselect select sssd with-gssapi
RHEL 9.1 以前の場合:
-
/etc/pam.d/sudo
の PAM 設定ファイルを開きます。 以下のエントリーを、
/etc/pam.d/sudo
ファイルのauth
セクションの最初の行に追加します。#%PAM-1.0 auth sufficient pam_sss_gss.so auth include system-auth account include system-auth password include system-auth session include system-auth
-
/etc/pam.d/sudo
ファイルを保存して閉じます。
-
検証
idm_user
アカウントとしてホストにログインします。[root@idm-client ~]# ssh -l idm_user@idm.example.com localhost idm_user@idm.example.com's password:
idm_user
アカウントで Ticket-Granting Ticket があることを確認します。[idmuser@idmclient ~]$ klist Ticket cache: KCM:1366201107 Default principal: idm_user@IDM.EXAMPLE.COM Valid starting Expires Service principal 01/08/2021 09:11:48 01/08/2021 19:11:48 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM renew until 01/15/2021 09:11:44
オプション:
idm_user
アカウントの Kerberos 認証情報がない場合は、現在の Kerberos 認証情報を削除し、正しい認証情報を要求します。[idm_user@idmclient ~]$ kdestroy -A [idm_user@idmclient ~]$ kinit idm_user@IDM.EXAMPLE.COM Password for idm_user@idm.example.com:
パスワードを指定せずに
sudo
を使用してマシンを再起動します。[idm_user@idmclient ~]$ sudo /usr/sbin/reboot
関連情報
- IdM 用語 リストの GSSAPI エントリー
- IdM Web UI で IdM クライアントの IdM ユーザーへの sudo アクセスの許可
- CLI での IdM クライアントの IdM ユーザーへの sudo アクセス許可
-
pam_sss_gss(8)
man ページ -
sssd.conf(5)
man ページ
8.8. IdM クライアントでの GSSAPI 認証の有効化および sudo の Kerberos 認証インジケーターの有効化
pam_sss_gss.so
PAM モジュールを介して、sudo
コマンドおよび sudo -i
コマンドの IdM クライアントで、Generic Security Service Application Program Interface (GSSAPI) 認証を有効にします。また、スマートカードを使用してログインしたユーザーのみが Kerberos チケットでこれらのコマンドに対して認証されます。
この手順をテンプレートとして使用し、他の PAM 対応サービスに対して SSSD で GSSAPI 認証を設定して、さらに特定の認証インジケーターが Kerberos チケットにアタッチされているユーザーだけにアクセスを限定することができます。
前提条件
-
IdM ホストに適用する IdM ユーザーの
sudo
ルールを作成している。この例では、idmclient
ホストで/usr/sbin/reboot
コマンドを実行するパーミッションをidm_user
アカウントに付与するidm_user_reboot
sudo
ルールが作成済みです。 -
idmclient
ホストにスマートカード認証を設定している。 -
/etc/sssd/sssd.conf
ファイルと、/etc/pam.d/
ディレクトリーの PAM ファイルを変更するためのroot
特権がある。
手順
-
/etc/sssd/sssd.conf
設定ファイルを開きます。 [domain/<domain_name>]
セクションに以下のエントリーを追加します。[domain/<domain_name>] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
-
/etc/sssd/sssd.conf
ファイルを保存して閉じます。 SSSD サービスを再起動して、設定の変更を読み込みます。
[root@idmclient ~]# systemctl restart sssd
RHEL 9.2 以降の場合:
sssd
authselect
プロファイルを選択したかどうかを確認します。# authselect current Profile ID: sssd
オプション:
sssd
authselect
プロファイルを選択します。# authselect select sssd
GSSAPI 認証を有効にします。
# authselect enable-feature with-gssapi
スマートカードを持つユーザーのみを認証するようにシステムを設定します。
# authselect with-smartcard-required
RHEL 9.1 以前の場合:
-
/etc/pam.d/sudo
の PAM 設定ファイルを開きます。 以下のエントリーを、
/etc/pam.d/sudo
ファイルのauth
セクションの最初の行に追加します。#%PAM-1.0 auth sufficient pam_sss_gss.so auth include system-auth account include system-auth password include system-auth session include system-auth
-
/etc/pam.d/sudo
ファイルを保存して閉じます。 -
/etc/pam.d/sudo-i
の PAM 設定ファイルを開きます。 以下のエントリーを、
/etc/pam.d/sudo-i
ファイルのauth
セクションの最初の行に追加します。#%PAM-1.0 auth sufficient pam_sss_gss.so auth include sudo account include sudo password include sudo session optional pam_keyinit.so force revoke session include sudo
-
/etc/pam.d/sudo-i
ファイルを保存して閉じます。
-
検証
idm_user
アカウントとしてホストにログインし、スマートカードで認証します。[root@idmclient ~]# ssh -l idm_user@idm.example.com localhost PIN for smart_card
スマートカードユーザーを使用して Ticket-Granting Ticket があることを確認します。
[idm_user@idmclient ~]$ klist Ticket cache: KEYRING:persistent:1358900015:krb_cache_TObtNMd Default principal: idm_user@IDM.EXAMPLE.COM Valid starting Expires Service principal 02/15/2021 16:29:48 02/16/2021 02:29:48 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM renew until 02/22/2021 16:29:44
idm_user
アカウントが実行可能なsudo
ルールを表示します。[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idmuser on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user may run the following commands on idmclient: (root) /usr/sbin/reboot
パスワードを指定せずに
sudo
を使用してマシンを再起動します。[idm_user@idmclient ~]$ sudo /usr/sbin/reboot
関連情報
- PAM サービスの GSSAPI 認証を制御する SSSD オプション
- IdM 用語 リストの GSSAPI エントリー
- スマートカード認証用の Identity Management の設定
- Kerberos 認証インジケーター
- IdM Web UI で IdM クライアントの IdM ユーザーへの sudo アクセスの許可
- CLI での IdM クライアントの IdM ユーザーへの sudo アクセス許可
-
pam_sss_gss(8)
man ページ -
sssd.conf(5)
man ページ
8.9. PAM サービスの GSSAPI 認証を制御する SSSD オプション
/etc/sssd/sssd.conf
設定ファイルに以下のオプションを使用すると、SSSD サービス内の GSSAPI 設定を調整できます。
- pam_gssapi_services
-
SSSD を使用した GSSAPI 認証はデフォルトで無効になっています。このオプションを使用すると、PAM モジュール
pam_sss_gss.so
を使用して GSSAPI 認証を試すことができる PAM サービスをコンマ区切りのリストで指定できます。GSSAPI 認証を明示的に無効にするには、このオプションを-
に設定します。 - pam_gssapi_indicators_map
このオプションは、Identity Management (IdM) ドメインにのみ適用されます。このオプションを使用して、サービスへの PAM のアクセスを付与するのに必要な Kerberos 認証インジケーターをリスト表示します。ペアの形式は
<PAM_service>:_<required_authentication_indicator>_
でなければなりません。有効な認証インジケーターは以下のとおりです。
-
OTP
- 2 要素認証 -
radius
- RADIUS 認証 -
pkinit
- PKINIT、スマートカード、または証明書での認証 -
hardened
- 強化パスワード
-
- pam_gssapi_check_upn
-
このオプションはデフォルトで有効となっており、
true
に設定されています。このオプションを有効にすると、SSSD サービスでは Kerberos 認証情報と同じユーザー名が必要になります。false
の場合には、pam_sss_gss.so
の PAM モジュールは、必要なサービスチケットを取得できるすべてのユーザーを認証します。
例
次のオプションでは、sudo
と sudo-i
サービスの Kerberos 認証を有効にします。この認証では、sudo
ユーザーはワンタイムパスワードで認証する必要があり、ユーザー名と Kerberos プリンシパルが同じでなければなりません。この設定は [pam]
セクションにあるため、すべてのドメインに適用されます。
[pam] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:otp pam_gssapi_check_upn = true
これらのオプションを個別の [domain]
セクションで設定して、[pam]
セクションのグローバル値を上書きすることもできます。次のオプションは、異なる GSSAPI 設定を各ドメインに適用します。
idm.example.com
ドメインの場合-
sudo
とsudo -i
サービスの GSSAPI 認証を有効にする。 -
sudo
コマンドには、証明書またはスマートカード認証オーセンティケーターが必要である。 -
sudo -i
コマンドにはワンタイムパスワード認証が必要である。 - ユーザー名と Kerberos プリンシパルを常に一致させる必要がある。
-
ad.example.com
ドメインの場合-
sudo
サービスに対してのみ GSSAPI 認証を有効にする。 - ユーザー名とプリンシパルを強制的に一致させない。
-
[domain/idm.example.com] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:otp pam_gssapi_check_upn = true ... [domain/ad.example.com] pam_gssapi_services = sudo pam_gssapi_check_upn = false ...
関連情報
8.10. sudo の GSSAPI 認証のトラブルシューティング
IdM から Kerberos チケットを使用して sudo
サービスに対する認証できない場合は、以下のシナリオを使用して設定のトラブルシューティングを行います。
前提条件
-
sudo
サービスの GSSAPI 認証が有効化されている。IdM クライアントでの sudo の GSSAPI 認証の有効化 を参照してください。 -
/etc/sssd/sssd.conf
ファイルと、/etc/pam.d/
ディレクトリーの PAM ファイルを変更するためのroot
特権がある。
手順
以下のエラーが表示された場合、Kerberos サービスはホスト名をもとに、サービスチケットに合わせて正しいレルムを解決できない可能性があります。
Server not found in Kerberos database
このような場合は、
/etc/krb5.conf
の Kerberos 設定ファイルの[domain_realm]
セクションにホスト名を直接追加します。[idm-user@idm-client ~]$ cat /etc/krb5.conf ... [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM server.example.com = EXAMPLE.COM
以下のエラーが表示される場合には、Kerberos 認証情報がありません。
No Kerberos credentials available
このような場合は、
kinit
ユーティリティーを使用して Kerberos 認証情報を取得するか、SSSD で認証します。[idm-user@idm-client ~]$ kinit idm-user@IDM.EXAMPLE.COM Password for idm-user@idm.example.com:
/var/log/sssd/sssd_pam.log
ログファイルに以下のエラーのいずれかが表示される場合には、Kerberos 認証情報と、現在ログインしたユーザーのユーザー名とが一致しません。User with UPN [<UPN>] was not found. UPN [<UPN>] does not match target user [<username>].
このような場合は、SSSD で認証されたことを確認するか、
/etc/sssd/sssd.conf
ファイルでpam_gssapi_check_upn
オプションを無効にすることを検討してください。[idm-user@idm-client ~]$ cat /etc/sssd/sssd.conf ... pam_gssapi_check_upn = false
他のトラブルシューティングを行う場合は、PAM モジュール
pam_sss_gss.so
のデバッグ出力を有効してください。/etc/pam.d/sudo
や/etc/pam.d/sudo-i
など、PAM ファイルにpam_sss_gss.so
の全エントリーの最後にdebug
オプションを追加します。[root@idm-client ~]# cat /etc/pam.d/sudo #%PAM-1.0 auth sufficient pam_sss_gss.so debug auth include system-auth account include system-auth password include system-auth session include system-auth
[root@idm-client ~]# cat /etc/pam.d/sudo-i #%PAM-1.0 auth sufficient pam_sss_gss.so debug auth include sudo account include sudo password include sudo session optional pam_keyinit.so force revoke session include sudo
pam_sss_gss.so
モジュールで認証を試み、コンソールの出力を確認します。この例では、ユーザーには Kerberos 認証情報がありません。[idm-user@idm-client ~]$ sudo ls -l /etc/sssd/sssd.conf pam_sss_gss: Initializing GSSAPI authentication with SSSD pam_sss_gss: Switching euid from 0 to 1366201107 pam_sss_gss: Trying to establish security context pam_sss_gss: SSSD User name: idm-user@idm.example.com pam_sss_gss: User domain: idm.example.com pam_sss_gss: User principal: pam_sss_gss: Target name: host@idm.example.com pam_sss_gss: Using ccache: KCM: pam_sss_gss: Acquiring credentials, principal name will be derived pam_sss_gss: Unable to read credentials from [KCM:] [maj:0xd0000, min:0x96c73ac3] pam_sss_gss: GSSAPI: Unspecified GSS failure. Minor code may provide more information pam_sss_gss: GSSAPI: No credentials cache found pam_sss_gss: Switching euid from 1366200907 to 0 pam_sss_gss: System error [5]: Input/output error
8.11. Ansible Playbook を使用して IdM クライアントでの IdM ユーザーの sudo アクセスを確認する
Identity Management (IdM) では、特定の IdM ホストの IdM ユーザーアカウントに sudo
アクセスが付与されるようにできます。
この手順では、idm_user_reboot という名前の sudo
ルールが存在するように設定します。このルールは、idmclient マシンで /usr/sbin/reboot
コマンドを実行するパーミッションを idm_user に付与します。
前提条件
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。 - IdM に idm_user のユーザーアカウントが存在することを確認し、そのユーザーのパスワードを作成してアカウントのロックを解除している。コマンドラインインターフェイスを使用して新しい IdM ユーザーを追加する方法の詳細は、コマンドラインを使用したユーザーの追加 を参照してください。
-
idmclient にローカルの idm_user アカウントがない。(idm_user ユーザーは idmclient の
/etc/passwd
ファイルに表示されていない)。
手順
inventory.file
などのインベントリーファイルを作成し、そこにipaservers
を定義します。[ipaservers] server.idm.example.com
sudo
コマンドを 1 つまたは複数追加します。ensure-reboot-sudocmd-is-present.yml
Ansible Playbook を作成し、sudo
コマンドの IdM データベースに/usr/sbin/reboot
コマンドが存在するようにします。この手順は、/usr/share/doc/ansible-freeipa/playbooks/sudocmd/ensure-sudocmd-is-present.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Playbook to manage sudo command hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure sudo command is present - ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/sbin/reboot state: present
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
コマンドを参照する
sudo
ルールを作成します。sudo
コマンドエントリーを使用して sudo ルールが存在することを確認するensure-sudorule-for-idmuser-on-idmclient-is-present.yml
Ansible Playbook を作成します。sudo ルールは、 idm_user が idmclient マシンを再起動することを許可します。この手順は、/usr/share/doc/ansible-freeipa/playbooks/sudorule/ensure-sudorule-is-present.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure a sudorule is present granting idm_user the permission to run /usr/sbin/reboot on idmclient - ipasudorule: ipaadmin_password: "{{ ipaadmin_password }}" name: idm_user_reboot description: A test sudo rule. allow_sudocmd: /usr/sbin/reboot host: idmclient.idm.example.com user: idm_user state: present
Playbook を実行します。
$ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
検証
idm_user が sudo
を使用して idmclient を再起動できることを確認し、IdM サーバーに存在するように設定した sudo
ルールが idmclient で機能することをテストします。サーバーに加えられた変更がクライアントで反映されるまで数分かかる場合があります。
- idmclient に idm_user としてログインします。
sudo
を使用してマシンを再起動します。プロンプトが表示されたら、idm_user のパスワードを入力します。$ sudo /usr/sbin/reboot [sudo] password for idm_user:
sudo
が正しく設定されている場合には、マシンが再起動します。
関連情報
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-sudocmd.md
ファイル、README-sudocmdgroup.md
ファイル、およびREADME-sudorule.md
ファイルを参照してください。
第9章 ldapmodify を使用した IdM ユーザーの外部管理
IdM 管理者は、ipa
コマンドを使用してディレクトリーの内容を管理できます。または、ldapmodify
コマンドを使用して同様に管理することもできます。このコマンドを対話的に使用して、すべてのデータをコマンドラインで直接指定できます。ファイル内のデータを LDAP データ交換形式 (LDIF) で ldapmodify
コマンドに提供することもできます。
9.1. IdM ユーザーアカウントを外部で管理するためのテンプレート
次のテンプレートは、IdM でのさまざまなユーザー管理操作に使用できます。これらのテンプレートでは、以下の目的を達成するために ldapmodify
を使用して変更する必要のある属性がどれであるかがわかります。
- 新規ステージユーザーの追加
- ユーザーの属性変更
- ユーザーの有効化
- ユーザーの無効化
- ユーザーの保存
テンプレートは LDAP データ交換形式 (LDIF) でフォーマットされます。LDIF は、LDAP ディレクトリーのコンテンツおよび更新リクエストを表す標準的なプレーンテキストデータ交換形式です。
テンプレートを使用し、プロビジョニングシステムの LDAP プロバイダーを設定して、IdM ユーザーアカウントを管理できます。
詳細な手順例は、以下のセクションを参照してください。
新規ステージユーザーを追加するためのテンプレート
UID および GID が自動的に割り当てられた ユーザーを追加するためのテンプレート。作成したエントリーの識別名 (DN) は
uid=user_login
で開始する必要があります。dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: inetorgperson uid: user_login sn: surname givenName: first_name cn: full_name
UID と GID が静的に割り当てられている ユーザーを追加するためのテンプレート
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: person objectClass: inetorgperson objectClass: organizationalperson objectClass: posixaccount uid: user_login uidNumber: UID_number gidNumber: GID_number sn: surname givenName: first_name cn: full_name homeDirectory: /home/user_login
ステージユーザーの追加時に IdM オブジェクトクラスを指定する必要はありません。IdM は、ユーザーのアクティベート後にこれらのクラスを自動的に追加します。
既存ユーザーを変更するためのテンプレート
ユーザーの属性の変更:
dn: distinguished_name changetype: modify replace: attribute_to_modify attribute_to_modify: new_value
ユーザーの無効化:
dn: distinguished_name changetype: modify replace: nsAccountLock nsAccountLock: TRUE
ユーザーの有効化
dn: distinguished_name changetype: modify replace: nsAccountLock nsAccountLock: FALSE
nssAccountLock
属性を更新してもステージユーザーおよび保存済みユーザーには影響はありません。更新操作が正常に完了しても、属性値はnssAccountLock: TRUE
のままになります。ユーザーの保持
dn: distinguished_name changetype: modrdn newrdn: uid=user_login deleteoldrdn: 0 newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
ユーザーの変更前に、ユーザーのログインを検索してユーザーの識別名 (DN) を取得します。以下の例では、user_allowed_to_modify_user_entries ユーザーは、activator または IdM 管理者など、ユーザーおよびグループの情報の変更を許可されたユーザーです。以下の例のパスワードは、このユーザーのパスワードです。
[...]
# ldapsearch -LLL -x -D "uid=user_allowed_to_modify_user_entries,cn=users,cn=accounts,dc=idm,dc=example,dc=com" -w "Secret123" -H ldap://r8server.idm.example.com -b "cn=users,cn=accounts,dc=idm,dc=example,dc=com" uid=test_user
dn: uid=test_user,cn=users,cn=accounts,dc=idm,dc=example,dc=com
memberOf: cn=ipausers,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
9.2. IdM グループアカウントを外部で管理するためのテンプレート
次のテンプレートは、IdM でのさまざまなユーザーグループ管理操作に使用できます。これらのテンプレートでは、以下の目的を達成するために ldapmodify
を使用して変更する必要のある属性がどれであるかがわかります。
- 新規グループの作成
- 既存グループの削除
- グループへのメンバーの追加
- グループからメンバーの削除
テンプレートは LDAP データ交換形式 (LDIF) でフォーマットされます。LDIF は、LDAP ディレクトリーのコンテンツおよび更新リクエストを表す標準的なプレーンテキストデータ交換形式です。
テンプレートを使用して、プロビジョニングシステムの LDAP プロバイダーを設定して、IdM グループアカウントを管理できます。
新規グループの作成
dn: cn=group_name,cn=groups,cn=accounts,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: ipaobject objectClass: ipausergroup objectClass: groupofnames objectClass: nestedgroup objectClass: posixgroup uid: group_name cn: group_name gidNumber: GID_number
グループの変更
既存グループの削除
dn: group_distinguished_name changetype: delete
グループへのメンバーの追加
dn: group_distinguished_name changetype: modify add: member member: uid=user_login,cn=users,cn=accounts,dc=idm,dc=example,dc=com
ステージまたは保存済みユーザーをグループに追加しないでください。更新操作が正常に完了しても、ユーザーはグループのメンバーとしては更新されません。アクティブなユーザーのみがグループに所属できます。
グループからのメンバーの削除
dn: distinguished_name changetype: modify delete: member member: uid=user_login,cn=users,cn=accounts,dc=idm,dc=example,dc=com
グループの変更前に、グループ名で検索してグループの識別名 (DN) を取得します。
# ldapsearch -YGSSAPI -H ldap://server.idm.example.com -b "cn=groups,cn=accounts,dc=idm,dc=example,dc=com" "cn=group_name"
dn: cn=group_name,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
ipaNTSecurityIdentifier: S-1-5-21-1650388524-2605035987-2578146103-11017
cn: testgroup
objectClass: top
objectClass: groupofnames
objectClass: nestedgroup
objectClass: ipausergroup
objectClass: ipaobject
objectClass: posixgroup
objectClass: ipantgroupattrs
ipaUniqueID: 569bf864-9d45-11ea-bea3-525400f6f085
gidNumber: 1997010017
9.3. ldapmodify コマンドの対話的な使用
対話モードで LDAP (Lightweight Directory Access Protocol) エントリーを変更できます。
手順
コマンド行で、
ldapmodify
コマンドの後に LDAP Data Interchange Format (LDIF) ステートメントを入力します。例9.1 testuser の電話番号の変更
# ldapmodify -Y GSSAPI -H ldap://server.example.com dn: uid=testuser,cn=users,cn=accounts,dc=example,dc=com changetype: modify replace: telephoneNumber telephonenumber: 88888888
-Y
オプションを使用するには、Kerberos チケットを取得する必要があることに注意してください。-
Ctlr+D
を押してインタラクティブモードを終了します。 または、
ldapmodify
コマンドの後に LDIF ファイルを指定します。例9.2
ldapmodify
コマンドは、LDIF ファイルから変更データを読み取ります。# ldapmodify -Y GSSAPI -H ldap://server.example.com -f ~/example.ldif
関連情報
-
ldapmodify
コマンドの使用方法に関する詳細は、ldapmodify(1)
の man ページを参照してください。 -
LDIF
構造の詳細は、ldif(5)
man ページを参照してください。
9.4. ldapmodify での IdM ユーザーの保存
ldapmodify
を使用して IdM ユーザーを保存する (従業員が退職した後にユーザーアカウントを非アクティブ化する) には、次の手順に従います。
前提条件
- ユーザーを保存するロールが割り当てられた IdM ユーザーとして認証できる。
手順
ユーザーを保存するロールを持つ IdM ユーザーとしてログインします。
$ kinit admin
ldapmodify
コマンドを入力し、Generic Security Services API (GSSAPI) を認証に使用する Simple Authentication and Security Layer (SASL) メカニズムとして指定します。# ldapmodify -Y GSSAPI SASL/GSSAPI authentication started SASL username: admin@IDM.EXAMPLE.COM SASL SSF: 256 SASL data security layer installed.
保存するユーザーの
dn
を入力します。dn: uid=user1,cn=users,cn=accounts,dc=idm,dc=example,dc=com
実行する変更のタイプとして modrdn を入力します。
changetype: modrdn
ユーザーの newrdn を指定します。
newrdn: uid=user1
以下のようにユーザーの保存を指定します。
deleteoldrdn: 0
新しい上位 DN を指定します。
newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
ユーザーを保存すると、そのエントリーをディレクトリー情報ツリー (DIT) 内の新しい場所に移動します。上記の理由から、新しい親エントリーの DN を新しい上位 DN として指定する必要があります。
Enter
を再度押して、これがエントリーの最後であることを確認します。[Enter] modifying rdn of entry "uid=user1,cn=users,cn=accounts,dc=idm,dc=example,dc=com"
- Ctrl + C を使用して接続を終了します。
検証
保存済みユーザーをリスト表示して、ユーザーが保存されていることを確認します。
$ ipa user-find --preserved=true -------------- 1 user matched -------------- User login: user1 First name: First 1 Last name: Last 1 Home directory: /home/user1 Login shell: /bin/sh Principal name: user1@IDM.EXAMPLE.COM Principal alias: user1@IDM.EXAMPLE.COM Email address: user1@idm.example.com UID: 1997010003 GID: 1997010003 Account disabled: True Preserved user: True ---------------------------- Number of entries returned 1 ----------------------------
第10章 ldapsearch コマンドを使用した IdM エントリーの検索
ipa find
コマンドを使用して、アイデンティティー管理エントリーを検索できます。ipa
コマンドの詳細は、IPA コマンドの構造 セクションを参照してください。
このセクションでは、ldapsearch
コマンドラインコマンドを使用し、アイデンティティー管理エントリー経由で検索する代替オプションの基本を紹介します。
10.1. ldapsearch コマンドの使用
ldapsearch
コマンドの形式は次のとおりです。
# ldapsearch [-x | -Y mechanism] [options] [search_filter] [list_of_attributes]
-
認証方法を設定するには、
-x
オプションを指定して簡易バインドを使用するか、-Y
オプションを指定して Simple Authentication and Security Layer (SASL) メカニズムを設定します。-Y GSSAPI
オプションを使用している場合は、Kerberos チケットを取得する必要があることに注意してください。 -
オプション は、以下の表で説明されている
ldapsearch
コマンドオプションです。 - search_filter は LDAP 検索フィルターです。
- list_of_attributes は、検索結果が返す属性のリストです。
たとえば、ベース LDAP ツリーのすべてのエントリーでユーザー名 user01 を検索するとします。
# ldapsearch -x -H ldap://ldap.example.com -s sub "(uid=user01)"
-
-x
オプションは、簡易バインドで認証するようにldapsearch
コマンドに指示します。-D
オプションで識別名 (DN) を指定しない場合、認証は匿名になることに注意してください。 -
-H
オプションは、ldap://ldap.example.com に接続します。 -
-s sub
オプションは、ldapsearch
コマンドに、ベース DN から始まるすべてのエントリーを検索して、名前が user01 のユーザーを検索するように指示します。"(uid=user01)" はフィルターです。
-b
オプションを使用して検索の開始点を指定しない場合、コマンドはデフォルトのツリーを検索することに注意してください。これは、etc/openldap/ldap.conf
ファイルの BASE パラメーターで指定されます。
オプション | 説明 |
---|---|
-b |
検索の開始点。コマンドラインがコードに解釈できるアスタリスク (*) またはその他の文字が検索パラメーターに含まれている場合は、値を一重引用符または二重引用符で囲む必要があります。たとえば、 |
-D | 認証に使用する識別名 (DN)。 |
-H |
サーバーに接続するための LDAP URL。 |
-l | 検索要求が完了するまで待機する制限時間 (秒単位)。 |
-s scope | 検索の範囲です。スコープには、次のいずれかを選択できます。
|
-W | パスワードを要求します。 |
-x | 単純なバインドを許可するためにデフォルトの SASL 接続を無効にします。 |
-Y SASL_mechanism | 認証用の SASL メカニズムを設定します。 |
-z number | 検索結果の最大エントリー数。 |
ldapsearch
コマンドの -x
または -Y
オプションを使用して、いずれかの認証メカニズムを指定する必要があることに注意してください。
関連情報
-
ldapsearch
の使用方法の詳細は、ldapsearch(1)
man ページを参照してください。
10.2. ldapsearch フィルターの使用
ldapsearch
フィルターを使用すると、検索結果を絞り込むことができます。
たとえば、共通名が example に設定されたすべてのエントリーが検索結果に含まれるようにするには、次のようにします。
"(cn=example)"
この場合、等号 (=) は Operator であり、example は値です。
検索タイプ | 演算子 | 説明 |
---|---|---|
等号 | = | 値と完全に一致するエントリーを返します。(例: cn=example)。 |
部分文字列 | =string* string | substring が一致するすべてのエントリーを返します。(例: cn=exa*l)。アスタリスク (*) はゼロ (0) 以上の文字を示します。 |
以上 | >= | 値以上の属性を持つすべてのエントリーを返します。(例: uidNumber >= 5000)。 |
より小か等しい | <= | 値以下の属性を持つすべてのエントリーを返します。(例: uidNumber <= 5000)。 |
存在 | =* | 1 つ以上の属性を持つすべてのエントリーを返します。(例: cn=*)。 |
概算値 | ~= | 値属性に類似するすべてのエントリーを返します。たとえば、l~=san fransico は l=san francisco を返すことができます。 |
ブール 演算子を使用して、ldapsearch
コマンドに複数のフィルターを組み合わせることができます。
検索タイプ | 演算子 | 説明 |
---|---|---|
AND | & | フィルター内のすべてのステートメントが true のエントリーをすべて返します。例: (&(filter)(filter)(filter)…) |
OR | | | フィルター内の少なくとも 1 つのステートメントが true のエントリーをすべて返します。例: (|(filter)(filter)(filter)…) |
NOT | ! | フィルター内のステートメントが true でないエントリーをすべて返します。例: (!(filter)) |
第11章 ユーザーの外部プロビジョニングのための IdM 設定
システム管理者は、Identity Management (IdM) が、ID 管理用の外部ソリューションでユーザーのプロビジョニングをサポートするように設定できます。
ipa
ユーティリティーを使用する代わりに、外部プロビジョニングシステムの管理者は ldapmodify
ユーティリティーを使用して IdM LDAP にアクセスできます。管理者は、ldapmodify を使用して CLI から、または LDIF ファイル を使用して、個々のステージユーザーを追加できます。
IdM 管理者が外部プロビジョニングシステムを完全に信頼して、検証済みのユーザーだけを追加することを前提とします。ただし、新たにアクティブユーザーを直接追加できるように、外部プロビジョニングシステムの管理者に User Administrator
の IdM ロールを割り当てなくても構いません。
外部プロビジョニングシステムで作成されたステージユーザーを自動的にアクティブユーザーに移動するように スクリプトを設定 できます。
本章には、以下の項が含まれます。
- Identity Management (IdM) の準備 して外部プロビジョニングシステムを使用してステージユーザーを IdM に追加する。
- 外部プロビジョニングシステムが追加したユーザーをステージユーザーからアクティブユーザーに移動する スクリプトを作成 する。
外部プロビジョニングシステムを使用して IdM ステージユーザーを追加する。これには 2 つの方法があります。
11.1. ステージユーザーアカウントの自動アクティベーションに向けた IdM アカウントの準備
以下の手順では、外部プロビジョニングシステムが使用する 2 つの IdM ユーザーアカウントを設定する方法を説明します。適切なパスワードポリシーが指定されたグループにアカウントを追加すると、外部プロビジョニングシステムが IdM でユーザーのプロビジョニングを管理できるようになります。以下では、ステージユーザーの追加用に外部システムが使用するユーザーアカウントには provisionator という名前が付けられます。ステージユーザーを自動アクティベートする時に使用されるユーザーアカウントは activator という名前です。
前提条件
- 以下の手順を実行するホストが IdM に登録されている。
手順
IdM 管理者としてログインします。
$ kinit admin
ステージユーザーを追加する特権指定して provisionator という名前のユーザーを作成します。
- provisionator ユーザーアカウントを追加します。
$ ipa user-add provisionator --first=provisioning --last=account --password
provisionator ユーザーに必要な特権を割り当てます。
ステージユーザーの追加を管理する
System Provisioning
というカスタムロールを作成します。$ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning"
Stage User Provisioning
の特権をロールに追加します。この特権により、ステージユーザーを追加できます。$ ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning"
provisionator ユーザーをロールに追加します。
$ ipa role-add-member --users=provisionator "System Provisioning"
- provisionator が IdM に存在することを確認します。
$ ipa user-find provisionator --all --raw -------------- 1 user matched -------------- dn: uid=provisionator,cn=users,cn=accounts,dc=idm,dc=example,dc=com uid: provisionator [...]
ユーザーアカウントを管理する特権を指定して activator ユーザーを作成します。
activator ユーザーアカウントを追加します。
$ ipa user-add activator --first=activation --last=account --password
デフォルトの
User Administrator
ロールにユーザーを追加して、activator ユーザーに必要な特権を付与します。$ ipa role-add-member --users=activator "User Administrator"
アプリケーションアカウントのユーザーグループを作成します。
$ ipa group-add application-accounts
グループのパスワードポリシーを更新します。以下のポリシーは、アカウントのパスワードの有効期限やロックアウトを防ぎますが、複雑なパスワードを必要とすることでリスクの可能性を低減します。
$ ipa pwpolicy-add application-accounts --maxlife=10000 --minlife=0 --history=0 --minclasses=4 --minlength=8 --priority=1 --maxfail=0 --failinterval=1 --lockouttime=0
オプション: IdM にパスワードポリシーが存在することを確認します。
$ ipa pwpolicy-show application-accounts Group: application-accounts Max lifetime (days): 10000 Min lifetime (hours): 0 History size: 0 [...]
アプリケーションアカウントのグループにプロビジョニングアカウントおよびアクティベーションアカウントを追加します。
$ ipa group-add-member application-accounts --users={provisionator,activator}
ユーザーアカウントのパスワードを変更します。
$ kpasswd provisionator $ kpasswd activator
新しい IdM ユーザーのパスワードはすぐに失効するため、パスワードの変更が必要になります。
関連情報:
- Managing user accounts using the command line を参照してください。
- Delegating Permissions over Users を参照してください。
- IdM パスワードポリシーの定義 を参照してください。
11.2. IdM ステージユーザーアカウントの自動アクティベーションの設定
この手順では、ステージユーザーをアクティベートするスクリプトを作成する方法を説明します。システムは、指定した間隔でスクリプトを自動的に実行します。これにより、新規ユーザーアカウントが自動的にアクティベートされ、作成直後に使用できます。
以下の手順では、外部プロビジョニングシステムの所有者がユーザーをすでに検証しており、スクリプトが IdM への追加前に IdM 側で追加の検証を必要としていないことを前提としています。
IdM サーバーの 1 つでのみアクティベーションプロセスを有効にするだけで十分です。
前提条件
- provisionator アカウントおよび activator アカウントが IdM に存在している。詳細は ステージユーザーアカウントの自動アクティベーション用の IdM アカウントの準備 を参照してください。
- この手順を実行する IdM サーバーで root 権限がある。
- IdM 管理者としてログインしている。
- 外部プロビジョニングシステムを信頼している。
手順
アカウントのアクティベーション用に keytab ファイルを生成します。
# ipa-getkeytab -s server.idm.example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
複数の IdM サーバーでアクティベーションプロセスを有効にする場合は、1 つのサーバーだけで keytab ファイルを生成します。次に、keytab ファイルを他のサーバーにコピーします。
以下の内容を含む
/usr/local/sbin/ipa-activate-all
スクリプトを作成して全ユーザーをアクティベートします。#!/bin/bash kinit -k -i activator ipa stageuser-find --all --raw | grep " uid:" | cut -d ":" -f 2 | while read uid; do ipa stageuser-activate ${uid}; done
ipa-activate-all
スクリプトのパーミッションおよび所有権を編集して、実行可能なファイルに変更します。# chmod 755 /usr/local/sbin/ipa-activate-all # chown root:root /usr/local/sbin/ipa-activate-all
systemd ユニットファイル
/etc/systemd/system/ipa-activate-all.service
を作成して、以下の内容を追加します。[Unit] Description=Scan IdM every minute for any stage users that must be activated [Service] Environment=KRB5_CLIENT_KTNAME=/etc/krb5.ipa-activation.keytab Environment=KRB5CCNAME=FILE:/tmp/krb5cc_ipa-activate-all ExecStart=/usr/local/sbin/ipa-activate-all
systemd タイマー
/etc/systemd/system/ipa-activate-all.timer
を作成して、以下の内容を追加します。[Unit] Description=Scan IdM every minute for any stage users that must be activated [Timer] OnBootSec=15min OnUnitActiveSec=1min [Install] WantedBy=multi-user.target
新しい設定を再読み込みします。
# systemctl daemon-reload
ipa-activate-all.timer
を有効にします。# systemctl enable ipa-activate-all.timer
ipa-activate-all.timer
を起動します。# systemctl start ipa-activate-all.timer
オプション:
ipa-activate-all.timer
デーモンが実行されていることを確認します。# systemctl status ipa-activate-all.timer ● ipa-activate-all.timer - Scan IdM every minute for any stage users that must be activated Loaded: loaded (/etc/systemd/system/ipa-activate-all.timer; enabled; vendor preset: disabled) Active: active (waiting) since Wed 2020-06-10 16:34:55 CEST; 15s ago Trigger: Wed 2020-06-10 16:35:55 CEST; 44s left Jun 10 16:34:55 server.idm.example.com systemd[1]: Started Scan IdM every minute for any stage users that must be activated.
11.3. LDIF ファイルで定義されている IdM ステージユーザーの追加
IdM LDAP にアクセスし、LDIF ファイルを使用してステージユーザーを追加するには、次の手順に従います。以下の例では、ユーザーを 1 つ追加していますが、一括モードで 1 つのファイルに複数のユーザーを追加できます。
前提条件
- IdM 管理者が、provisionator アカウントとパスワードを作成している。詳細は ステージユーザーアカウントの自動アクティベーション用の IdM アカウントの準備 を参照してください。
- 外部管理者が provisionator アカウントのパスワードを知っている。
- LDAP サーバーから IdM サーバーに SSH 接続できる。
以下のような、ユーザーのライフサイクルを正しく処理できるように IdM ステージユーザーに割り当てる必要のある最小限の属性セットを提供できる。
-
識別名
(dn) -
共通名
(cn) -
名前 (姓)
(sn) -
uid
-
手順
外部サーバーで、新規ユーザーに関する情報が含まれる LDIF ファイルを作成します。
dn: uid=stageidmuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: inetorgperson uid: stageidmuser sn: surname givenName: first_name cn: full_name
外部サーバーから IdM サーバーへの LDIF ファイルを転送します。
$ scp add-stageidmuser.ldif provisionator@server.idm.example.com:/provisionator/ Password: add-stageidmuser.ldif 100% 364 217.6KB/s 00:00
SSH
プロトコルを使用して、provisionator として IdM サーバーに接続します。$ ssh provisionator@server.idm.example.com Password: [provisionator@server ~]$
IdM サーバーで、provisionator アカウントの Kerberos ticket-granting ticket (TGT) を取得します。
[provisionator@server ~]$ kinit provisionator
-f オプションと LDIF ファイルの名前を指定して
ldapadd
コマンドを入力します。IdM サーバー名とポート番号を指定します。~]$ ldapadd -h server.idm.example.com -p 389 -f add-stageidmuser.ldif SASL/GSSAPI authentication started SASL username: provisionator@IDM.EXAMPLE.COM SASL SSF: 256 SASL data security layer installed. adding the entry "uid=stageidmuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com"
11.4. ldapmodify を使用した CLI からの IdM ステージユーザーの直接追加
Identity Management (IdM) LDAP にアクセスし、ldapmodify
ユーティリティーを使用してステージユーザーを追加するには、次の手順に従います。
前提条件
- IdM 管理者が、provisionator アカウントおよびパスワードを作成している。詳細は ステージユーザーアカウントの自動アクティベーション用の IdM アカウントの準備 を参照してください。
- 外部管理者が provisionator アカウントのパスワードを知っている。
- LDAP サーバーから IdM サーバーに SSH 接続できる。
以下のような、ユーザーのライフサイクルを正しく処理できるように IdM ステージユーザーに割り当てる必要のある最小限の属性セットを提供できる。
-
識別名
(dn) -
共通名
(cn) -
名前 (姓)
(sn) -
uid
-
手順
IdM の ID および認証情報を使用して、
SSH
プロトコルを使用して IdM サーバーに接続します。$ ssh provisionator@server.idm.example.com Password: [provisionator@server ~]$
新規ステージユーザーを追加するロールを持つ IdM ユーザーである provisionator アカウントの TGT を取得します。
$ kinit provisionator
ldapmodify
コマンドを入力し、Generic Security Services API (GSSAPI) を認証に使用する Simple Authentication and Security Layer (SASL) メカニズムとして指定します。IdM サーバーとポート名を指定します。# ldapmodify -h server.idm.example.com -p 389 -Y GSSAPI SASL/GSSAPI authentication started SASL username: provisionator@IDM.EXAMPLE.COM SASL SSF: 56 SASL data security layer installed.
追加するユーザーの
dn
を入力します。dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
実行する変更の種類として add を入力します。
changetype: add
ユーザーのライフサイクルを正しく処理できるようにするために必要な LDAP オブジェクトクラスのカテゴリーを指定します。
objectClass: top objectClass: inetorgperson
追加のオブジェクトクラスを指定できます。
ユーザーの
uid
を入力します。uid: stageuser
ユーザーの
cn
を入力します。cn: Babs Jensen
ユーザーの名前 (姓) を入力します。
sn: Jensen
Enter
を再度押して、これがエントリーの最後であることを確認します。[Enter] adding new entry "uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com"
- Ctrl + C を使用して接続を終了します。
検証
ステージエントリーの内容を検証し、プロビジョニングシステムにより、必要な全 POSIX 属性が追加され、ステージエントリーのアクティベートの準備ができていることを確認します。
新規ステージユーザーの LDAP 属性を表示するには、
ipa stageuser-show --all --raw
コマンドを実行します。$ ipa stageuser-show stageuser --all --raw dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com uid: stageuser sn: Jensen cn: Babs Jensen has_password: FALSE has_keytab: FALSE nsaccountlock: TRUE objectClass: top objectClass: inetorgperson objectClass: organizationalPerson objectClass: person
-
ユーザーは、
nsaccountlock
属性を使用して明示的に無効化されている点に注意してください。
-
ユーザーは、
11.5. 関連情報
- ldapmodify を使用した IdM ユーザーの外部管理 を参照してください。
第12章 ユーザー、ホスト、およびサービス用の Kerberos プリンシパルエイリアスの管理
新しいユーザー、ホスト、またはサービスを作成すると、以下の形式で Kerberos プリンシパルが自動的に追加されます。
- user_name@REALM
- host/host_name@REALM
- service_name/host_name@REALM
管理者は、エイリアスを使用して、ユーザー、ホスト、またはサービスが Kerberos アプリケーションに対して認証できるようにすることができます。これは、次のような状況で役立ちます。
- ユーザー名の変更後に、ユーザーが以前のユーザー名と新しいユーザー名の両方でログインする必要がある。
- IdM Kerberos レルムがメールドメインと異なる場合でも、ユーザーはメールアドレスを使用してログインする必要がある。
ユーザーの名前を変更すると、オブジェクトはエイリアスと以前の正規プリンシパル名を保持することに注意してください。
12.1. Kerberos プリンシパルエイリアスの追加
Identity Management (IdM) 環境では、エイリアス名を既存の Kerberos プリンシパルに関連付けることができます。これにより、セキュリティーが強化され、IdM ドメイン内の認証プロセスが簡素化されます。
手順
エイリアス名
useralias
をアカウントuser
に追加するには、次のように入力します。# ipa user-add-principal <user> <useralias> -------------------------------- Added new aliases to user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM, useralias@IDM.EXAMPLE.COM
ホストまたはサービスにエイリアスを追加するには、代わりにそれぞれ
ipa host-add-principal
またはipa service-add-principal
コマンドを使用します。エイリアス名を使用して認証する場合は、
kinit
コマンドで-C
オプションを使用します。# kinit -C <useralias> Password for <user>@IDM.EXAMPLE.COM:
12.2. Kerberos プリンシパルエイリアスの削除
Identity Management (IdM) 環境で Kerberos プリンシパルに関連付けられているエイリアス名を削除できます。
手順
アカウント
user
からエイリアスuseralias
を削除するには、次のように入力します。# ipa user-remove-principal <user> <useralias> -------------------------------- Removed aliases from user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM
ホストまたはサービスからエイリアスを削除するには、代わりにそれぞれ
ipa host-remove-principal
またはipa service-remove-principal
コマンドを使用します。正規のプリンシパル名は削除できないことに注意してください。
# ipa user-show <user> User login: user ... Principal name: user@IDM.EXAMPLE.COM ... # ipa user-remove-principal user user ipa: ERROR: invalid 'krbprincipalname': at least one value equal to the canonical principal name must be present
12.3. Kerberos エンタープライズプリンシパルエイリアスの追加
Identity Management (IdM) 環境では、エンタープライズプリンシパルエイリアス名を既存の Kerberos エンタープライズプリンシパルに関連付けることができます。エンタープライズプリンシパルエイリアスは、ユーザープリンシパル名 (UPN) 接尾辞、NetBIOS 名、または信頼された Active Directory フォレストドメインのドメイン名以外の任意のドメイン接尾辞を使用できます。
エンタープライズプリンシパルエイリアスを追加または削除する場合は、2 つのバックスラッシュ (\\) を使用して @ 記号をエスケープします。エスケープしないと、シェルが @ 記号を Kerberos レルム名の一部として解釈し、次のエラーが発生します。
ipa: ERROR: The realm for the principal does not match the realm for this IPA server
手順
エンタープライズプリンシパルエイリアス
user@example.com
をuser
アカウントに追加するには、以下を実行します。# ipa user-add-principal <user> <user\\@example.com> -------------------------------- Added new aliases to user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM, user\@example.com@IDM.EXAMPLE.COM
ホストまたはサービスにエンタープライズエイリアスを追加するには、代わりにそれぞれ
ipa host-add-principal
またはipa service-add-principal
コマンドを使用します。エンタープライズプリンシパル名を使用して認証する場合は、
kinit
コマンドで-E
オプションを使用します。# kinit -E <user@example.com> Password for user\@example.com@IDM.EXAMPLE.COM:
12.4. Kerberos エンタープライズプリンシパルエイリアスの削除
Identity Management (IdM) 環境で Kerberos エンタープライズプリンシパルに関連付けられているエンタープライズプリンシパルエイリアス名を削除できます。
エンタープライズプリンシパルエイリアスを追加または削除する場合は、2 つのバックスラッシュ (\\) を使用して @ 記号をエスケープします。エスケープしないと、シェルが @ 記号を Kerberos レルム名の一部として解釈し、次のエラーが発生します。
ipa: ERROR: The realm for the principal does not match the realm for this IPA server
手順
エンタープライズプリンシパルエイリアス
user@example.com
をアカウントuser
から削除するには、次のように入力します。# ipa user-remove-principal <user> <user\\@example.com> -------------------------------- Removed aliases from user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM
ホストまたはサービスからエイリアスを削除するには、代わりにそれぞれ
ipa host-remove-principal
またはipa service-remove-principal
コマンドを使用します。
第13章 PAC 情報による Kerberos セキュリティーの強化
RHEL 8.5 以降の Identity Management (IdM) では、特権属性証明書 (PAC) 情報をデフォルトで使用できます。また、RHEL 8.5 より前にインストールされた IdM デプロイメントで、セキュリティー識別子 (SID) を有効にすることもできます。
13.1. IdM での特権属性証明書 (PAC) の使用
セキュリティーを強化するために、RHEL Identity Management (IdM) は、新しいデプロイメントでデフォルトで特権属性証明書 (PAC) 情報を含む Kerberos チケットを発行するようになりました。PAC には、セキュリティー識別子 (SID)、グループメンバーシップ、ホームディレクトリー情報など、Kerberos プリンシパルに関する豊富な情報が含まれています。
Microsoft Active Directory (AD) がデフォルトで使用する SID は、再利用されることのないグローバルに一意の識別子です。SID は複数の名前空間を表します。各ドメインには、各オブジェクトの SID の接頭辞である SID があります。
RHEL 8.5 以降、IdM サーバーまたはレプリカをインストールすると、インストールスクリプトはデフォルトでユーザーおよびグループの SID を生成します。これにより、IdM が PAC データを操作できるようになります。RHEL 8.5 より前に IdM をインストールし、AD ドメインとの信頼を設定していない場合は、IdM オブジェクトの SID が生成されていない可能性があります。IdM オブジェクトの SID の生成に関する詳細は、IdM でのセキュリティー識別子 (SID) の有効化 を参照してください。
Kerberos チケットの PAC 情報を評価することで、リソースアクセスをより詳細に制御できます。たとえば、あるドメインの管理者アカウントは、他のドメインの管理者アカウントとは一意に異なる SID を持っています。AD ドメインへの信頼がある IdM 環境では、UID が 0 のすべての Linux root
アカウントなど、さまざまな場所で繰り返される可能性のある単純なユーザー名や UID ではなく、グローバルに一意の SID に基づいてアクセス制御を設定できます。
13.2. IdM でのセキュリティー識別子 (SID) の有効化
RHEL 8.5 より前に IdM をインストールし、AD ドメインとの信頼を設定していない場合は、IdM オブジェクトのセキュリティー識別子 (SID) が生成されていない可能性があります。これは、以前は SID を生成する場合、ipa-adtrust-install
コマンドを実行して 信頼コントローラー ロールを IdM サーバーに追加することが唯一の方法だったためです。
RHEL 8.6 以降、IdM の Kerberos では、IdM オブジェクトに SID が必要です。これは、特権属性証明書 (PAC) 情報に基づくセキュリティーに必要です。
前提条件
- RHEL 8.5 より前に IdM をインストールしている。
-
Active Directory ドメインとの信頼の設定の一部である
ipa-sidgen
タスクを実行していない。 - IdM 管理者アカウントとして認証可能である。
手順
SID の使用を有効にし、
SIDgen
タスクをトリガーして、既存のユーザーとグループの SID を生成します。このタスクはリソースを大量に消費する可能性があります。[root@server ~]# ipa config-mod --enable-sid --add-sids
検証
IdM
admin
ユーザーアカウントエントリーに、-500
で終わる SID (ドメイン管理者用に予約されている SID) のあるipantsecurityidentifier
属性があることを確認します。[root@server ~]# ipa user-show admin --all | grep ipantsecurityidentifier ipantsecurityidentifier: S-1-5-21-2633809701-976279387-419745629-500
第14章 Kerberos チケットポリシーの管理
Identity Management (IdM) の Kerberos チケットポリシーは、Kerberos チケットアクセス、期間、および更新に対する制限を設定します。IdM サーバーで実行している Key Distribution Center (KDC) の Kerberos チケットポリシーを設定できます。
Kerberos チケットポリシーを管理する場合、次の概念や操作を実行します。
14.1. IdM KDC のロール
Identity Management の認証メカニズムは、Key Distribution Center (KDC) が設定する Kerberos インフラストラクチャーを使用します。KDC は、認証情報を保存し、IdM ネットワーク内のエンティティーから発信されるデータの信頼性を確保する信頼できる認証局です。
各 IdM ユーザー、サービス、およびホストは Kerberos クライアントとして機能し、一意の Kerberos プリンシパル で識別されます。
-
ユーザーの場合:
identifier@REALM
(例:admin@EXAMPLE.COM
) -
サービスの場合:
service/fully-qualified-hostname@REALM
(例:http/server.example.com@EXAMPLE.COM
) -
ホストの場合:
host/fully-qualified-hostname@REALM
(例:host/client.example.com@EXAMPLE.COM
)
以下の図では、Kerberos クライアント、KDC、およびクライアントの通信先となる Kerberos を使用するアプリケーション間の通信を簡単にまとめています。
-
Kerberos クライアントは、Kerberos プリンシパルとして認証することで KDC に対して身分を証明します。たとえば、IdM ユーザーは
kinit ユーザー名
を実行し、パスワードを指定します。 - KDC はデータベースのプリンシパルを確認し、クライアントを認証し、Kerberos チケットポリシー を評価してリクエストを付与するかどうかを判断します。
- KDC は、適切なチケットポリシーに従って、ライフサイクルおよび 認証インジケーター で Ticket-Granting Ticket (TGT) を発行します。
- TGT により、クライアントは KDC から サービスチケット を要求し、ターゲットホストで Kerberos を使用するサービスと通信します。
- KDC は、クライアントの TGT が有効であるかどうかを確認し、チケットポリシーに対してサービスチケット要求を評価します。
- KDC はクライアントに サービスチケット を発行します。
- サービスチケットを使用すると、クライアントはターゲットホストのサービスと暗号化された通信を開始できます。
14.2. IdM Kerberos チケットポリシータイプ
IdM Kerberos チケットポリシーは、以下のチケットポリシータイプを実装します。
- 接続ポリシー
異なるレベルのセキュリティーで Kerberos を使用するサービスを保護するには、接続ポリシーを定義して、TGT (Ticket-granting ticket) の取得にクライアントが使用する事前認証メカニズムをもとにルールを有効にすることができます。
たとえば
client1.example.com
に接続するには、スマートカード認証が、client2.example.com
のtestservice
アプリケーションにアクセスするには、2 要素認証が必要です。接続ポリシーを有効するには、認証インジケーター をサービスに関連付けます。必要な認証インジケーターがサービスチケット要求に含まれるクライアントのみがこれらのサービスにアクセスできます。詳細は、Kerberos 認証インジケーター を参照してください。
- チケットライフサイクルポリシー
各 Kerberos チケットには 有効期間 と潜在的な 更新期間 があります。チケットは最長期間に達する前に更新できますが、更新期間の超過後には更新できません。
デフォルトのグローバルチケットの有効期間は 1 日 (86400 秒) で、デフォルトのグローバル最大更新期間は 1 週間 (604800 秒) です。これらのグローバル値を調整するには、グローバルチケットライフサイクルポリシーの設定 を参照してください。
独自のチケットライフサイクルポリシーを定義することもできます。
- 各認証インジケーターに異なるグローバルチケットライフサイクル値を設定するには、認証インジケーターごとのグローバルチケットポリシーの設定 を参照してください。
- 使用する認証方法に関係なく適用する単一のユーザーのチケットライフサイクル値を定義するには、ユーザーのデフォルトチケットポリシーの設定 を参照してください。
- 単一ユーザーにのみ適用される認証インジケーター別のチケットライフサイクル値を定義するには、ユーザーの個別認証インジケーターチケットポリシーの設定 を参照してください。
14.3. Kerberos 認証インジケーター
Kerberos Key Distribution Center (KDC) は、認証インジケーター を、ID の証明にクライアントが使用する事前認証メカニズムに基づいて TGT (Ticket-granting Ticket) に割り当てます。
otp
- 2 要素認証 (パスワード + ワンタイムパスワード)
radius
- radius 認証 (通常は 802.1x 認証)
pkinit
- PKINIT 、スマートカード、または証明書での認証
hardened
- 強化パスワード (SPAKE または FAST)[1]
次に KDC は、TGT からの認証インジケーターを、TGT から取得するサービスチケット要求に割り当てます。KDC は、認証インジケーターに基づいて、サービスアクセス制御、チケットの最大有効期間、および更新可能な期間などのポリシーを有効にします。
認証インジケーターおよび IdM サービス
サービスまたはホストを認証インジケーターに関連付けると、対応する認証メカニズムを使用して TGT を取得したクライアントのみがアクセスできるようになります。KDC はアプリケーションやサービスではなく、サービスチケット要求の認証インジケーターをチェックし、Kerberos 接続ポリシーに基づいて要求を付与または拒否します。
たとえば、仮想プライベートネットワーク (VPN) に接続するために 2 要素認証を要求するには、otp
認証インジケーターをそのサービスに関連付けます。KDC から最初の TGT を取得するのにワンタイムパスワードを使用したユーザーのみが VPN にログインできます。
図14.1 otp 認証インジケータを必要とする VPN サービスの例
サービスまたはホストに認証インジケーターが割り当てられていない場合には、メカニズムに関係なく認証されたチケットを受け入れます。
14.4. IdM サービスの認証インジケーターの有効化
Identity Management (IdM) がサポートする認証メカニズムは、認証強度によって異なります。たとえば、標準パスワードと組み合わせて、ワンタイムパスワード (OTP) を使用して、最初の Kerberos Ticket-Granting Ticket (TGT) を取得することは、標準パスワードのみを使用する認証よりも安全と見なされます。
認証インジケーターを特定の IdM サービスに関連付けることで、IdM 管理者として、これらの特定の事前認証メカニズムを使用して最初の Ticket-Granting Ticket (TGT) を取得したユーザーのみがサービスにアクセスできるようにサービスを設定できます。
この方法では、以下のように異なる IdM サービスを設定できます。
- ワンタイムパスワード (OTP) などのより強力な認証方法を使用して最初の TGT を取得したユーザーのみが、VPN などのセキュリティーにとって重要なサービスにアクセスできます。
- パスワードなど、より簡単な認証方法を使用して初期の TGT を取得したユーザーは、ローカルログインなどの重要でないサービスにのみアクセスできます。
図14.2 異なる技術を使用した認証の例
以下の手順では、IdM サービスを作成し、着信サービスチケット要求から特定の Kerberos 認証インジケーターを必要とするように設定する方法を説明します。
14.4.1. IdM サービスエントリーおよびその Kerberos キータブの作成
IdM ホストで実行しているサービスの IdM に IdM サービス エントリーを追加すると、対応する Kerberos プリンシパルが作成され、サービスが SSL 証明書、Kerberos キータブ、またはその両方を要求できるようになります。
以下の手順では、IdM サービスエントリーを作成して、関連の Kerberos キータブを生成し、対象のサービスとの通信を暗号化する方法を説明します。
前提条件
- サービスが、Kerberos プリンシパル、SSL 証明書、またはその両方を保存できる。
手順
ipa service-add
コマンドで IdM サービスを追加して、これに関連付けられた Kerberos プリンシパルを作成します。たとえば、ホストclient.example.com
で実行するtestservice
アプリケーションの IdM サービスエントリーを作成するには、次のコマンドを実行します。[root@client ~]# ipa service-add testservice/client.example.com ------------------------------------------------------------- Modified service "testservice/client.example.com@EXAMPLE.COM" ------------------------------------------------------------- Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Managed by: client.example.com
クライアント上でサービスの Kerberos キータブを生成し、保存します。
[root@client ~]# ipa-getkeytab -k /etc/testservice.keytab -p testservice/client.example.com Keytab successfully retrieved and stored in: /etc/testservice.keytab
検証
ipa service-show
コマンドを使用して、IdM サービスに関する情報を表示します。[root@server ~]# ipa service-show testservice/client.example.com Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Keytab: True Managed by: client.example.com
klist
コマンドを使用して、サービスの Kerberos キータブの内容を表示します。[root@server etc]# klist -ekt /etc/testservice.keytab Keytab name: FILE:/etc/testservice.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96) 2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (camellia128-cts-cmac) 2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (camellia256-cts-cmac)
14.4.2. IdM CLI を使用した IdM サービスへの認証インジケーターの関連付け
Identity Management (Id M) 管理者は、クライアントアプリケーションによって提示されるサービスチケットに特定の認証インジケーターが含まれていることを要求するようにホストまたはサービスを設定できます。たとえば、Kerberos Ticket-Granting Ticket (TGT) を取得する際に、パスワードで有効な IdM 2 要素認証トークンを使用したユーザーのみが、そのホストまたはサービスにアクセスできるようにできます。
受信サービスチケット要求からの特定の Kerberos 認証インジケーターを要求するようにサービスを設定するには、次の手順に従います。
前提条件
- IdM ホストで実行しているサービスの IdM サービスエントリーを作成している。IdM サービスエントリーおよびその Kerberos キータブの作成 を参照してください。
- IdM の管理ユーザーの Ticket-Granting Ticket (TGT) を取得している。
内部 IdM サービスに認証インジケーターを割り当て ない でください。以下の IdM サービスでは、PKINIT およびマルチファクター認証方式で必要なインタラクティブな認証ステップを実行できません。
host/server.example.com@EXAMPLE.COM HTTP/server.example.com@EXAMPLE.COM ldap/server.example.com@EXAMPLE.COM DNS/server.example.com@EXAMPLE.COM cifs/server.example.com@EXAMPLE.COM
手順
ipa service-mod
コマンドを使用して、サービスに必要な認証インジケーターを--auth-ind
引数で識別して指定します。認証方法 --auth-ind
値2 要素認証
otp
radius 認証
radius
PKINIT 、スマートカード、または証明書での認証
pkinit
強化パスワード (SPAKE または FAST)
hardened
たとえば、スマートカードまたは OTP 認証で認証したユーザーには
client.example.com
ホストのtestservice
プリンシパルを取得させるようにするには、以下を実行します。[root@server ~]# ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind otp --auth-ind pkinit ------------------------------------------------------------- Modified service "testservice/client.example.com@EXAMPLE.COM" ------------------------------------------------------------- Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Authentication Indicators: otp, pkinit Managed by: client.example.com
サービスからすべての認証インジケーターを削除するには、インジケーターの空のリストを指定します。
[root@server ~]# ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind ''
------------------------------------------------------
Modified service "testservice/client.example.com@EXAMPLE.COM"
------------------------------------------------------
Principal name: testservice/client.example.com@EXAMPLE.COM
Principal alias: testservice/client.example.com@EXAMPLE.COM
Managed by: client.example.com
検証
ipa service-show
コマンドを使用して、必要な認証インジケーターなど、IdM サービスに関する情報を表示します。[root@server ~]# ipa service-show testservice/client.example.com Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Authentication Indicators: otp, pkinit Keytab: True Managed by: client.example.com
14.4.3. IdM Web UI を使用した IdM サービスへの認証インジケーターの関連付け
Identity Management (IdM) 管理者は、ホストまたはサービスが、クライアントアプリケーションが提示するサービスチケットを特定の認証インジケーターを含むように設定できます。たとえば、Kerberos Ticket-Granting Ticket (TGT) を取得する際に、パスワードで有効な IdM 2 要素認証トークンを使用したユーザーのみが、そのホストまたはサービスにアクセスできるようにできます。
IdM Web UI を使用して、受信チケット要求からの特定の Kerberos 認証インジケーターを要求するようにホストまたはサービスを設定するには、次の手順に従います。
前提条件
- 管理ユーザーとして IdM Web UI にログインしている。
手順
- → または → を選択します。
- 必要なホストまたはサービスの名前をクリックします。
Authentication indicators
で、必要な認証方法を選択します。-
たとえば、
OTP
を選択すると、Kerberos TGT を取得する際に、パスワードで有効な IdM 2 要素認証トークンを使用したユーザーのみが、ホストまたはサービスにアクセスできるようになります。 -
OTP
とRADIUS
の両方を選択した場合は、Kerberos TGT を取得する際に有効な IdM 二要素認証トークンとパスワードを使用したユーザー および Kerberos TGT の取得に RADIUS サーバーを使用したユーザーの両方が、アクセスを許可されます。
-
たとえば、
- ページ上部にある をクリックします。
14.4.4. IdM サービスの Kerberos サービスチケットの取得
以下の手順では、IdM サービスの Kerberos サービスチケットを取得する方法を説明します。この手順を使用して、特定の Kerberos 認証インジケーターが Ticket-Granting Ticket (TGT) に存在することを強制するなど、Kerberos チケットポリシーをテストできます。
前提条件
- 対応する IdM サービス エントリーを作成している (使用しているサービスが内部 IdM サービスではない場合)。IdM サービスエントリーおよびその Kerberos キータブの作成 を参照してください。
- Kerberos Ticket-Granting Ticket (TGT) がある。
手順
サービスチケットを取得するには、
kvno
コマンドに-S
オプションを指定して、IdM サービスの名前と管理するホストの完全修飾ドメイン名を指定します。[root@server ~]# kvno -S testservice client.example.com testservice/client.example.com@EXAMPLE.COM: kvno = 1
IdM サービスにアクセスする必要があり、現在の Ticket-Granting Ticket (TGT) に必要な Kerberos 認証インジケーターが関連付けられていない場合は、kdestroy
コマンドで現在の Kerberos 認証情報キャッシュを消去し、新しい TGT を取得します。
[root@server ~]# kdestroy
たとえば、パスワードを使用して認証し、pkinit
認証インジケーターが関連付けられた IdM サービスにアクセスする必要がある場合は、現在の認証情報キャッシュを破棄し、スマートカードで再認証します。Kerberos 認証インジケーター を参照してください。
検証
klist
コマンドを使用して、サービスチケットがデフォルトの Kerberos 認証情報キャッシュにあることを確認します。[root@server etc]# klist_ Ticket cache: KCM:1000 Default principal: admin@EXAMPLE.COM Valid starting Expires Service principal 04/01/2020 12:52:42 04/02/2020 12:52:39 krbtgt/EXAMPLE.COM@EXAMPLE.COM 04/01/2020 12:54:07 04/02/2020 12:52:39 testservice/client.example.com@EXAMPLE.COM
14.4.5. 関連情報
- Kerberos 認証インジケーター を参照してください。
14.5. グローバルチケットライフサイクルポリシーの設定
グローバルチケットポリシーは、すべてのサービスチケットとユーザーごとのチケットポリシーが定義されていないユーザーに適用されます。
以下の手順では、ipa krbtpolicy-mod
コマンドを使用して、グローバル Kerberos チケットポリシーのチケットの最大有効期間と最大更新期間を調整する方法を説明します。
ipa krbtpolicy-mod
コマンドを使用する場合は、以下の引数のいずれかを指定します。
-
--maxlife
- チケットの最大有効期間 (秒単位) -
--maxrenew
- 更新可能な最大期間 (秒単位)
手順
グローバルチケットポリシーを変更するには、以下を実行します。
[root@server ~]# ipa krbtpolicy-mod --maxlife=$((8*60*60)) --maxrenew=$((24*60*60)) Max life: 28800 Max renew: 86400
この例では、最大有効期間は 8 時間 (8 * 60 分 * 60 秒) に設定され、最大の更新可能期間は 1 日 (24 * 60 分 * 60 秒) に設定されています。
オプション: グローバルの Kerberos チケットポリシーをデフォルトのインストール値にリセットするには、以下を実行します。
[root@server ~]# ipa krbtpolicy-reset Max life: 86400 Max renew: 604800
検証
グローバルチケットポリシーを表示します。
[root@server ~]# ipa krbtpolicy-show Max life: 28800 Max renew: 86640
関連情報
- ユーザーのデフォルトチケットポリシーの設定 を参照してください。
- ユーザーの個々の認証インジケーターチケットポリシーの設定 を参照してください。
14.6. 認証インジケーターごとのグローバルチケットポリシーの設定
各認証インジケーターのグローバルのチケット最大有効期間と最大更新可能期間を調整するには、次の手順に従います。この設定は、ユーザー別のチケットポリシーが定義されていないユーザーに適用されます。
ipa krbtpolicy-mod
コマンドを使用して、それぞれに割り当てられた 認証インジケーター に合わせて、Kerberos チケットのグローバルの最大有効期間または更新可能な期間を指定します。
手順
たとえば、グローバルな 2 要素のチケットの有効期間と更新期間の値を 1 週間に、グローバルスマートカードチケットの有効期間と更新期間の値を 2 週間に設定するには以下を実行します。
[root@server ~]# ipa krbtpolicy-mod --otp-maxlife=604800 --otp-maxrenew=604800 --pkinit-maxlife=172800 --pkinit-maxrenew=172800
検証
グローバルチケットポリシーを表示します。
[root@server ~]# ipa krbtpolicy-show Max life: 86400 OTP max life: 604800 PKINIT max life: 172800 Max renew: 604800 OTP max renew: 604800 PKINIT max renew: 172800
OTP および PKINIT の値は、グローバルなデフォルトの
Max life
およびMax renew
値とは異なることに注意してください。
関連情報
-
krbtpolicy-mod
コマンドの認証インジケーターオプション を参照してください。 - ユーザーのデフォルトチケットポリシーの設定 を参照してください。
- ユーザーの個々の認証インジケーターチケットポリシーの設定 を参照してください。
14.7. ユーザーのデフォルトチケットポリシーの設定
一意の Kerberos チケットポリシーを定義して、単一のユーザーだけに適用できます。これらのユーザーごとの設定は、すべての認証インジケーターに対してグローバルチケットポリシーをオーバーライドします。
ipa krbtpolicy-mod username
コマンドを使用して、最低でも以下のいずれかの引数を指定します。
-
--maxlife
- チケットの最大有効期間 (秒単位) -
--maxrenew
- 更新可能な最大期間 (秒単位)
手順
たとえば、IdM
管理者
ユーザーの最大チケット期間を 2 日に、最大更新期間を 2 週に設定するには、次のコマンドを実行します。[root@server ~]# ipa krbtpolicy-mod admin --maxlife=172800 --maxrenew=1209600 Max life: 172800 Max renew: 1209600
オプション: ユーザーのチケットポリシーをリセットするには、以下を実行します。
[root@server ~]# ipa krbtpolicy-reset admin
検証
ユーザーに適用される有効な Kerberos チケットポリシーを表示します。
[root@server ~]# ipa krbtpolicy-show admin Max life: 172800 Max renew: 1209600
関連情報
- グローバルチケットライフサイクルポリシーの設定 を参照してください。
- 認証インジケーターごとのグローバルチケットポリシーの設定 を参照してください。
14.8. ユーザーの個別認証インジケーターチケットポリシーの設定
管理者は、ユーザーに、認証インジケーター別に異なる Kerberos チケットポリシーを定義できます。たとえば、IdM 管理者
ユーザーは、チケットを OTP 認証で取得した場合には 2 日間、スマートカード認証で取得した場合には 1 週間更新できるようにポリシーを設定できます。
これらの認証インジケーター設定は、ユーザーの デフォルトのチケットポリシー、グローバル デフォルトチケットポリシー、および グローバル 認証インジケーターチケットポリシーをオーバーライドします。
ipa krbtpolicy-mod username
コマンドを使用して、それぞれに割り当てられた 認証インジケーター に合わせて、ユーザー Kerberos チケットのカスタム最大有効期間および最大の更新可能期間を設定します。
手順
たとえば、ワンタイムパスワード認証でチケットを取得した場合に IdM
admin
ユーザーが 2 日間 Kerberos チケットを更新できるようにするには、--otp-maxrenew
オプションを設定します。[root@server ~]# ipa krbtpolicy-mod admin --otp-maxrenew=$((2*24*60*60)) OTP max renew: 172800
オプション: ユーザーのチケットポリシーをリセットするには、以下を実行します。
[root@server ~]# ipa krbtpolicy-reset username
検証
ユーザーに適用される有効な Kerberos チケットポリシーを表示します。
[root@server ~]# ipa krbtpolicy-show admin Max life: 28800 Max renew: 86640
関連情報
-
krbtpolicy-mod
コマンドの認証インジケーターオプション を参照してください。 - ユーザーのデフォルトチケットポリシーの設定 を参照してください。
- グローバルチケットライフサイクルポリシーの設定 を参照してください。
- 認証インジケーターごとのグローバルチケットポリシーの設定 を参照してください。
14.9. krbtpolicy-mod
コマンドの認証インジケーターオプション
以下の引数で認証インジケーターの値を指定します。
認証インジケーター | 最大有効期間の引数 | 最大更新期間の引数 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
第15章 IdM の Kerberos PKINIT 認証
Kerberos(PKINIT) の初期認証の公開鍵暗号化は、Kerberos の事前認証メカニズムです。Identity Management (IdM) サーバーには、Kerberos PKINIT 認証のメカニズムが含まれています。
15.1. デフォルトの PKINIT 設定
IdM サーバーのデフォルトの PKINIT 設定は、認証局 (CA) 設定によって異なります。
CA 設定 | PKINIT の設定 |
---|---|
CA なし、外部 PKINIT 証明書の提供なし | ローカル PKINIT: IdM はサーバーの内部用途でのみ PKINIT を使用します。 |
CA なし、外部 PKINIT 証明書の IdM への提供あり | IdM は、外部の Kerberos 鍵配布センター (KDC) 証明書と CA 証明書を使用して PKINIT を設定します。 |
統合 CA あり | IdM は、IdM CA が署名した証明書を使用して PKINIT を設定します。 |
15.2. 現在の PKINIT 設定の表示
IdM には、ドメインの PKINIT 設定をクエリーするのに使用できるコマンドが複数用意されています。
手順
ドメインの PKINIT のステータスを確認するには、
ipa pkinit-status
コマンドを使用します。$ ipa pkinit-status Server name: server1.example.com PKINIT status: enabled [...output truncated...] Server name: server2.example.com PKINIT status: disabled [...output truncated...]
このコマンドは、
enabled
またはdisabled
として PKINIT 設定の状態を表示します。-
Enabled
: PKINIT は、統合 IdM CA または外部 PKINIT 証明書により署名された証明書を使用して設定されます。 -
Disabled
: IdM は、IdM サーバーでの内部目的でのみ PKINIT を使用します。
-
IdM クライアントの PKINIT に対応するアクティブな Kerberos 鍵配布センター (KDC) がある IdM サーバーをリスト表示するには、任意のサーバーで
ipa config-show
コマンドを使用します。$ ipa config-show Maximum username length: 32 Home directory base: /home Default shell: /bin/sh Default users group: ipausers [...output truncated...] IPA masters capable of PKINIT: server1.example.com [...output truncated...]
15.3. IdM での PKINIT の設定
IdM サーバーが PKINIT を無効にした状態で動作している場合は、以下の手順に従って有効にします。たとえば、--no-pkinit
オプションを ipa-server-install
ユーティリティーまたは ipa-replica-install
ユーティリティーで渡した場合には、サーバーは PKINIT が無効な状態で動作します。
前提条件
- 認証局 (CA) がインストールされているすべての IdM サーバーが、同じドメインレベルで稼働していることを確認します。
手順
PKINIT がサーバーで有効になっているかどうかを確認します。
# kinit admin Password for admin@IDM.EXAMPLE.COM: # ipa pkinit-status --server=server.idm.example.com 1 server matched ---------------- Server name: server.idm.example.com PKINIT status:enabled ---------------------------- Number of entries returned 1 ----------------------------
PKINIT が無効になっている場合は、次の出力が表示されます。
# ipa pkinit-status --server server.idm.example.com ----------------- 0 servers matched ----------------- ---------------------------- Number of entries returned 0 ----------------------------
--server <server_fqdn>
パラメーターを省略することで、このコマンドを使用して、PKINIT が有効になっているすべてのサーバーを検索することもできます。CA なしで IdM を使用している場合は、以下の手順を実行します。
IdM サーバーに、Kerberos Key Distribution Center (KDC) 証明書に署名した CA 証明書をインストールします。
# ipa-cacert-manage install -t CT,C,C ca.pem
すべての IPA ホストを更新するには、すべてのレプリカとクライアントで
ipa-certupdate
コマンドを繰り返し実行します。# ipa-certupdate
ipa-cacert-manage list
コマンドを使用して、CA 証明書がすでに追加されているかどうかを確認します。以下に例を示します。# ipa-cacert-manage list CN=CA,O=Example Organization The ipa-cacert-manage command was successful
ipa-server-certinstall
ユーティリティーを使用して、外部 KDC 証明書をインストールします。KDC 証明書は以下の条件を満たしている必要があります。-
コモンネーム
CN=fully_qualified_domain_name,certificate_subject_base
で発行されている。 -
Kerberos プリンシパル
krbtgt/REALM_NAME@REALM_NAME
を含む。 KDC 認証のオブジェクト識別子 (OID)
1.3.6.1.5.2.3.5
を含む。# ipa-server-certinstall --kdc kdc.pem kdc.key # systemctl restart krb5kdc.service
-
コモンネーム
PKINIT のステータスを確認します。
# ipa pkinit-status Server name: server1.example.com PKINIT status: enabled [...output truncated...] Server name: server2.example.com PKINIT status: disabled [...output truncated...]
CA 証明書のある IdM を使用している場合は、次のように PKINIT を有効にします。
# ipa-pkinit-manage enable Configuring Kerberos KDC (krb5kdc) [1/1]: installing X509 Certificate for PKINIT Done configuring Kerberos KDC (krb5kdc). The ipa-pkinit-manage command was successful
IdM CA を使用している場合、コマンドは CA から PKINIT KDC 証明書を要求します。
関連情報
-
ipa-server-certinstall(1)
の man ページ
15.4. 関連情報
- Kerberos PKINIT の詳細は、MIT Kerberos ドキュメントの PKINIT 設定
第16章 IdM Kerberos キータブファイルの維持
Kerberos キータブファイルとは何か、および Identity Management (IdM) がそれを使用してサービスが Kerberos で安全に認証できるようにする方法について詳しく説明します。
この情報を使用して、これらの機密ファイルを保護する必要がある理由を理解し、IdM サービス間の通信の問題をトラブルシューティングできます。
詳細は、以下のトピックを参照してください。
16.1. Identity Management が Kerberos キータブファイルを使用する方法
Kerberos キータブは、Kerberos プリンシパルとそれに対応する暗号化キーを含むファイルです。ホスト、サービス、ユーザー、およびスクリプトは、キータブを使用して、人間の介入を必要とせずに、Kerberos Key Distribution Center (KDC) に対して安全に認証することができます。
IdM サーバー上のすべての IdM サービスには、Kerberos データベースに格納された一意の Kerberos プリンシパルがあります。たとえば、IdM サーバー east.idm.example.com
および west.idm.example.com
が DNS サービスを提供する場合、IdM はこれらのサービスを識別するために 2 つの一意の DNS Kerberos プリンシパルを作成します。これらは、命名規則 <service>/host.domain.com@REALM.COM
に従います:
-
DNS/east.idm.example.com@IDM.EXAMPLE.COM
-
DNS/west.idm.example.com@IDM.EXAMPLE.COM
IdM は、Kerberos キーのローカルコピーをキーバージョン番号 (KVNO) とともに保存するために、これらのサービスごとにサーバー上にキータブを作成します。たとえば、デフォルトのキータブファイル /etc/krb5.keytab
には host
プリンシパルが格納されます。このプリンシパルは、Kerberos レルム内のそのマシンを表し、ログイン認証に使用されます。KDC は、aes256-cts-hmac-sha1-96
および aes128-cts-hmac-sha1-96
など、サポートするさまざまな暗号化アルゴリズムの暗号化キーを生成します。
klist
コマンドを使用して、キータブファイルの内容を表示できます。
[root@idmserver ~]# klist -ekt /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (aes128-cts-hmac-sha1-96) 2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (camellia128-cts-cmac) 2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (camellia256-cts-cmac)
16.2. Kerberos キータブファイルが IdM データベースと同期していることの確認
Kerberos パスワードを変更すると、IdM は対応する新しい Kerberos キーを自動的に生成し、そのキーバージョン番号 (KVNO) を増やします。Kerberos キータブが新しいキーと KVNO で更新されていない場合、そのキータブに依存して有効なキーを取得するサービスは、Kerberos キー配布センター (KDC) に対して認証できない可能性があります。
IdM サービスの 1 つが別のサービスと通信できない場合は、次の手順を使用して、Kerberos キータブファイルが IdM データベースに保存されているキーと同期していることを確認します。それらが同期していない場合は、更新されたキーと KVNO を使用して Kerberos キータブを取得します。この例では、IdM サーバーの更新された DNS
プリンシパルを比較して取得します。
前提条件
- キータブファイルを取得するには、IdM 管理者アカウントとして認証する必要がある。
-
他のユーザーが所有するキータブファイルを変更するには、
root
アカウントとして認証する必要がある。
手順
検証しているキータブでプリンシパルの KVNO を表示します。次の例では、
/etc/named.keytab
ファイルに、KVNO が 2 のDNS/server1.idm.example.com@EXAMPLE.COM
プリンシパルのキーがあります。[root@server1 ~]# klist -ekt /etc/named.keytab Keytab name: FILE:/etc/named.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96) 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia128-cts-cmac) 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia256-cts-cmac)
IdM データベースに保存されているプリンシパルの KVNO を表示します。この例では、IdM データベースのキーの KVNO がキータブの KVNO と一致しません。
[root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 3
IdM 管理者アカウントとして認証します。
[root@server1 ~]# kinit admin Password for admin@IDM.EXAMPLE.COM:
プリンシパルの更新された Kerberos キーを取得し、キータブに保存します。
root
ユーザーとしてこのステップを実行して、named
ユーザーが所有する/etc/named.keytab
ファイルを変更できるようにします。[root@server1 ~]# ipa-getkeytab -s server1.idm.example.com -p DNS/server1.idm.example.com -k /etc/named.keytab
検証
プリンシパルの更新された KVNO をキータブに表示します。
[root@server1 ~]# klist -ekt /etc/named.keytab Keytab name: FILE:/etc/named.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96) 4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96) 4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia128-cts-cmac) 4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia256-cts-cmac)
IdM データベースに保存されているプリンシパルの KVNO を表示し、キータブの KVNO と一致することを確認します。
[root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 4
16.3. IdM Kerberos キータブファイルとその内容のリスト
以下の表は、IdM Kerberos キータブファイルの場所、内容、および目的を示しています。
キータブの場所 | 内容 | 目的 |
---|---|---|
|
|
ログイン時にユーザーの認証情報を確認します ( |
|
| IdM データベースに対してユーザーを認証し、IdM レプリカ間でデータベースの内容を安全に複製します。 |
|
| Apache サーバーに対して認証します。 |
|
| DNS レコードを安全に更新します。 |
|
| OpenDNSSEC と LDAP の同期を維持します。 |
|
| 認証局 (CA) と通信します。 |
|
| Samba サービスと通信します。 |
|
| IdM-AD 信頼を介して AD DC と通信します。 |
16.4. IdM マスターキーの暗号化タイプの表示
Identity Management (IdM) 管理者は、IdM マスターキーの暗号化タイプを表示できます。これは、IdM Kerberos Distribution Center (KDC) が保存時に他のすべてのプリンシパルを暗号化するために使用するキーです。暗号化の種類を知ることで、デプロイメントの FIPS 標準との互換性を判断するのに役立ちます。
RHEL 8.7 の時点で、暗号化タイプは aes256-cts-hmac-sha384-192
です。この暗号化タイプは、FIPS 140-3 への準拠を目的としたデフォルトの RHEL 9 FIPS 暗号化ポリシーと互換性があります。
以前の RHEL バージョンで使用されていた暗号化タイプは、FIPS 140-3 標準に準拠する RHEL 9 システムと互換性がありません。FIPS モードの RHEL 9 システムを RHEL 8 FIPS 140-2 デプロイメントと互換性を持たせるには、RHEL 9 システムで FIPS:AD-SUPPORT
暗号化ポリシーを有効にします。
Microsoft の Active Directory 実装は、SHA-2 HMAC を使用する RFC8009 Kerberos 暗号化タイプをまだサポートしていません。したがって、IdM-AD 信頼が設定されている場合、IdM マスターキーの暗号化タイプが aes256-cts-hmac-sha384-192
であっても、FIPS:AD-SUPPORT 暗号サブポリシーの使用が必要になります。
前提条件
-
IdM デプロイメント内の RHEL 8 レプリカのいずれかに
root
アクセス権がある。
手順
レプリカで、コマンドラインインターフェイスで暗号化の種類を表示します。
# kadmin.local getprinc K/M | grep -E '^Key:' Key: vno 1, aes256-cts-hmac-sha1-96
出力の
aes256-cts-hmac-sha1-96
キーは、IdM デプロイメントが RHEL 8.6 以前を実行しているサーバーにインストールされたことを示しています。出力にaes256-cts-hmac-sha384-192
キーが存在する場合、IdM デプロイメントが RHEL 8.7 以降を実行しているサーバーにインストールされたことを示します。
第17章 IdM 環境でのパスキー認証の有効化
Fast IDentity Online 2 (FIDO2) 標準は、公開鍵暗号化をベースとしており、PIN または生体認証を使用したパスワードレスのフローを選択肢として追加するものです。IdM 環境でのパスキー認証では、libfido2
ライブラリーでサポートされている FIDO2 互換デバイスが使用されます。
パスキー認証方式は、PIN または指紋を必要とするパスワードレス認証と多要素認証 (MFA) を組み込むことで、規制標準に準拠するための追加のセキュリティーレイヤーを提供します。Identity Management (IdM) 環境でのパスキーデバイスとパスキー有効化など、特殊なハードウェアとソフトウェアの組み合わせを使用して、データ保護が重要な環境でセキュリティーを強化します。
システムが IdM 環境のネットワークに接続されている場合、パスキー認証方法によって Kerberos チケットが自動的に発行され、IdM ユーザーのシングルサインオン (SSO) が有効になります。
パスキーを使用すると、オペレーティングシステムのグラフィカルインターフェイスを介して認証できます。システムでパスキーとパスワードによる認証が許可されている場合は、キーボードの Space を押してから Enter キーを押すことで、パスキー認証をスキップし、パスワードで認証することができます。GNOME デスクトップマネージャー (GDM) を使用する場合は、Enter を押してパスキー認証を回避できます。
現在、IdM 環境のパスキー認証では、特定のパスキーデバイスの識別を可能にする FIDO2 アテステーションメカニズムがサポートされていないことに注意してください。
次の手順では、IdM 環境でパスキー認証を管理および設定する方法について説明します。
17.1. 前提条件
- パスキーデバイスを用意する。
fido2-tools
パッケージをインストールする。# dnf install fido2-tools
パスキーデバイスの PIN を設定する。
- パスキーデバイスを USB ポートに接続します。
接続されているパスキーデバイスをリスト表示します。
# fido2-token -L
コマンドプロンプトに従って、パスキーデバイスの PIN を設定します。
# fido2-token -C passkey_device
-
sssd-passkey
パッケージがインストール済みである。
17.2. パスキーデバイスの登録
ユーザーはパスキーデバイスを使用して認証を設定できます。パスキーデバイスは、YubiKey 5 NFC などのあらゆる FIDO2 仕様デバイスと互換性があります。この認証方法を設定するには、以下の手順に従ってください。
前提条件
- パスキーデバイスの PIN が設定されている。
IdM ユーザーに対してパスキー認証が有効になっている。
# ipa user-add user01 --first=user --last=01 --user-auth-type=passkey
既存の IdM ユーザーに対しては、上記と同じ
--user-auth-type=passkey
パラメーターを指定したipa user-mod
を使用します。- ユーザーが認証する物理マシンにアクセスできる。
手順
- パスキーデバイスを USB ポートに挿入します。
IdM ユーザーのパスキーを登録します。
# ipa user-add-passkey user01 --register
アプリケーションのプロンプトに従います。
- パスキーデバイスの PIN を入力します。
- デバイスをタッチしてアイデンティティー確認を行います。生体認証デバイスを使用している場合は、必ずデバイスの登録に使用したのと同じ指を使用します。
複数の場所またはデバイスからの認証を可能にするバックアップ手段として、複数のパスキーデバイスを設定することを推奨します。認証中に Kerberos チケットが発行されるようにするために、ユーザーに 12 個を超えるパスキーデバイスを設定することは避けてください。
検証
パスキー認証を使用するように設定したユーザー名でシステムにログインします。パスキーデバイスを挿入するよう求めるプロンプトが表示されます。
Insert your passkey device, then press ENTER.
パスキーデバイスを USB ポートに挿入し、プロンプトが表示されたら PIN を入力します。
Enter PIN: Creating home directory for user01@example.com.
Kerberos チケットが発行されたことを確認します。
$ klist Default principal: user01@IPA.EXAMPLE.COM
パスキー認証をスキップするには、プロンプトに任意の文字を入力するか、ユーザー認証が有効になっている場合は空の PIN を入力します。パスワードベースの認証にリダイレクトされます。
17.3. 認証ポリシー
認証ポリシーは、利用可能なオンライン認証方法とローカル認証方法を設定するために使用します。
- オンライン接続を使用した認証
- サービスがサーバー側で提供するオンライン認証方法をすべて使用します。IdM、AD、または Kerberos サービスの場合、デフォルトの認証方法は Kerberos です。
- オンライン接続なしでの認証
-
ユーザーが利用できる認証方法を使用します。
local_auth_policy
オプションを使用して認証方法を調整できます。
使用可能なオンラインおよびオフライン認証方法を設定するには、/etc/sssd/sssd.conf
ファイルの local_auth_policy
オプションを使用します。デフォルトでは、サービスのサーバー側でサポートされている方法のみを使用して認証が実行されます。次の値を使用してポリシーを調整できます。
-
match
値は、オフラインとオンラインの状態のマッチングを有効にします。たとえば、IdM サーバーがオンラインパスキー認証をサポートしている場合にmatch
を使用すると、パスキー方式のオフライン認証とオンライン認証が有効になります。 -
only
値は、オフラインの方法のみを提供し、オンラインの方法は無視します。 -
enable
およびdisable
値は、オフライン認証の方法を明示的に定義します。たとえば、enable:passkey
は、オフライン認証のパスキーのみを有効にします。
次の設定例では、ローカルユーザーがスマートカード認証を使用してローカルで認証できるようにします。
[domain/shadowutils] id_provider = proxy proxy_lib_name = files auth_provider = none local_auth_policy = only
local_auth_policy
オプションは、パスキー認証方法とスマートカード認証方法に適用されます。
17.4. パスキーユーザーとして IdM チケット許可チケットを取得する
パスキーユーザーとして Kerberos TGT (Ticket-granting ticket) を取得するには、匿名の Kerberos チケットを要求し、Secure Tunneling (FAST) チャネルを介したフレキシブル認証を有効にして、Kerberos クライアントと Kerberos ディストリビューションセンター (KDC) 間のセキュアな接続を提供します。
前提条件
- IdM クライアントと IdM サーバーが RHEL 9.1 以降を使用している。
- IdM クライアントと IdM サーバーが SSSD 2.7.0 以降を使用している。
- パスキーデバイスを登録し、認証ポリシーを設定した。
手順
次のコマンドを実行して認証情報キャッシュを初期化します。
[root@client ~]# kinit -n @IDM.EXAMPLE.COM -c FILE:armor.ccache
このコマンドは、新しい Kerberos チケットを要求するたびに指定する必要がある armor.ccache ファイルを作成することに注意してください。
次のコマンドを実行して Kerberos チケットを要求します。
[root@client ~]# kinit -T FILE:armor.ccache <username>@IDM.EXAMPLE.COM Enter your PIN:
検証
Kerberos チケット情報を表示します。
[root@client ~]# klist -C Ticket cache: KCM:0:58420 Default principal: <username>@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes 08/17/2022 20:22:45 08/18/2022 20:22:43 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 153
pa_type = 153
は、パスキー認証を示します。
第18章 IdM での KDC プロキシーの使用
一部の管理者は、デプロイメントでデフォルトの Kerberos ポートにアクセスできないようにすることを選択する場合があります。ユーザー、ホスト、およびサービスが Kerberos 認証情報を取得できるようにするために、HTTPS
ポート 443 を介して Kerberos と通信するプロキシーとして HTTPS
サービスを使用できます。
Identity Management (IdM) では、Kerberos Key Distribution Center Proxy (KKDCP) がこの機能を提供します。
IdM サーバーでは、KKDCP はデフォルトで有効で、https://server.idm.example.com/KdcProxy
で利用できます。IdM クライアントでは、KDCP にアクセスするために、その Kerberos 設定を変更する必要があります。
18.1. KKDCP を使用するための IdM クライアントの設定
Identity Management (IdM) システム管理者は、IdM サーバーで Kerberos Key Distribution Center Proxy (KKDCP) を使用するように IdM クライアントを設定できます。これは、デフォルトの Kerberos ポートが IdM サーバーでアクセスできず、HTTPS
ポート 443 が Kerberos サービスにアクセスする唯一の方法である場合に役立ちます。
前提条件
-
IdM クライアントへの
root
アクセス権限がある。
手順
-
/etc/krb5.conf
ファイルを開いて編集します。 [realms]
セクションで、kdc
、admin_server
、およびkpasswd_server
オプションの KKDCP の URL を入力します。[realms] EXAMPLE.COM = { kdc = https://kdc.example.com/KdcProxy admin_server = https://kdc.example.com/KdcProxy kpasswd_server = https://kdc.example.com/KdcProxy default_domain = example.com }
冗長性の場合は、パラメーター
kdc
、admin_server
、およびkpasswd_server
を複数回追加して、別の KDCP サーバーを示すことができます。sssd
を再起動して、変更を有効にします。~]# systemctl restart sssd
18.2. IdM サーバーで KKDCP が有効になっていることの確認
Identity Management (Id M) サーバーでは、属性と値のペア ipaConfigString=kdcProxyEnabled
がディレクトリーに存在する場合、Apache Web サーバーが起動するたびに Kerberos Key Distribution Center Proxy (KKDCP) が自動的に有効になります。この場合は、シンボリックリンク /etc/httpd/conf.d/ipa-kdc-proxy.conf
が作成されます。
非特権ユーザーであっても、IdM サーバーで KKDCP が有効になっているかどうかを確認できます。
手順
- シンボリックリンクが存在することを確認します。
$ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf
lrwxrwxrwx. 1 root root 36 Jun 21 2020 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf
この出力は、KKDCP が有効になっていることを確認します。
18.3. IdM サーバーでの KDCP の無効化
Identity Management (IdM) システム管理者は、IdM サーバーで Kerberos Key Distribution Center Proxy (KKDCP) を無効にできます。
前提条件
-
IdM サーバーへの
root
アクセス権限がある。
手順
ディレクトリーから
ipaConfigString=kdcProxyEnabled
属性と値のペアを削除します。# ipa-ldap-updater /usr/share/ipa/kdcproxy-disable.uldif Update complete The ipa-ldap-updater command was successful
httpd
サービスを再起動します。# systemctl restart httpd.service
現在の IdM サーバーで、KDCP が無効になりました。
検証
シンボリックリンクが存在しないことを確認します。
$ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf ls: cannot access '/etc/httpd/conf.d/ipa-kdc-proxy.conf': No such file or directory
18.4. IdM サーバーでの KDCP の再有効化
IdM サーバーでは、Kerberos Key Distribution Center Proxy (KKDCP) はデフォルトで有効で、https://server.idm.example.com/KdcProxy
で利用できます。
KDCP がサーバーで無効になっている場合は、再度有効にできます。
前提条件
-
IdM サーバーへの
root
アクセス権限がある。
手順
ipaConfigString=kdcProxyEnabled
属性と値のペアをディレクトリーに追加します。# ipa-ldap-updater /usr/share/ipa/kdcproxy-enable.uldif Update complete The ipa-ldap-updater command was successful
httpd
サービスを再起動します。# systemctl restart httpd.service
現在の IdM サーバーで KDCP が有効になりました。
検証
シンボリックリンクが存在することを確認します。
$ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf lrwxrwxrwx. 1 root root 36 Jun 21 2020 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf
18.5. KKDCP サーバー I の設定
以下の設定により、複数の Kerberos サーバーが使用される IdM KKDCP と Active Directory (AD) レルム間のトランスポートプロトコルとして TCP を使用できるようになります。
前提条件
-
root
アクセスがある。
手順
/etc/ipa/kdcproxy/kdcproxy.conf
ファイルの[global]
セクションにあるuse_dns
パラメーターを false に設定します。[global] use_dns = false
プロキシーされたレルム情報を
/etc/ipa/kdcproxy/kdcproxy.conf
ファイルに入れます。たとえば、プロキシーを使用する [AD.EXAMPLE.COM] レルムの場合、次のようにレルム設定パラメーターをリスト表示します。[AD.EXAMPLE.COM] kerberos = kerberos+tcp://1.2.3.4:88 kerberos+tcp://5.6.7.8:88 kpasswd = kpasswd+tcp://1.2.3.4:464 kpasswd+tcp://5.6.7.8:464
重要特定のオプションが複数回指定される可能性がある
/etc/krb5.conf
およびkdc.conf
とは対照的に、レルム設定パラメーターは、スペースで区切られた複数のサーバーをリストする必要があります。Identity Management (IdM) サービスを再起動します。
# ipactl restart
関連情報
- Red Hat ナレッジベースの Configure IPA server as a KDC Proxy for AD Kerberos communication を参照してください。
18.6. KKDCP サーバー II の設定
次のサーバー設定は、DNS サービスレコードに依存して、通信する Active Directory (AD) サーバーを検索します。
前提条件
-
root
アクセスがある。
手順
/etc/ipa/kdcproxy/kdcproxy.conf
ファイルの[global]
セクションで、use_dns
パラメーターを true に設定します。[global] configs = mit use_dns = true
configs
パラメーターを使用すると、他の設定モジュールをロードできます。この場合、設定は MITlibkrb5
ライブラリーから読み取られます。オプション: DNS サービスレコードを使用しない場合は、
/etc/krb5.conf
ファイルの[realms]
セクションに明示的な AD サーバーを追加します。たとえば、プロキシーを使用するレルムが AD.EXAMPLE.COM の場合は、以下を追加します。[realms] AD.EXAMPLE.COM = { kdc = ad-server.ad.example.com kpasswd_server = ad-server.ad.example.com }
Identity Management (IdM) サービスを再起動します。
# ipactl restart
関連情報
- Red Hat ナレッジベースの Configure IPA server as a KDC Proxy for AD Kerberos communication を参照してください。
第19章 CLI を使用した IdM でのセルフサービスルールの管理
Identity Management (IdM) のセルフサービスルールと、コマンドラインインターフェイス (CLI) でセルフサービスアクセスルールを作成および編集する方法について説明します。
19.1. IdM でのセルフサービスアクセス制御
セルフサービスのアクセス制御ルールは、Identity Management (IdM) エンティティーが IdM Directory Server エントリーで実行できる操作を定義します (例: IdM ユーザーが独自のパスワードを更新できるなど)。
この制御方法では、認証された IdM エンティティーがその LDAP エントリー内の特定の属性を編集できますが、エントリー全体での 追加
や 削除
の操作は許可されません。
セルフサービスのアクセス制御規則を使用する場合は注意が必要です。アクセス制御ルールを誤って設定すると、エンティティーの特権が誤って昇格する可能性があります。
19.2. CLI を使用したセルフサービスルールの作成
コマンドラインインターフェイス (CLI) を使用して IdM でセルフサービスアクセスルールを作成するには、次の手順に従います。
前提条件
- IdM、または ユーザー管理者 ロールを管理する管理者権限
- 有効な Kerberos チケット。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
セルフサービスルールを追加するには、
ipa selfservice-add
コマンドを使用して、以下の 2 つのオプションを指定します。--permissions
- アクセス制御命令 (ACI) が付与する 読み取り パーミッションおよび 書き込み パーミッションを設定します。
--attrs
- ACI がパーミッションを付与する属性の完全なリストを設定します。
たとえば、セルフサービスルールを作成して、ユーザーが独自の名前の詳細を変更できるようにするには、次のコマンドを実行します。
$ ipa selfservice-add "Users can manage their own name details" --permissions=write --attrs=givenname --attrs=displayname --attrs=title --attrs=initials ----------------------------------------------------------- Added selfservice "Users can manage their own name details" ----------------------------------------------------------- Self-service name: Users can manage their own name details Permissions: write Attributes: givenname, displayname, title, initials
19.3. CLI を使用したセルフサービスルールの編集
コマンドラインインターフェイス (CLI) を使用して IdM でセルフサービスアクセスルールを編集するには、次の手順に従います。
前提条件
- IdM、または ユーザー管理者 ロールを管理する管理者権限
- 有効な Kerberos チケット。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
-
オプション:
ipa selfservice-find
コマンドを使用して既存のセルフサービスルールを表示します。 -
オプション:
ipa selfservice-show
コマンドを使用して、変更するセルフサービスルールの詳細を表示します。 -
ipa selfservice-mod
コマンドを使用してセルフサービスルールを編集します。
以下に例を示します。
$ ipa selfservice-mod "Users can manage their own name details" --attrs=givenname --attrs=displayname --attrs=title --attrs=initials --attrs=surname -------------------------------------------------------------- Modified selfservice "Users can manage their own name details" -------------------------------------------------------------- Self-service name: Users can manage their own name details Permissions: write Attributes: givenname, displayname, title, initials
ipa selfservice-mod
コマンドを使用すると、以前に定義されたパーミッションと属性が上書きされるため、定義する必要のある新しいパーミッションおよび属性と共に、既存のパーミッションおよび属性の完全なリストも常に含めるようにしてください。
検証
-
ipa selfservice-show
コマンドを使用して、編集したセルフサービスルールを表示します。
$ ipa selfservice-show "Users can manage their own name details" -------------------------------------------------------------- Self-service name: Users can manage their own name details Permissions: write Attributes: givenname, displayname, title, initials
19.4. CLI を使用したセルフサービスルールの削除
コマンドラインインターフェイス (CLI) を使用して IdM でセルフサービスアクセスルールを削除するには、次の手順に従います。
前提条件
- IdM、または ユーザー管理者 ロールを管理する管理者権限
- 有効な Kerberos チケット。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
-
ipa selfservice-del
コマンドを使用してセルフサービスルールを削除します。
以下に例を示します。
$ ipa selfservice-del "Users can manage their own name details" ----------------------------------------------------------- Deleted selfservice "Users can manage their own name details" -----------------------------------------------------------
検証
-
ipa selfservice-find
コマンドを使用して、すべてのセルフサービスルールを表示します。削除したばかりのルールがなくなっているはずです。
第20章 IdM Web UI を使用したセルフサービスルールの管理
Identity Management (IdM) のセルフサービスルールと、Web インターフェイス (IdM Web UI) でセルフサービスアクセスルールを作成および編集する方法について説明します。
20.1. IdM でのセルフサービスアクセス制御
セルフサービスのアクセス制御ルールは、Identity Management (IdM) エンティティーが IdM Directory Server エントリーで実行できる操作を定義します (例: IdM ユーザーが独自のパスワードを更新できるなど)。
この制御方法では、認証された IdM エンティティーがその LDAP エントリー内の特定の属性を編集できますが、エントリー全体での 追加
や 削除
の操作は許可されません。
セルフサービスのアクセス制御規則を使用する場合は注意が必要です。アクセス制御ルールを誤って設定すると、エンティティーの特権が誤って昇格する可能性があります。
20.2. IdM Web UI を使用したセルフサービスルールの作成
Web インターフェイス (IdM Web UI) を使用して IdM でセルフサービスアクセスルールを作成するには、次の手順に従います。
前提条件
- IdM、または ユーザー管理者 ロールを管理する管理者権限
- IdM Web UI にログインしている。詳細は、Web ブラウザーでの IdM Web UI へのアクセス を参照してください。
手順
- IPA Server タブで Role-Based Access Control サブメニューを開き、Self Service Permissions を選択します。
セルフサービスアクセスルールの一覧の右上にある Add をクリックします。
Add Self Service Permission ウィンドウが開きます。Self-service name フィールドに新しいセルフサービスルールの名前を入力します。空白を使用できます。
- ユーザーによる編集を可能にする属性の横にあるチェックボックスを選択します。
オプション: アクセス可能にする属性がリストにない場合は、その属性をリストに追加できます。
- Add ボタンをクリックします。
- 以下の Add Custom Attribute ウィンドウの Attribute テキストフィールドに属性名を入力します。
- OK ボタンをクリックして属性を追加します。
- 新しい属性が選択されていることを確認します。
-
フォームの下部にある Add ボタンをクリックして、新しいセルフサービスルールを保存します。
または、Add and Edit ボタンをクリックしてセルフサービスルールを編集するか、Add and Add another ボタンをクリックしてさらにルールを保存および追加できます。
20.3. IdM Web UI を使用したセルフサービスルールの編集
Web インターフェイス (IdM Web UI) を使用して IdM でセルフサービスアクセスルールを編集するには、次の手順に従います。
前提条件
- IdM、または ユーザー管理者 ロールを管理する管理者権限
- IdM Web UI にログインしている。詳細は、Web ブラウザーでの IdM Web UI へのアクセス を参照してください。
手順
- IPA Server タブで Role-Based Access Control サブメニューを開き、Self Service Permissions を選択します。
変更するセルフサービスルールの名前をクリックします。
- 編集ページでは、セルフサービスルールに追加または削除する属性のリストの編集だけが可能です。適切なチェックボックスを選択または選択解除します。
- Save ボタンをクリックして、セルフサービスルールへの変更を保存します。
20.4. IdM Web UI を使用したセルフサービスルールの削除
Web インターフェイス (IdM Web UI) を使用して IdM のセルフサービスアクセスルールを削除するには、次の手順に従います。
前提条件
- IdM、または ユーザー管理者 ロールを管理する管理者権限
- IdM Web UI にログインしている。詳細は、Web ブラウザーでの IdM Web UI へのアクセス を参照してください。
手順
- IPA Server タブで Role-Based Access Control サブメニューを開き、Self Service Permissions を選択します。
削除するルールの横にあるチェックボックスを選択し、リストの右側にある Delete ボタンをクリックします。
- ダイアログが開き、Delete をクリックして確認します。
第21章 Ansible Playbook を使用した IdM でのセルフサービスルールの管理
本セクションでは、Identity Management (IdM) のセルフサービスルールを紹介し、Ansible Playbook を使用してセルフサービスアクセスルールを作成および編集する方法を説明します。セルフサービスのアクセス制御ルールにより、IdM エンティティーは IdM Directory Server エントリーで指定の操作を実行できます。
21.1. IdM でのセルフサービスアクセス制御
セルフサービスのアクセス制御ルールは、Identity Management (IdM) エンティティーが IdM Directory Server エントリーで実行できる操作を定義します (例: IdM ユーザーが独自のパスワードを更新できるなど)。
この制御方法では、認証された IdM エンティティーがその LDAP エントリー内の特定の属性を編集できますが、エントリー全体での 追加
や 削除
の操作は許可されません。
セルフサービスのアクセス制御規則を使用する場合は注意が必要です。アクセス制御ルールを誤って設定すると、エンティティーの特権が誤って昇格する可能性があります。
21.2. Ansible を使用してセルフサービスルールを存在させる手順
以下の手順では、Ansible Playbook を使用してセルフサービスルールを定義し、Identity Management (IdM) サーバーに存在させる方法を説明します。この例では、ユーザーが自分の名前の情報を管理できる 新しいルールでは、ユーザーに、自分の givenname
、displayname
、title
、および initials
属性を変更できるよ権限を付与します。たとえば、表示名や初期などを変更することができます。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/selfservice/
ディレクトリーにあるselfservice-present.yml
のコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-present.yml selfservice-present-copy.yml
-
Ansible Playbook ファイル (
selfservice-present-copy.yml
) を開きます。 ipaselfservice
タスクセクションに以下の変数を設定してファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、新しいセルフサービスルールの名前に設定します。 -
permission
変数は、付与するパーミッションをコンマ区切りのリスト (read
およびwrite
) で設定します。 -
attribute
変数は、ユーザーが管理できる属性 (givenname
、displayname
、title
、およびinitials
) をリストとして設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Self-service present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure self-service rule "Users can manage their own name details" is present ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" permission: read, write attribute: - givenname - displayname - title - initials
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-present-copy.yml
関連情報
- IdM でのセルフサービスアクセス制御 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-selfservice.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/selfservice
ディレクトリーを参照してください。
21.3. Ansible を使用してセルフサービスルールがないことを確認する手順
以下の手順では、Ansible Playbook を使用して、指定したセルフサービスルールが IdM 設定に存在しないことを確認する方法を説明します。以下の例では、ユーザーが自分の名前の詳細 のセルフサービスルールが IdM に存在しないことを確認する方法を説明します。これにより、ユーザーは自分の表示名や初期などを変更できないようにします。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/selfservice/
ディレクトリーにあるselfservice-absent.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-absent.yml selfservice-absent-copy.yml
-
Ansible Playbook ファイル (
selfservice-absent-copy.yml
) を開きます。 ipaselfservice
タスクセクションに以下の変数を設定してファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、セルフサービスルールの名前に設定します。 -
state
変数はabsent
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Self-service absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure self-service rule "Users can manage their own name details" is absent ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" state: absent
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-absent-copy.yml
関連情報
- IdM でのセルフサービスアクセス制御 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-selfservice.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/selfservice
ディレクトリーのサンプルの Playbook を参照してください。
21.4. Ansible を使用してセルフサービスルールに固有の属性を含める手順
以下の手順では、Ansible Playbook を使用して、既存のセルフサービスルールに特定の設定を追加する方法を説明します。この例では、ユーザーは自分の名前詳細を管理できる のセルフサービスルールに、surname
のメンバー属性が含まれるようにします。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。 - ユーザーが独自の名前の詳細 セルフサービスルールが IdM に存在する。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/selfservice/
ディレクトリーにあるselfservice-member-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-member-present.yml selfservice-member-present-copy.yml
-
Ansible Playbook ファイル (
selfservice-member-present-copy.yml
) を開きます。 ipaselfservice
タスクセクションに以下の変数を設定してファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、変更するセルフサービスルールの名前に設定します。 -
attribte
変数はsurname
に設定します。 -
action
変数はmember
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Self-service member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure selfservice "Users can manage their own name details" member attribute surname is present ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" attribute: - surname action: member
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-present-copy.yml
関連情報
- IdM でのセルフサービスアクセス制御 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーで利用可能なREADME-selfservice.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/selfservice
ディレクトリーのサンプルの Playbook を参照してください。
21.5. Ansible を使用してセルフサービスルールに固有の属性を含めいないようにする手順
以下の手順では、Ansible Playbook を使用して、セルフサービスルールに特定の設定が割り当てられないようにする方法を説明します。この Playbook を使用して、セルフサービスルールで不必要なアクセス権限を付与しないようにします。この例では、ユーザーが独自の名前の詳細を管理できる セルフサービスルールに givenname
と surname
のメンバー属性が含まれないようにします。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成している (この例の場合)。
-
この例では、secret.yml Ansible vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。 - ユーザーが独自の名前の詳細 セルフサービスルールが IdM に存在する。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/selfservice/
ディレクトリーにあるselfservice-member-absent.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-member-absent.yml selfservice-member-absent-copy.yml
-
Ansible Playbook ファイル (
selfservice-member-absent-copy.yml
) を開きます。 ipaselfservice
タスクセクションに以下の変数を設定してファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、変更するセルフサービスルールの名前に設定します。 -
属性
変数はgivenname
およびsurname
に設定します。 -
action
変数はmember
に設定します。 -
state
変数はabsent
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Self-service member absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure selfservice "Users can manage their own name details" member attributes givenname and surname are absent ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" attribute: - givenname - surname action: member state: absent
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-absent-copy.yml
関連情報
- IdM でのセルフサービスアクセス制御 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-selfservice.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/selfservice
ディレクトリーのサンプルの Playbook を参照してください。
第22章 IdM CLI でのユーザーグループの管理
本章では、IdM CLI を使用したユーザーグループ管理について説明します。
ユーザーグループは、共通の特権、パスワードポリシーなどの特性が指定された一連のユーザーです。
Identity Management (IdM) のユーザーグループには以下が含まれます。
- IdM ユーザー
- 他の IdM ユーザーグループ
- 外部ユーザー (IdM の外部に存在するユーザー)
22.1. IdM のさまざまなグループタイプ
IdM は、以下のグループタイプをサポートします。
- POSIX グループ (デフォルト)
POSIX グループは、メンバーの Linux POSIX 属性に対応します。Active Directory と対話するグループは POSIX 属性を使用できないことに注意してください。
POSIX 属性は、ユーザーを個別のエンティティーとして識別します。ユーザーに関連する POSIX 属性の例には、
uidNumber
(ユーザー番号 (UID))、およびgidNumber
(グループ番号 (GID)) が含まれます。- 非 POSIX グループ
非 POSIX グループは、POSIX 属性に対応していません。たとえば、これらのグループには GID が定義されていません。
このタイプのグループのすべてのメンバーは、IdM ドメインに属している必要があります。
- 外部グループ
外部グループを使用して、以下のような IdM ドメイン外の ID ストアに存在するグループメンバーを追加できます。
- ローカルシステム
- Active Directory ドメイン
- ディレクトリーサービス
外部グループは、POSIX 属性に対応していません。たとえば、これらのグループには GID が定義されていません。
グループ名 | デフォルトのグループメンバー |
---|---|
| すべての IdM ユーザー |
|
管理権限を持つユーザー (デフォルトの |
| 特権のないレガシーグループ |
| Active Directory 信頼を管理する権限を持つユーザー |
ユーザーをユーザーグループに追加すると、ユーザーはグループに関連付けられた権限とポリシーを取得します。たとえば、ユーザーに管理権限を付与するには、ユーザーを admins
グループに追加します。
admins
グループを削除しないでください。admins
は IdM で必要な事前定義グループであるため、この操作では特定のコマンドで問題が生じます。
さらに、IdM で新しいユーザーが作成されるたびに、IdM は、デフォルトで ユーザーのプライベートグループ を作成します。プライベートグループの詳細は、プライベートグループのないユーザーの追加 を参照してください。
22.2. 直接および間接のグループメンバー
IdM のユーザーグループ属性は、直接メンバーと間接メンバーの両方に適用されます。グループ B がグループ A のメンバーである場合、グループ B のすべてのユーザーはグループ A の間接メンバーと見なされます。
たとえば、以下の図の場合:
- ユーザー 1 とユーザー 2 は、グループ A の 直接メンバー です。
- ユーザー 3、ユーザー 4、およびユーザー 5 は、グループ A の 間接メンバー です。
図22.1 直接および間接グループメンバーシップ
ユーザーグループ A にパスワードポリシーを設定すると、そのポリシーはユーザーグループ B のすべてのユーザーにも適用されます。
22.3. IdM CLI を使用したユーザーグループの追加
IdM CLI を使用してユーザーグループを追加するには、次の手順に従います。
前提条件
- 管理者としてログインしている。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
ipa group-add group_name
コマンドを使用してユーザーグループを追加します。たとえば、group_a を作成するには、次のコマンドを実行します。$ ipa group-add group_a --------------------- Added group "group_a" --------------------- Group name: group_a GID: 1133400009
デフォルトでは、
ipa group-add
は、POSIX ユーザーグループを追加します。別のグループタイプを指定するには、ipa group-add
にオプションを追加します。-
--nonposix
は、非 POSIX グループを作成します。 --external
は、外部グループを作成します。グループタイプの詳細は、IdM のさまざまなグループタイプ を参照してください。
ユーザーグループの追加時にカスタムの GID を指定するには、
--gid=custom_GID
オプションを使用します。これを行う場合は、ID の競合を避けるように注意してください。カスタム GID を指定しない場合、IdM は使用可能な ID 範囲から GID を自動的に割り当てます。-
22.4. IdM CLI を使用したユーザーグループの検索
IdM CLI を使用して既存のユーザーグループを検索するには、次の手順に従います。
手順
ipa group-find
コマンドを使用して、すべてのユーザーグループを表示します。グループタイプを指定するには、ipa group-find
にオプションを追加します。-
ipa group-find --posix
コマンドを使用して、すべての POSIX グループを表示します。 -
ipa group-find --nonposix
コマンドを使用して、すべての非 POSIX グループを表示します。 ipa group-find --external
コマンドを使用して、すべての外部グループを表示します。異なるグループタイプの詳細は、IdM のさまざまなグループタイプ を参照してください。
-
22.5. IdM CLI を使用したユーザーグループの削除
IdM CLI を使用してユーザーグループを削除するには、には、次の手順に従います。グループを削除しても、IdM からグループメンバーは削除されないことに注意してください。
前提条件
- 管理者としてログインしている。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
ipa group-del group_name
コマンドを使用してユーザーグループを削除します。たとえば、group_a を削除するには、次のコマンドを実行します。$ ipa group-del group_a -------------------------- Deleted group "group_a" --------------------------
22.6. IdM CLI でユーザーグループにメンバーの追加
ユーザーおよびユーザーグループの両方をユーザーグループのメンバーとして追加できます。詳細は、IdM のさまざまなグループタイプ および 直接および間接のグループメンバー を参照してください。IdM CLI を使用してユーザーグループにメンバーを追加するには、次の手順に従います。
前提条件
- 管理者としてログインしている。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
ipa group-add-member
コマンドを使用して、ユーザーグループにメンバーを追加します。次のオプションを使用して、メンバーのタイプを指定します。
-
--users
は、IdM ユーザーを追加します -
--external
は、DOMAIN\user_name
形式またはuser_name@domain
形式で、IdM ドメイン外に存在するユーザーを追加します -
--groups
は、IdM ユーザーグループを追加します。
たとえば、group_b を group_a のメンバーとして追加するには、次のコマンドを実行します。
$ ipa group-add-member group_a --groups=group_b Group name: group_a GID: 1133400009 Member users: user_a Member groups: group_b Indirect Member users: user_b ------------------------- Number of members added 1 -------------------------
group_b のメンバーは、group_a の間接メンバーになりました。
-
グループを別のグループのメンバーとして追加する場合は、再帰グループを作成しないでください。たとえば、グループ A がグループ B のメンバーである場合は、グループ B をグループ A のメンバーとして追加しないでください。再帰的なグループにより予期しない動作が発生する可能性があります。
ユーザーグループにメンバーを追加した後、更新が Identity Management 環境のすべてのクライアントに広がるまでに時間がかかる場合があります。これは、特定のホストがユーザー、グループ、およびネットグループを解決するときに、System Security Services Daemon
(SSSD) が最初にキャッシュを調べて、サーバーで不足または期限切れのレコードのみを検索するためです。
22.7. ユーザープライベートグループなしでユーザーの追加
デフォルトでは、IdM で新しいユーザーが作成されるたびに、IdM がユーザーのプライベートグループ (UPG) を作成します。UPG は特定のグループタイプです。
- UPG の名前は、新しく作成されたユーザーと同じです。
- ユーザーは UPG の唯一のメンバーです。UPG には他のメンバーを含めることができません。
- プライベートグループの GID は、ユーザーの UID と一致します。
ただし、UPG を作成せずにユーザーを追加することは可能です。
22.7.1. ユーザープライベートグループのないユーザー
NIS グループまたは別のシステムグループが、ユーザープライベートグループに割り当てられる GID をすでに使用している場合は、UPG を作成しないようにする必要があります。
これは、以下の 2 つの方法で実行できます。
- プライベートグループをグローバルに無効にすることなく、UPG なしで新しいユーザーを追加する。プライベートグループがグローバルに有効になっている場合にユーザープライベートグループのないユーザーを追加 を参照してください。
- すべてのユーザーに対して UPG をグローバルに無効にしてから、新しいユーザーを追加する。すべてのユーザーに対してユーザープライベートグループをグローバルで無効にする および ユーザープライベートグループをグローバルで無効にしている時のユーザーの追加 を参照してください。
どちらの場合も、IdM では、新しいユーザーを追加するときに GID を指定する必要があります。指定しないと、操作は失敗します。これは、IdM には新しいユーザーの GID が必要ですが、デフォルトのユーザーグループ ipausers
は非 POSIX グループであるため、関連付けられた GID がないためです。指定する GID は、既存のグループに対応する必要がありません。
GID を指定しても、新しいグループは作成されません。この属性は IdM に必要であるため、新しいユーザーに GID 属性のみを設定します。
22.7.2. プライベートグループがグローバルに有効になっている場合にユーザープライベートグループのないユーザーを追加
システムで UPG が有効になっている場合でも、ユーザープライベートグループ (UPG) を作成せずにユーザーを追加できます。これには、新しいユーザーの GID を手動で設定する必要があります。これが必要な理由の詳細については、ユーザープライベートグループのないユーザー を参照してください。
手順
IdM が UPG を作成しないようにするには、
ipa user-add
コマンドに--noprivate
オプションを追加します。コマンドを成功させるには、カスタム GID を指定する必要があることに注意してください。たとえば、GID 10000 の新しいユーザーを追加するには、次のコマンドを実行します。
$ ipa user-add jsmith --first=John --last=Smith --noprivate --gid 10000
22.7.3. すべてのユーザーに対してユーザープライベートグループをグローバルに無効にする
ユーザープライベートグループ (UPG) をグローバルに無効にできます。これにより、すべての新しいユーザーの UPG が作成されなくなります。既存のユーザーはこの変更の影響を受けません。
手順
管理者権限を取得します。
$ kinit admin
IdM は、Directory Server Managed Entries プラグインを使用して UPG を管理します。プラグインのインスタンスをリスト表示します。
$ ipa-managed-entries --list
IdM が UPG を作成しないようにするには、ユーザープライベートグループを管理するプラグインインスタンスを無効にします。
$ ipa-managed-entries -e "UPG Definition" disable Disabling Plugin
注記後で
UPG 定義
インスタンスを再有効にするには、ipa-managed-entries -e "UPG Definition" enable
コマンドを使用します。Directory Server を再起動して、新しい設定を読み込みます。
$ sudo systemctl restart dirsrv.target
UPG が無効になった後にユーザーを追加するには、GID を指定する必要があります。詳細は、ユーザープライベートグループがグローバルで無効になっている場合のユーザーの追加 を参照してください。
検証
UPG がグローバルで無効になっているかどうかを確認するには、再度 disable コマンドを使用します。
$ ipa-managed-entries -e "UPG Definition" disable Plugin already disabled
22.7.4. ユーザープライベートグループがグローバルで無効になっている場合のユーザーの追加
ユーザープライベートグループ (UPG) がグローバルで無効になっている場合、IdM は GID を新しいユーザーに自動的に割り当てません。ユーザーを正常に追加するには、GID を手動で割り当てるか、automember を使用して割り当てる必要があります。これが必要な理由の詳細については、Users without a user private group を参照してください。
前提条件
- UPG は、すべてのユーザーに対してグローバルに無効にする必要があります。詳細は、すべてのユーザーに対してユーザープライベートグループをグローバルに無効にする をご覧ください。
手順
UPG の作成が無効になっているときに新しいユーザーの追加が成功することを確認するには、次のいずれかを選択します。
新しいユーザーを追加するときにカスタムの GID を指定します。GID は、既存のユーザーグループに対応する必要はありません。
たとえば、コマンドラインからユーザーを追加する場合は、
--gid
オプションをipa user-add
コマンドに追加します。- automember ルールを使用して、GID のある既存のグループにユーザーを追加します。
22.8. IdM CLI を使用して IdM ユーザーグループにメンバーマネージャーとしてユーザーまたはグループを追加する手順
IdM CLI を使用してユーザーまたはグループをメンバーマネージャーとして IdM ユーザーグループに追加するには、次の手順に従います。メンバーマネージャーは、ユーザーまたはグループを IdM ユーザーグループに追加できますが、グループの属性を変更できません。
前提条件
- 管理者としてログインしている。詳細は、Using kinit to log in to IdM manually を参照してください。
- メンバーマネージャーとして追加するユーザーまたはグループの名前と、メンバーマネージャーが管理するグループ名を用意する。
手順
ipa group-add-member-manager
コマンドを使用して、ユーザーをメンバーマネージャーとして IdM ユーザーグループに追加します。たとえば、ユーザー
test
をgroup_a
のメンバーマネージャーとして追加します。$ ipa group-add-member-manager group_a --users=test Group name: group_a GID: 1133400009 Membership managed by users: test ------------------------- Number of members added 1 -------------------------
ユーザー
test
はgroup_a
のメンバーを管理できるようになりました。ipa group-add-member-manager
コマンドを使用して、グループをメンバーマネージャーとして IdM ユーザーグループに追加します。たとえば、 グループ
group_admins
をgroup_a
のメンバーマネージャーとして追加します。$ ipa group-add-member-manager group_a --groups=group_admins Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test ------------------------- Number of members added 1 -------------------------
グループ
group_admins
はgroup_a
のメンバーを管理できるようになりました。
ユーザーグループにメンバーマネージャーを追加してから、更新が Identity Management 環境のすべてのクライアントに広がるまでに時間がかかる場合があります。
検証
ipa group-show
コマンドを使用して、ユーザーおよびグループがメンバーマネージャーとして追加されたことを確認します。$ ipa group-show group_a Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test
関連情報
-
詳細は、
ipa group-add-member-manager --help
を参照してください。
22.9. IdM CLI を使用したグループメンバーの表示
IdM CLI を使用してグループのメンバーを表示するには、次の手順に従います。直接グループメンバーと間接グループメンバーの両方を表示できます。詳細は、直接および間接のグループメンバー を参照してください。
手順
グループのメンバーのリストを表示するには、
ipa group-show group_name
コマンドを使用します。以下に例を示します。$ ipa group-show group_a ... Member users: user_a Member groups: group_b Indirect Member users: user_b
注記間接メンバーのリストには、信頼された Active Directory ドメインの外部ユーザーが含まれません。Active Directory 信頼ユーザーオブジェクトは、Identity Management 内に LDAP オブジェクトとして存在しないため、Identity Management インターフェイスには表示されません。
22.10. IdM CLI を使用してユーザーグループからメンバーを削除
IdM CLI を使用してユーザーグループからメンバーを削除するには、次の手順に従います。
前提条件
- 管理者としてログインしている。詳細は、Using kinit to log in to IdM manually を参照してください。
手順
-
オプション:
ipa group-show
コマンドを使用して、削除するメンバーがグループに含まれていることを確認します。 ipa group-remove-member
コマンドを使用して、ユーザーグループからメンバーを削除します。以下のオプションを使用して、削除するメンバーを指定します。
-
--users
は、IdM ユーザーを削除します -
--external
は、DOMAIN\user_name
またはuser_name@domain
の形式で、IdM ドメイン外に存在するユーザーを削除します -
--groups
は、IdM ユーザーグループを削除します
たとえば、group_name という名前のグループから、user1、user2、および group1 を削除するには、次のコマンドを実行します。
$ ipa group-remove-member group_name --users=user1 --users=user2 --groups=group1
-
22.11. IdM CLI を使用してユーザーまたはグループを IdM ユーザーグループのメンバーマネージャーから取り消す手順
IdM CLI を使用して IdM ユーザーグループのメンバーマネージャーからユーザーまたはグループを削除するには、次の手順に従います。メンバーマネージャーは、IdM ユーザーグループからユーザーまたはグループを削除できますが、グループの属性を変更できません。
前提条件
- 管理者としてログインしている。詳細は、Using kinit to log in to IdM manually を参照してください。
- 削除する既存のメンバーマネージャーのユーザーまたはグループの名前と、そのメンバーマネージャーが管理するグループ名が必要です。
手順
ipa group-remove-member-manager
コマンドを使用してユーザーを IdM ユーザーグループのメンバーマネージャーから削除します。たとえば、ユーザー
test
をgroup_a
のメンバーマネージャーから削除します。$ ipa group-remove-member-manager group_a --users=test Group name: group_a GID: 1133400009 Membership managed by groups: group_admins --------------------------- Number of members removed 1 ---------------------------
ユーザー
test
はgroup_a
のメンバーを管理できなくなりました。ipa group-remove-member-manager
コマンドを使用してグループを IdM ユーザーグループのメンバーマネージャーから削除します。たとえば、 グループ
group_admins
をgroup_a
のメンバーマネージャーから削除します。$ ipa group-remove-member-manager group_a --groups=group_admins Group name: group_a GID: 1133400009 --------------------------- Number of members removed 1 ---------------------------
グループ
group_admins
はgroup_a
のメンバーを管理できなくなりました。
ユーザーグループからメンバーマネージャーを削除してから、更新が Identity Management 環境のすべてのクライアントに広がるまでに時間がかかる場合があります。
検証
ipa group-show
コマンドを使用して、ユーザーおよびグループがメンバーマネージャーから削除されたことを確認します。$ ipa group-show group_a Group name: group_a GID: 1133400009
関連情報
-
詳細は、
ipa group-remove-member-manager --help
を参照してください。
22.12. IdM でのローカルグループとリモートグループのグループマージの有効化
グループは、Identity Management (IdM) や Active Directory (AD) などのドメインによって提供されて一元管理されるか、ローカルシステムの etc/group
ファイルで管理されます。ほとんどの場合、ユーザーは一元管理されたストアに依存しています。しかし、ソフトウェアによっては、現在も既知のグループのメンバーシップに基づいてアクセス制御を管理している場合があります。
ドメインコントローラーおよびローカルの etc/group
ファイルのグループを管理する場合は、グループのマージを有効にすることができます。ローカルファイルとリモートサービスの両方を確認するように nsswitch.conf
ファイルを設定できます。グループが両方に存在する場合、メンバーユーザーのリストが結合され、単一の応答で返されます。
以下の手順では、ユーザー idmuser のグループのマージを有効にする方法について説明します。
手順
/etc/nsswitch.conf
ファイルに[SUCCESS=merge]
を追加します。# Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
idmuser を IdM に追加します。
# ipa user-add idmuser First name: idm Last name: user --------------------- Added user "idmuser" --------------------- User login: idmuser First name: idm Last name: user Full name: idm user Display name: idm user Initials: tu Home directory: /home/idmuser GECOS: idm user Login shell: /bin/sh Principal name: idmuser@IPA.TEST Principal alias: idmuser@IPA.TEST Email address: idmuser@ipa.test UID: 19000024 GID: 19000024 Password: False Member of groups: ipausers Kerberos keys available: False
ローカルの
audio
グループの GID を確認します。$ getent group audio --------------------- audio:x:63
audio
グループを IdM に追加します。$ ipa group-add audio --gid 63 ------------------- Added group "audio" ------------------- Group name: audio GID: 63
注記audio
グループを IdM に追加するときに定義する GID は、ローカルのaudio
グループの GID と同じである必要があります。idmuser ユーザーを IdM の
audio
グループに追加します。$ ipa group-add-member audio --users=idmuser Group name: audio GID: 63 Member users: idmuser ------------------------- Number of members added 1 -------------------------
検証
- idmuser として