Ansible を使用した Identity Management のインストールと管理
Ansible を使用した IdM 環境の維持
概要
ansible-freeipa
パッケージを提供します。Playbook を使用して IdM をインストールし、ユーザー、グループ、ホスト、アクセス制御、設定を管理できます。
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。
Identity Management では、次のような用語の置き換えが計画されています。
- ブラックリスト から ブロックリスト
- ホワイトリスト から 許可リスト
- スレーブ から セカンダリー
マスター という言葉は、文脈に応じて、より正確な言葉に置き換えられています。
- IdM マスター から IdM サーバー
- CA 更新マスター から CA 更新サーバー
- CRL マスター から CRL パブリッシャーサーバー
- マルチマスター から マルチサプライヤー
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
特定の文章に関するコメントの送信
- Multi-page HTML 形式でドキュメントを表示し、ページが完全にロードされてから右上隅に Feedback ボタンが表示されていることを確認します。
- カーソルを使用して、コメントを追加するテキスト部分を強調表示します。
- 強調表示されたテキストの近くに表示される Add Feedback ボタンをクリックします。
- フィードバックを追加し、Submit をクリックします。
Jira からのフィードバック送信(アカウントが必要)
- Jira の Web サイト にログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 Ansible の用語
本書の章では、公式の Ansible 用語を使用します。Ansible の用語に慣れていない場合は、公式の Ansible アップストリームドキュメント、特に次のセクションを読んでから続行してください。
- Ansible のセクションの基本概念 は、Ansible で最も一般的に使用される概念の概要を説明します。
- ユーザーガイド では、コマンドラインの使用、インベントリーの使用、データの操作、タスク、Play および Playbook の記述、Playbook の実行など、Ansible の使用を開始する際の最も一般的な状況や疑問点について概説しています。
- インベントリーの構築方法 では、インベントリーの設計方法のヒントがあります。インベントリーは、Ansible がインフラストラクチャー内の複数の管理ノードまたはホストに対して機能するために使用するリストのグループです。
- Intro to playbooks では、設定の管理、マシンのデプロイ、および複雑なアプリケーションのデプロイのための反復可能で再利用可能なシステムとして、Ansible Playbook の概念を紹介します。
- Ansible ロール セクションでは、既知のファイル構造に基づいて特定の変数、タスク、およびハンドラーの読み込みを自動化する方法を説明します。
- 用語集 は、他の Ansible ドキュメントで使用される用語です。
第2章 Ansible Playbook で Identity Management サーバーのインストール
Ansible を使用してシステムを IdM サーバーとして設定する方法を説明します。システムを IdM サーバーとして設定すると、IdM ドメインを確立し、システムが IdM クライアントに IdM サービスを提供できるようになります。ipaserver
Ansible ロールを使用してデプロイメントを管理できます。
前提条件
Ansibleと IdM の概念を理解している:
- Ansible ロール
- Ansible ノード
- Ansible インベントリー
- Ansible タスク
- Ansible モジュール
- Ansible プレイおよび Playbook
2.1. Ansible と、IdM をインストールする利点
Ansible は、システムの設定、ソフトウェアのデプロイ、ローリング更新の実行に使用する自動化ツールです。Ansible には Identity Management (IdM) のサポートが含まれるため、Ansible モジュールを使用して、IdM サーバー、レプリカ、クライアント、または IdM トポロジー全体の設定などのインストールタスクを自動化できます。
IdM のインストールに Ansible を使用する利点
以下のリストは、手動インストールとは対照的に、Ansible を使用して Identity Management をインストールする利点を示しています。
- 管理ノードにログインする必要はありません。
- デプロイする各ホストに個別に設定する必要はありません。代わりに、完全なクラスターをデプロイするためのインベントリーファイルを 1 つ使用できます。
- ユーザーおよびホストを追加するなど、後で管理タスクにインベントリーファイルを再利用できます。IdM には関係のないタスクであっても、インベントリーファイルを再利用できます。
2.2. ansible-freeipa パッケージのインストール
以下の手順に従って、Identity Management (IdM) をインストールおよび管理する Ansible ロールとモジュールを提供する ansible-freeipa
パッケージをインストールします。
前提条件
マネージドノード で以下を行っている。
- 管理ノードが、静的 IP アドレスと作業パッケージマネージャーを備えた Red Hat Enterprise Linux 8 システムである。
コントローラー で以下を行っている。
- コントローラーが、有効なサブスクリプションを備えた Red Hat Enterprise Linux システムである。そうでない場合は、公式の Ansible ドキュメントの Installation guide で、代替のインストール方法を参照してください。
-
コントローラーから、
SSH
プロトコルで管理ノードに到達できる。管理ノードが、コントローラーの/root/.ssh/known_hosts
ファイルのリストに記載されていることを確認します。
手順
Ansible コントローラーで以下の手順を使用します。
システムが RHEL 8.5 以前で実行されている場合は、必要なリポジトリーを有効にします。
# subscription-manager repos --enable ansible-2.8-for-rhel-8-x86_64-rpms
システムが RHEL 8.5 以前で実行されている場合は、
ansible
パッケージをインストールします。# yum install ansible
ansible-freeipa
パッケージをインストールします。# yum install ansible-freeipa
ロールとモジュールは、
/usr/share/ansible/roles/
および/usr/share/ansible/plugins/modules
ディレクトリーにインストールされます。
2.3. ファイルシステム内の Ansible ロールの場所
デフォルトでは、ansible-freeipa
ロールは /usr/share/ansible/roles/
ディレクトリーにインストールされます。ansible-freeipa
パッケージの構造は以下のとおりです。
/usr/share/ansible/roles/
ディレクトリーには、Ansible コントローラーのipaserver
ロール、ipareplica
ロール、およびipaclient
ロールが保存されています。各ロールディレクトリーには、サンプル、基本的な概要、ライセンス、および Markdown ファイルのREADME.md
のロールに関する情報が保存されています。[root@server]# ls -1 /usr/share/ansible/roles/ ipaclient ipareplica ipaserver
/usr/share/doc/ansible-freeipa/
ディレクトリーには、Markdown ファイルのREADME.md
に、各ロールおよびトポロジーに関する情報が保存されています。また、playbooks/
サブディレクトリーも保存されています。[root@server]# ls -1 /usr/share/doc/ansible-freeipa/ playbooks README-client.md README.md README-replica.md README-server.md README-topology.md
/usr/share/doc/ansible-freeipa/playbooks/
ディレクトリーは、Playbook のサンプルを保存します。[root@server]# ls -1 /usr/share/doc/ansible-freeipa/playbooks/ install-client.yml install-cluster.yml install-replica.yml install-server.yml uninstall-client.yml uninstall-cluster.yml uninstall-replica.yml uninstall-server.yml
2.4. 統合 DNS と、root CA としての統合 CA を使用したデプロイメントのパラメーターの設定
以下の手順に従って、IdM 統合 DNS ソリューションを使用する環境で、統合 CA を持つ IdM サーバーを root CA としてインストールするようにインベントリーファイルを設定します。
この手順のインベントリーは、INI
形式を使用します。または、YAML
形式または JSON
形式を使用できます。
手順
編集するインベントリーファイルを開きます。IdM サーバーとして使用するホストの完全修飾ドメイン名 (
FQDN
) を指定します。FQDN
が以下の基準を満たしていることを確認してください。- 英数字およびハイフン (-) のみが使用できる。たとえば、アンダーラインは使用できないため、DNS の障害が発生する原因となる可能性があります。
- ホスト名がすべて小文字である。
- IdM ドメインおよびレルムの情報を指定します。
以下のオプションを追加して、統合 DNS を使用することを指定します。
ipaserver_setup_dns=yes
DNS 転送設定を指定します。以下のいずれかのオプションを選択します。
-
インストーラーが
/etc/resolv.conf
ファイルからのフォワーダーを使用する場合は、ipaserver_auto_forwarders=yes
オプションを使用します。/etc/resolv.conf
ファイルで指定する nameserver が localhost 127.0.0.1 アドレスである場合、または仮想プライベートネットワークにあり、使用している DNS サーバーが通常パブリックインターネットから到達できない場合は、このオプションは使用しないでください。 -
ipaserver_forwarders
を使用して、フォワーダーを手動で指定します。インストールプロセスにより、インストールした IdM サーバーの/etc/named.conf
ファイルに、フォワーダーの IP アドレスが追加されます。 代わりに使用する root DNS サーバーを設定する場合は、
ipaserver_no_forwarders=yes
オプションを使用します。注記DNS フォワーダーがないと、環境は分離され、インフラストラクチャー内の他の DNS ドメインからの名前は解決されません。
-
インストーラーが
DNS の逆引きレコードとゾーンの設定を指定します。次のいずれかのオプションを選択します。
-
ゾーンがすでに解決可能であっても、
ipaserver_allow_zone_overlap=yes
オプションを使用して (リバース) ゾーンの作成を許可します。 -
ipaserver_reverse_zones
オプションを使用して、手動でリバースゾーンを指定します。 インストーラーが DNS ゾーンを逆引きで作成しない場合は、
ipaserver_no_reverse=yes
オプションを使用します。注記オプションで、逆引きゾーンの管理に IdM を使用できます。代わりに、この目的で外部 DNS サービスを使用することもできます。
-
ゾーンがすでに解決可能であっても、
-
admin
とDirectory Manager
のパスワードを指定します。Ansible Vault を使用してパスワードを保存し、Playbook ファイルから Vault ファイルを参照します。あるいは、安全性は低くなりますが、インベントリーファイルにパスワードを直接指定します。 (必要に応じて) IdM サーバーで使用する個別の
firewalld
ゾーンを指定します。カスタムゾーンを設定しないと、サービスがデフォルトのfirewalld
ゾーンに追加されます。事前定義されたデフォルトゾーンはpublic
です。重要指定する
firewalld
ゾーンは存在し、永続的でなければなりません。必要なサーバー情報を含むインベントリーファイルの例 (パスワードを除く)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes [...]
必要なサーバー情報を含むインベントリーファイルの例 (パスワードを含む)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 [...]
カスタムの
firewalld
損を使用したインベントリーファイルの例[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 ipaserver_firewalld_zone=custom zone
Ansible Vault ファイルに保存された admin パスワードおよび Directory Manager パスワードを使用して IdM サーバーを設定する Playbook の例
--- - name: Playbook to configure IPA server hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaserver state: present
インベントリーファイルの admin パスワードおよび Directory Manager パスワードを使用して IdM サーバーを設定する Playbook の例
--- - name: Playbook to configure IPA server hosts: ipaserver become: true roles: - role: ipaserver state: present
関連情報
-
フォワードポリシーのデフォルト設定は、
ipa-dns-install(1)
man ページに記載されている--forward-policy
の説明を参照してください。 -
ipaserver
ロールが使用する DNS 変数の詳細は、/usr/share/doc/ansible-freeipa
ディレクトリーのREADME-server.md
ファイルにある DNS Variables セクションを参照してください。
2.5. 外部 DNS と、root CA としての統合 CA を使用したデプロイメントのパラメーターの設定
以下の手順に従って、外部 DNS ソリューションを使用する環境で、統合 CA の IdM サーバーを root CA としてインストールするようにインベントリーファイルを設定します。
この手順のインベントリーファイルは、INI
形式を使用します。または、YAML
形式または JSON
形式を使用できます。
手順
編集するインベントリーファイルを開きます。IdM サーバーとして使用するホストの完全修飾ドメイン名 (
FQDN
) を指定します。FQDN
が以下の基準を満たしていることを確認してください。- 英数字およびハイフン (-) のみが使用できる。たとえば、アンダーラインは使用できないため、DNS の障害が発生する原因となる可能性があります。
- ホスト名がすべて小文字である。
- IdM ドメインおよびレルムの情報を指定します。
-
ipaserver_setup_dns
オプションがno
に設定されているか、存在しないことを確認します。 -
admin
とDirectory Manager
のパスワードを指定します。Ansible Vault を使用してパスワードを保存し、Playbook ファイルから Vault ファイルを参照します。あるいは、安全性は低くなりますが、インベントリーファイルにパスワードを直接指定します。 (必要に応じて) IdM サーバーで使用する個別の
firewalld
ゾーンを指定します。カスタムゾーンを設定しないと、サービスがデフォルトのfirewalld
ゾーンに追加されます。事前定義されたデフォルトゾーンはpublic
です。重要指定する
firewalld
ゾーンは存在し、永続的でなければなりません。必要なサーバー情報を含むインベントリーファイルの例 (パスワードを除く)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no [...]
必要なサーバー情報を含むインベントリーファイルの例 (パスワードを含む)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 [...]
カスタムの
firewalld
損を使用したインベントリーファイルの例[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 ipaserver_firewalld_zone=custom zone
Ansible Vault ファイルに保存された admin パスワードおよび Directory Manager パスワードを使用して IdM サーバーを設定する Playbook の例
--- - name: Playbook to configure IPA server hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaserver state: present
インベントリーファイルの admin パスワードおよび Directory Manager パスワードを使用して IdM サーバーを設定する Playbook の例
--- - name: Playbook to configure IPA server hosts: ipaserver become: true roles: - role: ipaserver state: present
2.6. Ansible Playbook を使用して、統合 CA を root CA として備えた IdM サーバーをデプロイメント
以下の手順に従って、Ansible Playbook を使用して、統合された認証局 (CA) を備えた IdM サーバーをデプロイします。
この手順のインベントリーは、INI
形式を使用します。または、YAML
形式または JSON
形式を使用できます。
前提条件
以下のいずれかの手順を選択して、シナリオに対応するパラメーターを設定している。
-
ipaserver
ロールで使用できる変数について、/usr/share/doc/ansible-freeipa/README-server.md
ファイルの説明を読み、理解している。
手順
ansible-playbook
コマンドを、Playbook ファイルの名前 (install-server.yml
など) で実行します。-i
オプションでインベントリーファイルを指定します。$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/install-server.yml
-v
オプション、-vv
オプション、または-vvv
オプションを使用して、詳細のレベルを指定します。コマンドラインインターフェイス (CLI) で Ansible Playbook スクリプトの出力を表示できます。次の出力は、失敗したタスクが 0 個のため、スクリプトが正常に実行されたことを示しています。
PLAY RECAP server.idm.example.com : ok=18 changed=10 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0
以下のいずれかのオプションを選択します。
IdM デプロイメントで外部 DNS を使用する場合:
/tmp/ipa.system.records.UFRPto.db
ファイルに含まれる DNS リソースレコードを、既存の外部 DNS サーバーに追加します。DNS レコードの更新プロセスは、特定の DNS ソリューションによって異なります。... Restarting the KDC Please add records in this file to your DNS system: /tmp/ipa.system.records.UFRBto.db Restarting the web server ...
重要既存の DNS サーバーに DNS レコードを追加するまで、サーバーのインストールは完了しません。
IdM デプロイメントで統合 DNS を使用している場合は、次のコマンドを実行します。
親ドメインから ldM DNS ドメインに DNS 委譲を追加します。たとえば、IdM DNS ドメインが
idm.example.com
の場合は、ネームサーバー (NS) レコードを親ドメインexample.com
に追加します。重要IdM DNS サーバーをインストールするたびに、この手順を繰り返します。
-
タイムサーバーの
_ntp._udp
サービス (SRV) レコードを IdM DNS に追加します。IdM DNS に新たにインストールした IdM サーバーのタイムサーバーの SRV レコードが存在すると、このプライマリー IdM サーバーが使用するタイムサーバーと同期するように、今後のレプリカおよびクライアントインストールが自動的に設定されます。
関連情報
- ルート CA として 外部 CA を使用して IdM サーバーをデプロイする方法については、Ansible Playbook を使用して、外部 CA を root CA として備えた IdM サーバーのデプロイメント を参照してください。
2.7. 統合 DNS と、ルート CA としての外部 CA を使用したデプロイメントのパラメーターの設定
以下の手順に従って、IdM 統合 DNS ソリューションを使用する環境で、外部 CA を持つ IdM サーバーを root CA としてインストールするようにインベントリーファイルを設定します。
この手順のインベントリーファイルは、INI
形式を使用します。または、YAML
形式または JSON
形式を使用できます。
手順
編集するインベントリーファイルを開きます。IdM サーバーとして使用するホストの完全修飾ドメイン名 (
FQDN
) を指定します。FQDN
が以下の基準を満たしていることを確認してください。- 英数字およびハイフン (-) のみが使用できる。たとえば、アンダーラインは使用できないため、DNS の障害が発生する原因となる可能性があります。
- ホスト名がすべて小文字である。
- IdM ドメインおよびレルムの情報を指定します。
以下のオプションを追加して、統合 DNS を使用することを指定します。
ipaserver_setup_dns=yes
DNS 転送設定を指定します。以下のいずれかのオプションを選択します。
-
インストールプロセスで
/etc/resolv.conf
ファイルのフォワーダーを使用する場合は、ipaserver_auto_forwarders=yes
を使用します。/etc/resolv.conf
ファイルで指定する nameserver が localhost 127.0.0.1 アドレスである場合、または仮想プライベートネットワークにあり、使用している DNS サーバーが通常パブリックインターネットから到達できない場合は、このオプションを使用することが推奨されません。 -
ipaserver_forwarders
を使用して、フォワーダーを手動で指定します。インストールプロセスにより、インストールした IdM サーバーの/etc/named.conf
ファイルに、フォワーダーの IP アドレスが追加されます。 代わりに使用する root DNS サーバーを設定する場合は、
ipaserver_no_forwarders=yes
オプションを使用します。注記DNS フォワーダーがないと、環境は分離され、インフラストラクチャー内の他の DNS ドメインからの名前は解決されません。
-
インストールプロセスで
DNS の逆引きレコードとゾーンの設定を指定します。次のいずれかのオプションを選択します。
-
ゾーンがすでに解決可能であっても、
ipaserver_allow_zone_overlap=yes
オプションを使用して (リバース) ゾーンの作成を許可します。 -
ipaserver_reverse_zones
オプションを使用して、手動でリバースゾーンを指定します。 インストールプロセスで DNS ゾーンの逆引きを作成しない場合は、
ipaserver_no_reverse=yes
オプションを使用します。注記オプションで、逆引きゾーンの管理に IdM を使用できます。代わりに、この目的で外部 DNS サービスを使用することもできます。
-
ゾーンがすでに解決可能であっても、
-
admin
とDirectory Manager
のパスワードを指定します。Ansible Vault を使用してパスワードを保存し、Playbook ファイルから Vault ファイルを参照します。あるいは、安全性は低くなりますが、インベントリーファイルにパスワードを直接指定します。 (必要に応じて) IdM サーバーで使用する個別の
firewalld
ゾーンを指定します。カスタムゾーンを設定しないと、サービスがデフォルトのfirewalld
ゾーンに追加されます。事前定義されたデフォルトゾーンはpublic
です。重要指定する
firewalld
ゾーンは存在し、永続的でなければなりません。必要なサーバー情報を含むインベントリーファイルの例 (パスワードを除く)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes [...]
必要なサーバー情報を含むインベントリーファイルの例 (パスワードを含む)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 [...]
カスタムの
firewalld
損を使用したインベントリーファイルの例[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=yes ipaserver_auto_forwarders=yes ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 ipaserver_firewalld_zone=custom zone [...]
インストールの最初ステップ用の Playbook を作成します。証明書署名要求 (CSR) を生成し、それをコントローラーからマネージドノードにコピーする指示を入力します。
--- - name: Playbook to configure IPA server Step 1 hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml vars: ipaserver_external_ca: yes roles: - role: ipaserver state: present post_tasks: - name: Copy CSR /root/ipa.csr from node to "{{ groups.ipaserver[0] + '-ipa.csr' }}" fetch: src: /root/ipa.csr dest: "{{ groups.ipaserver[0] + '-ipa.csr' }}" flat: yes
インストールの最終ステップ用に、別の Playbook を作成します。
--- - name: Playbook to configure IPA server Step -1 hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml vars: ipaserver_external_cert_files: "/root/chain.crt" pre_tasks: - name: Copy "{{ groups.ipaserver[0] + '-chain.crt' }}" to /root/chain.crt on node copy: src: "{{ groups.ipaserver[0] + '-chain.crt' }}" dest: "/root/chain.crt" force: yes roles: - role: ipaserver state: present
関連情報
-
フォワードポリシーのデフォルト設定は、
ipa-dns-install(1)
man ページに記載されている--forward-policy
の説明を参照してください。 -
ipaserver
ロールが使用する DNS 変数の詳細は、/usr/share/doc/ansible-freeipa
ディレクトリーのREADME-server.md
ファイルにある DNS Variables セクションを参照してください。
2.8. 外部 DNS と、ルート CA としての外部 CA を使用したデプロイメントのパラメーターの設定
以下の手順に従って、外部 DNS ソリューションを使用する環境で、外部 CA を持つ IdM サーバーを root CA としてインストールするようにインベントリーファイルを設定します。
この手順のインベントリーファイルは、INI
形式を使用します。または、YAML
形式または JSON
形式を使用できます。
手順
編集するインベントリーファイルを開きます。IdM サーバーとして使用するホストの完全修飾ドメイン名 (
FQDN
) を指定します。FQDN
が以下の基準を満たしていることを確認してください。- 英数字およびハイフン (-) のみが使用できる。たとえば、アンダーラインは使用できないため、DNS の障害が発生する原因となる可能性があります。
- ホスト名がすべて小文字である。
- IdM ドメインおよびレルムの情報を指定します。
-
ipaserver_setup_dns
オプションがno
に設定されているか、存在しないことを確認します。 -
admin
とDirectory Manager
のパスワードを指定します。Ansible Vault を使用してパスワードを保存し、Playbook ファイルから Vault ファイルを参照します。あるいは、安全性は低くなりますが、インベントリーファイルにパスワードを直接指定します。 (必要に応じて) IdM サーバーで使用する個別の
firewalld
ゾーンを指定します。カスタムゾーンを設定しないと、サービスがデフォルトのfirewalld
ゾーンに追加されます。事前定義されたデフォルトゾーンはpublic
です。重要指定する
firewalld
ゾーンは存在し、永続的でなければなりません。必要なサーバー情報を含むインベントリーファイルの例 (パスワードを除く)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no [...]
必要なサーバー情報を含むインベントリーファイルの例 (パスワードを含む)
[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 [...]
カスタムの
firewalld
損を使用したインベントリーファイルの例[ipaserver] server.idm.example.com [ipaserver:vars] ipaserver_domain=idm.example.com ipaserver_realm=IDM.EXAMPLE.COM ipaserver_setup_dns=no ipaadmin_password=MySecretPassword123 ipadm_password=MySecretPassword234 ipaserver_firewalld_zone=custom zone [...]
インストールの最初ステップ用の Playbook を作成します。証明書署名要求 (CSR) を生成し、それをコントローラーからマネージドノードにコピーする指示を入力します。
--- - name: Playbook to configure IPA server Step 1 hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml vars: ipaserver_external_ca: yes roles: - role: ipaserver state: present post_tasks: - name: Copy CSR /root/ipa.csr from node to "{{ groups.ipaserver[0] + '-ipa.csr' }}" fetch: src: /root/ipa.csr dest: "{{ groups.ipaserver[0] + '-ipa.csr' }}" flat: yes
インストールの最終ステップ用に、別の Playbook を作成します。
--- - name: Playbook to configure IPA server Step -1 hosts: ipaserver become: true vars_files: - playbook_sensitive_data.yml vars: ipaserver_external_cert_files: "/root/chain.crt" pre_tasks: - name: Copy "{{ groups.ipaserver[0] + '-chain.crt' }}" to /root/chain.crt on node copy: src: "{{ groups.ipaserver[0] + '-chain.crt' }}" dest: "/root/chain.crt" force: yes roles: - role: ipaserver state: present
関連情報
- 外部 DNS および外部署名の CA を使用して IdM サーバーをインストールする場合に利用できるオプションの詳細は、IdM サーバーのインストール - 統合 DNS を使用しない場合、外部 CA をルート CA として使用 を参照してください。
2.9. 外部 CA を root CA として備えた IdM サーバーの Ansible Playbook を使用したデプロイメント
以下の手順に従って、Ansible Playbook を使用して、外部認証局 (CA) を備えた IdM サーバーをデプロイします。
この手順のインベントリーファイルは、INI
形式を使用します。または、YAML
形式または JSON
形式を使用できます。
前提条件
以下のいずれかの手順を選択して、シナリオに対応するパラメーターを設定している。
-
ipaserver
ロールで使用できる変数について、/usr/share/doc/ansible-freeipa/README-server.md
ファイルの説明を読み、理解している。
手順
ansible-playbook
コマンドに、インストールの最初ステップの指示を含む Playbook ファイルの名前 (install-server-step1.yml
など) を指定して実行します。-i
オプションでインベントリーファイルを指定します。$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/host.server <path_to_playbooks_directory>/install-server-step1.yml
-v
オプション、-vv
オプション、または-vvv
オプションを使用して、詳細のレベルを指定します。コマンドラインインターフェイス (CLI) で Ansible Playbook スクリプトの出力を表示できます。次の出力は、失敗したタスクが 0 個のため、スクリプトが正常に実行されたことを示しています。
PLAY RECAP server.idm.example.com : ok=18 changed=10 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0
-
コントローラー上の
ipa.csr
証明書署名要求ファイルを見つけ、これを外部 CA に送信します。 - 外部 CA が署名した IdM CA 証明書をコントローラーファイルシステムに配置して、次のステップの Playbook で見つけられるようにします。
ansible-playbook
コマンドに、インストールの最終ステップの指示を含む Playbook ファイルの名前 (install-server-step2.yml
など) を指定して実行します。-i
オプションでインベントリーファイルを指定します。$ ansible-playbook -v -i <path_to_inventory_directory>/host.server <path_to_playbooks_directory>/install-server-step2.yml
以下のいずれかのオプションを選択します。
IdM デプロイメントで外部 DNS を使用する場合:
/tmp/ipa.system.records.UFRPto.db
ファイルに含まれる DNS リソースレコードを、既存の外部 DNS サーバーに追加します。DNS レコードの更新プロセスは、特定の DNS ソリューションによって異なります。... Restarting the KDC Please add records in this file to your DNS system: /tmp/ipa.system.records.UFRBto.db Restarting the web server ...
重要既存の DNS サーバーに DNS レコードを追加するまで、サーバーのインストールは完了しません。
IdM デプロイメントで統合 DNS を使用している場合は、次のコマンドを実行します。
親ドメインから ldM DNS ドメインに DNS 委譲を追加します。たとえば、IdM DNS ドメインが
idm.example.com
の場合は、ネームサーバー (NS) レコードを親ドメインexample.com
に追加します。重要IdM DNS サーバーをインストールするたびに、この手順を繰り返します。
-
タイムサーバーの
_ntp._udp
サービス (SRV) レコードを IdM DNS に追加します。IdM DNS に新たにインストールした IdM サーバーのタイムサーバーの SRV レコードが存在すると、このプライマリー IdM サーバーが使用するタイムサーバーと同期するように、今後のレプリカおよびクライアントインストールが自動的に設定されます。
関連情報
ルート CA として 統合 CA を使用して IdM サーバーをデプロイする方法については、Ansible Playbook を使用して、統合 CA を root CA として備えた IdM サーバーをデプロイメント を参照してください。
2.10. 関連情報
- レプリカトポロジーの計画
- Ansible Playbook を使用した IdM サーバーのバックアップおよび復元
- インベントリーの基本: 形式、ホスト、およびグループ
-
IdM サーバーをインストールするためのサンプルの Ansible Playbook と、
ansible-freeipa
アップストリームのドキュメント で使用できる変数のリストを表示できます。
第3章 Ansible Playbook で Identity Management レプリカのインストール
Ansible を使用してシステムを IdM レプリカとして設定すると、IdM ドメインに登録され、ドメインの IdM サーバーにある IdM サービスをシステムが使用できるようになります。
デプロイメントは、Ansible ロール ipareplica
で管理されます。このロールは、自動検出モードを使用して、IdM サーバー、ドメイン、およびその他の設定を識別できます。ただし、複数のレプリカを階層のようなモデルでデプロイし、そのレプリカのグループを異なるタイミングでデプロイする場合には、グループごとに特定のサーバーまたはレプリカを定義する必要があります。
前提条件
- Ansible コントロールノードに ansible-freeipa パッケージがインストールされている。
Ansibleと IdM の概念を理解している:
- Ansible ロール
- Ansible ノード
- Ansible インベントリー
- Ansible タスク
- Ansible モジュール
- Ansible プレイおよび Playbook
関連情報
3.1. IdM レプリカをインストールするためのベース変数、サーバー変数、およびクライアント変数の指定
IdM レプリカをインストールするためのインベントリーファイルを設定するには、以下の手順を完了します。
前提条件
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
編集するインベントリーファイルを開きます。IdM レプリカとなるホストの完全修飾ドメイン名 (FQDN) を指定します。FQDN は有効な DNS 名である必要があります。
-
数字、アルファベット、およびハイフン (
-
) のみを使用できる。たとえば、アンダーラインは使用できないため、DNS の障害が発生する原因となる可能性があります。 ホスト名がすべて小文字である。
レプリカの FQDN のみが定義されている単純なインベントリーホストファイルの例
[ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...]
IdM サーバーがデプロイされており、SRV レコードが IdM DNS ゾーンに適切に設定されている場合、スクリプトはその他に必要な値をすべて自動的に検出します。
-
数字、アルファベット、およびハイフン (
[オプション] トポロジーの設計方法に基づいて、インベントリーファイルに追加情報を入力します。
- シナリオ 1
自動検出を回避し、
[ipareplicas]
セクションに記載されているすべてのレプリカが特定の IdM サーバーを使用するようにするには、インベントリーファイルの[ipaservers]
セクションにそのサーバーを設定します。IdM サーバーとレプリカの FQDN が定義されているインベントリーホストファイルの例
[ipaservers] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...]
- シナリオ 2
または、自動検出を回避して、特定のサーバーで特定のレプリカをデプロイする場合は、インベントリーファイルの
[ipareplicas]
セクションに、特定のレプリカのサーバーを個別に設定します。特定のレプリカ用に特定の IdM サーバーが定義されたインベントリーファイルの例
[ipaservers] server.idm.example.com replica1.idm.example.com [ipareplicas] replica2.idm.example.com replica3.idm.example.com ipareplica_servers=replica1.idm.example.com
上記の例では、
replica3.idm.example.com
が、すでにデプロイされたreplica1.idm.example.com
を複製元として使用します。- シナリオ 3
1 つのバッチに複数のレプリカをデプロイする場合は、多層レプリカのデプロイメントが役に立ちます。インベントリーファイルにレプリカの特定グループ (例:
[ipareplicas_tier1]
および[ipareplicas_tier2]
) を定義し、Playbookinstall-replica.yml
で各グループに個別のプレイを設計します。レプリカ階層が定義されているインベントリーファイルの例
[ipaservers] server.idm.example.com [ipareplicas_tier1] replica1.idm.example.com [ipareplicas_tier2] replica2.idm.example.com \ ipareplica_servers=replica1.idm.example.com,server.idm.example.com
ipareplica_servers
の最初のエントリーが使用されます。次のエントリーは、フォールバックオプションとして使用されます。IdM レプリカのデプロイに複数の層を使用する場合は、最初に tier1 からレプリカをデプロイし、次に tier2 からレプリカをデプロイするように、Playbook に個別のタスクが必要です。レプリカグループごとに異なるプレイを定義した Playbook ファイルの例
--- - name: Playbook to configure IPA replicas (tier1) hosts: ipareplicas_tier1 become: true roles: - role: ipareplica state: present - name: Playbook to configure IPA replicas (tier2) hosts: ipareplicas_tier2 become: true roles: - role: ipareplica state: present
[オプション]
firewalld
と DNS に関する追加情報を入力します。- シナリオ 1
レプリカが、デフォルトのゾーンの代わりに指定した
firewalld
ゾーンを使用するようにする場合は、インベントリーファイルに指定できます。これは、たとえば、デフォルトとして設定されているパブリックゾーンの代わりに、IdM インストールに内部firewalld
ゾーンを使用する場合に役立ちます。カスタムゾーンを設定しないと、サービスがデフォルトの
firewalld
ゾーンに追加されます。事前定義されたデフォルトゾーンはpublic
です。重要指定する
firewalld
ゾーンは存在し、永続的でなければなりません。カスタム
firewalld
帯を持つシンプルなインベントリーホストファイルの例[ipaservers] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...] [ipareplicas:vars] ipareplica_firewalld_zone=custom zone
- シナリオ 2
レプリカが IdM DNS サービスをホストするようにする場合は、ipareplica_setup_dns=yes 行を
[ipareplicas:vars]
セクションに追加します。また、サーバーごとの DNS フォワーダーを使用するかどうかを指定します。-
サーバーごとのフォワーダーを設定するには、
ipareplica_forwarders
変数と文字列のリストを[ipareplicas:vars]
セクションに追加します (例: ipareplica_forwarders=192.0.2.1,192.0.2.2)。 -
サーバーごとにフォワーダーを設定しない場合は、ipareplica_no_forwarders=yes の行を
[ipareplicas:vars]
セクションに追加します。 -
レプリカの
/etc/resolv.conf
ファイルにリスト表示されているフォワーダーに基づいてサーバーごとにフォワーダーを設定するには、[ipareplicas:vars]
セクションにipareplica_auto_forwarders
を追加します。
レプリカに DNS とサーバーごとのフォワーダーを設定する手順を含むインベントリーファイルの例
[ipaservers] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com replica3.idm.example.com [...] [ipareplicas:vars] ipareplica_setup_dns=yes ipareplica_forwarders=192.0.2.1,192.0.2.2
-
サーバーごとのフォワーダーを設定するには、
- シナリオ 3
ipaclient_configure_dns_resolve
およびipaclient_dns_servers
オプション (使用可能な場合) を使用して DNS リゾルバーを指定し、クラスターのデプロイメントを簡素化します。これは、IdM デプロイメントが統合 DNS を使用している場合に特に便利です。DNS リゾルバーを指定するインベントリーファイルスニペット:
[...] [ipaclient:vars] ipaclient_configure_dns_resolver=true ipaclient_dns_servers=192.168.100.1
注記ipaclient_dns_servers
リストには IP アドレスのみを含める必要があります。ホスト名を含めることはできません。
関連情報
-
ipareplica
変数の詳細は、/usr/share/ansible/roles/ipareplica/README.md
Markdown ファイルを参照してください。
3.2. Ansible Playbook を使用して IdM レプリカをインストールするための認証情報の指定
この手順は、IdM レプリカのインストールに認可を設定します。
前提条件
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
レプリカをデプロイする権限のあるユーザーのパスワード (IdM の
admin
など) を指定します。Red Hat は、Ansible Vault を使用してパスワードを保存し、Playbook ファイルから Vault ファイルを参照する (
install-replica.yml
など) ことを推奨します。Ansible Vault ファイルのインベントリーファイルおよびパスワードのプリンシパルを使用した Playbook ファイルの例
- name: Playbook to configure IPA replicas hosts: ipareplicas become: true vars_files: -
playbook_sensitive_data.yml
roles: - role: ipareplica state: presentAnsible Vault の使用方法は、公式の Ansible Vault ドキュメントを参照してください。
あまり安全ではありませんが、インベントリーファイルで
admin
の認証情報を直接提供します。インベントリーファイルの[ipareplicas:vars]
セクションでipaadmin_password
オプションを使用します。インベントリーファイルと、Playbook ファイルinstall-replica.yml
は以下のようになります。インベントリーの hosts.replica ファイルの例
[...] [ipareplicas:vars] ipaadmin_password=Secret123
インベントリーファイルのプリンシパルおよびパスワードを使用した Playbook の例
- name: Playbook to configure IPA replicas hosts: ipareplicas become: true roles: - role: ipareplica state: present
または、安全性は低くなりますが、レプリカをインベントリーファイルに直接デプロイすることを許可されている別のユーザーの認証情報を提供します。別の認証ユーザーを指定するには、ユーザー名に
ipaadmin_principal
オプションを使用し、パスワードにipaadmin_password
オプションを使用します。インベントリーファイルと、Playbook ファイルinstall-replica.yml
は以下のようになります。インベントリーの hosts.replica ファイルの例
[...] [ipareplicas:vars] ipaadmin_principal=my_admin ipaadmin_password=my_admin_secret123
インベントリーファイルのプリンシパルおよびパスワードを使用した Playbook の例
- name: Playbook to configure IPA replicas hosts: ipareplicas become: true roles: - role: ipareplica state: present
関連情報
-
Ansible ロール
ipareplica
で使用できるオプションの詳細は、Markdown ファイル/usr/share/ansible/roles/ipareplica/README.md
を参照してください。
3.3. Ansible Playbook で IdM レプリカのデプロイメント
以下の手順に従って、Ansible Playbook を使用して IdM レプリカをデプロイします。
前提条件
- IdM レプリカをインストールするためのインベントリーファイル を設定しました。
- IdM レプリカをインストールするための認証 を設定しました。
手順
Ansible Playbook を使用して IdM レプリカをインストールするには、
ansible-playbook
コマンドに Playbook ファイルの名前 (install-replica.yml
など) を使用します。-i
オプションでインベントリーファイルを指定します。$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts.replica <path_to_playbooks_directory>/install-replica.yml
-v
オプション、-vv
オプション、または-vvv
オプションを使用して、詳細のレベルを指定します。Ansible には、Ansible Playbook スクリプトの実行が通知されます。次の出力は、失敗したタスクが 0 個のため、スクリプトが正常に実行されたことを示しています。
PLAY RECAP replica.idm.example.com : ok=18 changed=10 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0
これで、IdM レプリカがインストールされました。
第4章 Ansible Playbook で Identity Management クライアントのインストール
Ansible を使用して、システムを Identity Management (IdM) クライアントとして設定する方法を説明します。システムを IdM クライアントとして設定すると、IdM ドメインに登録され、システムがドメインの IdM サーバーで IdM サービスを使用できるようになります。
デプロイメントは、Ansible ロール ipaclient
により管理されます。デフォルトでは、ロールは自動検出モードを使用して、IdM サーバー、ドメイン、およびその他の設定を特定します。ロールは、Ansible Playbook がインベントリーファイルなどに指定した設定を使用するように変更できます。
前提条件
- Ansible コントロールノードに ansible-freeipa パッケージがインストールされている。
Ansibleと IdM の概念を理解している:
- Ansible ロール
- Ansible ノード
- Ansible インベントリー
- Ansible タスク
- Ansible モジュール
- Ansible プレイおよび Playbook
4.1. 自動検出クライアントインストールモードでインベントリーファイルのパラメーターの設定
Ansible Playbook を使用して Identity Management クライアントをインストールするには、インベントリーファイルでターゲットホストパラメーターを設定します (例: inventory/hosts
)。
- ホストに関する情報
- タスクの承認
インベントリーファイルは、所有するインベントリープラグインに応じて、多数ある形式のいずれかになります。INI-like
形式は Ansible のデフォルトで、以下の例で使用されています。
RHEL でグラフィカルユーザーインターフェイスでスマートカードを使用するには、Ansible Playbook に ipaclient_mkhomedir
変数を含めるようにします。
前提条件
- コントロールノードでのデプロイ手順を確認した。install-client.yml ファイルのパラメーターの確認 を参照すること。
手順
IdM クライアントになるホストの完全修飾ホスト名 (FQDN) を指定します。完全修飾ドメイン名は、有効な DNS 名である必要があります。
-
数字、アルファベット、およびハイフン (
-
) のみを使用できる。たとえば、アンダーラインは使用できないため、DNS の障害が発生する原因となる可能性があります。 - ホスト名がすべて小文字である。大文字は使用できません。
SRV レコードが IdM DNS ゾーンで正しく設定されている場合は、スクリプトが自動的に必要な値をすべて検出します。
クライアントの FQDN のみが定義されている単純なインベントリーホストファイルの例
[ipaclients] client.idm.example.com [...]
-
数字、アルファベット、およびハイフン (
クライアントを登録するための認証情報を指定します。以下の認証方法を使用できます。
クライアントを登録する権限のあるユーザーのパスワード。以下はデフォルトのオプションになります。
Red Hat は、Ansible Vault を使用してパスワードを保存し、Playbook ファイル (
install-client.yml
など) から Vault ファイルを直接参照することを推奨します。Ansible Vault ファイルのインベントリーファイルおよびパスワードのプリンシパルを使用した Playbook ファイルの例
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaclient state: present
あまり安全ではありませんが、
inventory/hosts
ファイルの[ipaclients:vars]
セクションにipaadmin_password
オプションを使用して、admin
の認証情報を提供します。また、別の認証ユーザーを指定するには、ユーザー名にipaadmin_principal
オプション、パスワードにipaadmin_password
オプションを使用します。inventory/hosts
インベントリーファイルと、Playbook ファイルinstall-client.yml
は以下のようになります。インベントリーホストファイルの例
[...] [ipaclients:vars] ipaadmin_principal=my_admin ipaadmin_password=Secret123
インベントリーファイルのプリンシパルおよびパスワードを使用した Playbook の例
- name: Playbook to unconfigure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true
以前登録した クライアントキータブ が利用できる場合は、以下を行います。
このオプションは、システムが Identity Management クライアントとして登録されたことがある場合に使用できます。この認証方法を使用するには、
#ipaclient_keytab
オプションのコメントを解除して、キータブを保存するファイルへのパスを指定します (例:inventory/hosts
の[ipaclient:vars]
セクション)。登録時に生成される ランダムなワンタイムパスワード (OTP)。この認証方法を使用するには、インベントリーファイルの
ipaclient_use_otp=yes
オプションを使用します。たとえば、inventory/hosts
ファイルの[ipaclients:vars]
セクションでipaclient_use_otp=yes
オプションのコメントを解除できます。OTP では、以下のいずれかのオプションも指定する必要があります。-
クライアントを登録する権限のあるユーザーのパスワード (例:
inventory/hosts
ファイルの[ipaclients:vars]
セクションにipaadmin_password
の値を指定)。 -
管理者キータブ (例:
inventory/hosts
の[ipaclients:vars]
セクションにipaadmin_keytab
の値を指定)。
-
クライアントを登録する権限のあるユーザーのパスワード (例:
(オプション)
ipaclient_configure_dns_resolve
およびipaclient_dns_servers
オプション (使用可能な場合) を使用して DNS リゾルバーを指定し、クラスターのデプロイメントを簡素化します。これは、IdM デプロイメントが統合 DNS を使用している場合に特に便利です。DNS リゾルバーを指定するインベントリーファイルスニペット:
[...] [ipaclients:vars] ipaadmin_password: "{{ ipaadmin_password }}" ipaclient_domain=idm.example.com ipaclient_configure_dns_resolver=true ipaclient_dns_servers=192.168.100.1
注記ipaclient_dns_servers
リストには IP アドレスのみを含める必要があります。ホスト名を含めることはできません。
関連情報
-
/usr/share/ansible/roles/ipaclient/README.md
- subID 範囲の手動管理
4.2. クライアントのインストール時に自動検出ができない場合に備えてインベントリーファイルのパラメーターの設定
Ansible Playbook を使用して Identity Management クライアントをインストールするには、インベントリーファイルでターゲットホストパラメーターを設定します (例: inventory/hosts
)。
- ホストと、IdM サーバーおよび IdM ドメインまたは IdM レルムに関する情報
- タスクの承認
インベントリーファイルは、所有するインベントリープラグインに応じて、多数ある形式のいずれかになります。INI-like
形式は Ansible のデフォルトで、以下の例で使用されています。
RHEL でグラフィカルユーザーインターフェイスでスマートカードを使用するには、Ansible Playbook に ipaclient_mkhomedir
変数を含めるようにします。
前提条件
- コントロールノードでのデプロイ手順を確認した。install-client.yml ファイルのパラメーターの確認 を参照すること。
手順
IdM クライアントになるホストの完全修飾ホスト名 (FQDN) を指定します。完全修飾ドメイン名は、有効な DNS 名である必要があります。
-
数字、アルファベット、およびハイフン (
-
) のみを使用できる。たとえば、アンダーラインは使用できないため、DNS の障害が発生する原因となる可能性があります。 - ホスト名がすべて小文字である。大文字は使用できません。
-
数字、アルファベット、およびハイフン (
inventory/hosts
ファイルの関連セクションに、他のオプションを指定します。-
[ipaservers]
セクションのサーバーの FQDN は、クライアントが登録される IdM サーバーを示します。 以下のいずれかのオプションを使用できます。
-
クライアントが登録される IdM サーバーの DNS ドメイン名を指定する
[ipaclients:vars]
セクションのipaclient_domain
オプション IdM サーバーが制御する Kerberos レルムの名前を示す
[ipaclients:vars]
セクションのipaclient_realm
オプションクライアント FQDN、サーバーの FQDN、およびドメインが定義されているインベントリーホストファイルの例
[ipaclients] client.idm.example.com [ipaservers] server.idm.example.com [ipaclients:vars] ipaclient_domain=idm.example.com [...]
-
クライアントが登録される IdM サーバーの DNS ドメイン名を指定する
-
クライアントを登録するための認証情報を指定します。以下の認証方法を使用できます。
クライアントを登録する権限のあるユーザーのパスワード。以下はデフォルトのオプションになります。
Red Hat は、Ansible Vault を使用してパスワードを保存し、Playbook ファイル (
install-client.yml
など) から Vault ファイルを直接参照することを推奨します。Ansible Vault ファイルのインベントリーファイルおよびパスワードのプリンシパルを使用した Playbook ファイルの例
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaclient state: present
安全性は低くなりますが、
inventory/hosts
ファイルの[ipaclients:vars]
セクションのipaadmin_password
オプションを使用して、admin
の認証情報が提供されます。また、別の認証ユーザーを指定するには、ユーザー名にipaadmin_principal
オプション、パスワードにipaadmin_password
オプションを使用します。これにより、Playbook ファイルinstall-client.yml
は、以下のようになります。インベントリーホストファイルの例
[...] [ipaclients:vars] ipaadmin_principal=my_admin ipaadmin_password=Secret123
インベントリーファイルのプリンシパルおよびパスワードを使用した Playbook の例
- name: Playbook to unconfigure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true
以前登録した クライアントキータブ が利用できる場合は、以下を行います。
このオプションは、システムが Identity Management クライアントとして登録されたことがある場合に使用できます。この認証方法を使用するには、
ipaclient_keytab
オプションをコメント解除します。たとえば、inventory/hosts
の[ipaclient:vars]
セクションにあるように、キータブを格納しているファイルへのパスを指定します。登録時に生成される ランダムなワンタイムパスワード (OTP)。この認証方法を使用するには、インベントリーファイルの
ipaclient_use_otp=yes
オプションを使用します。たとえば、inventory/hosts
ファイルの[ipaclients:vars]
セクションで、#ipaclient_use_otp=yes
オプションをコメント解除できます。OTP では、以下のいずれかのオプションも指定する必要があります。-
クライアントを登録する権限のあるユーザーのパスワード (例:
inventory/hosts
ファイルの[ipaclients:vars]
セクションにipaadmin_password
の値を指定)。 -
管理者キータブ (例:
inventory/hosts
の[ipaclients:vars]
セクションにipaadmin_keytab
の値を指定)。
-
クライアントを登録する権限のあるユーザーのパスワード (例:
関連情報
-
Ansible ロール
ipaclient
で使用できるオプションの詳細は、/usr/share/ansible/roles/ipaclient/README.md
を参照してください。 - subID 範囲の手動管理
4.3. install-client.yml ファイルのパラメーターの確認
Playbook ファイル install-client.yml
には、IdM クライアントのデプロイメント手順が含まれています。
手順
ファイルを開き、Playbook の命令がデプロイメントのプランニング内容に対応するかどうかを確認します。通常、内容は以下のようになります。
--- - name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true roles: - role: ipaclient state: present
以下は、個々のエントリーが意味するものです。
-
hosts エントリーは、
ipa-client-install
スクリプトを実行するホストのFQDNs
を ansaible スクリプトが検索するinventory/hosts
のセクションを指定します。 -
become: true
エントリーは、ipa-client-install
スクリプトの実行時に root の認証情報が呼び出されるように指定します。 -
role: ipaclient
エントリーは、ホストにインストールされるロールを指定します。この場合は ipa クライアントロールになります。 -
state: present
エントリーは、アンインストール (absent
) ではなくクライアントをインストールするように指定します。
-
hosts エントリーは、
4.4. Ansible Playbook で IdM クライアント登録の認可オプション
インベントリーおよび Playbook ファイルの例を使用した IdM クライアント登録の個別認証オプションは以下のとおりです。
表4.1 Ansible で IdM クライアント登録の認可オプション
認可オプション | 備考 | インベントリーファイルの例 | Playbook ファイル install-client.yml の例 |
---|---|---|---|
クライアントを登録する権限のあるユーザーのパスワード - オプション 1 | Ansible vault に保存されているパスワード |
[ipaclients:vars] [...] |
- name: Playbook to configure IPA clients with username/password hosts: ipaclients become: true vars_files: - playbook_sensitive_data.yml roles: - role: ipaclient state: present |
クライアントを登録する権限のあるユーザーのパスワード - オプション 2 | インタベントリーファイルに格納されるパスワード |
[ipaclients:vars] ipaadmin_password=Secret123 |
- name: Playbook to configure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true |
ランダムなワンタイムパスワード (OTP) - オプション 1 | OTP および管理者パスワード |
[ipaclients:vars] ipaadmin_password=Secret123 ipaclient_use_otp=true |
- name: Playbook to configure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true |
ランダムなワンタイムパスワード (OTP) - オプション 2 | OTP および管理者キータブ |
[ipaclients:vars] ipaadmin_keytab=/root/admin.keytab ipaclient_use_otp=true |
- name: Playbook to configure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true |
前回登録時のクライアントキータブ |
[ipaclients:vars] ipaclient_keytab=/root/krb5.keytab |
- name: Playbook to configure IPA clients hosts: ipaclients become: true roles: - role: ipaclient state: true |
RHEL 8.8 以降、上記の 2 つの OTP 承認シナリオでは、kinit
コマンドを使用した管理者の TGT の要求は、最初に指定または検出された IdM サーバーで行われます。したがって、Ansible コントロールノードを追加変更する必要はありません。RHEL 8.8 より前は、制御ノードに krb5-workstation
パッケージが必要でした。
4.5. Ansible Playbook を使用した IdM クライアントのデプロイ
Ansible Playbook を使用して IdM 環境に IdM クライアントをデプロイするには、この手順を完了します。
前提条件
IdM クライアントのデプロイメントのパラメーターを、デプロイメントシナリオに対応するように設定している。
- install-client.yml のパラメーター を確認しました。
手順
Ansible Playbook を使用して IdM クライアントをインストールする場合は、
ansible-playbook
コマンドに Playbook ファイルの名前 (install-client.yml
など) を指定します。-i
オプションでインベントリーファイルを指定します。$ ansible-playbook --vault-password-file=password_file -v -i inventory/hosts install-client.yml
-v
オプション、-vv
オプション、または-vvv
オプションを使用して、詳細のレベルを指定します。Ansible には、Ansible Playbook スクリプトの実行が通知されます。次の出力は、失敗したタスクがないため、スクリプトが正常に実行されたことを示しています。
PLAY RECAP client1.idm.example.com : ok=18 changed=10 unreachable=0 failed=0 skipped=21 rescued=0 ignored=0
注記Ansible は、さまざまな色を使用して、実行中のプロセスに関するさまざまな情報を提供します。
/etc/ansible/ansible.cfg
ファイルの[colors]
セクションで、デフォルトの色を変更できます。[colors] [...] #error = red #debug = dark gray #deprecate = purple #skip = cyan #unreachable = red #ok = green #changed = yellow [...]
Ansible Playbook を使用して、ホストに IdM クライアントをインストールしました。
4.6. Ansible インストール後の Identity Management クライアントのテスト
コマンドラインインターフェイス (CLI) により、ansible-playbook
コマンドが成功したことが表示されますが、独自のテストを行うこともできます。
Identity Management クライアントが、サーバーに定義したユーザーに関する情報を取得できることをテストするには、サーバーに定義したユーザーを解決できることを確認します。たとえば、デフォルトの admin
ユーザーを確認するには、次のコマンドを実行します。
[user@client1 ~]$ id admin
uid=1254400000(admin) gid=1254400000(admins) groups=1254400000(admins)
認証が適切に機能していることをテストするには、別の既存 IdM ユーザーで su -
を実行します。
[user@client1 ~]$ su - idm_user
Last login: Thu Oct 18 18:39:11 CEST 2018 from 192.168.122.1 on pts/0
[idm_user@client1 ~]$
4.7. Ansible Playbook での IdM クライアントのアンインストール
以下の手順に従って、Ansible Playbook を使用して IdM クライアントと機能していたホストをアンインストールします。
前提条件
- IdM 管理者の認証情報
手順
IdM クライアントをアンインストールするには、
uninstall-client.yml
など Playbook ファイルの名前を指定してansible-playbook
コマンドを実行します。-i
オプションでインベントリーファイルを指定し、必要に応じて-v
、-vv
または-vvv
オプションを使用して詳細レベルを指定します。$ ansible-playbook --vault-password-file=password_file -v -i inventory/hosts uninstall-client.yml
クライアントをアンインストールすると、基本的な IdM 設定のみがホストから削除されますが、クライアントの再インストールを行うことになった場合に備え、ホストに設定ファイルが残されます。また、アンインストールには以下の制限があります。
- IdM LDAP サーバーからクライアントホストエントリーは削除されない。アンインストールすると、ホストの登録が解除されるだけである。
- クライアントにあるサービスは、IdM から削除されない。
- クライアントの DNS エントリーは、IdM サーバーから削除されない。
-
/etc/krb5.keytab
を除き、以前の Keytab のプリンシパルは削除されない。
アンインストールを行うと、IdM CA がホスト向けに発行した証明書がすべて削除されることに注意してください。
関連情報
- IdM クライアントのアンインストール を参照してください。
第5章 Ansible Playbook を使用して IdM を管理する環境の準備
Identity Management (IdM) を管理するシステム管理者は、Red Hat Ansible Engine を使用する際に以下を行うことが推奨されます。
- ホームディレクトリーに Ansible Playbook 専用のサブディレクトリー (例: ~/MyPlaybooks) を作成します。
-
/usr/share/doc/ansible-freeipa/*
と/usr/share/doc/rhel-system-roles/*
ディレクトリーおよびサブディレクトリーから ~/MyPlaybooks ディレクトリーにサンプル Ansible Playbook をコピーして調整します。 - ~/MyPlaybooks ディレクトリーにインベントリーファイルを追加します。
このプラクティスを使用すると、すべての Playbook を 1 か所で見つけることができます。
マネージドノードで root
権限を呼び出さずに ansible-freeipa
Playbook を実行できます。例外には、ipaserver
、ipareplica
、ipaclient
、ipasmartcard_server
、ipasmartcard_client
、および ipabackup
ansible-freeipa
ロールを使用する Playbook が含まれます。これらのロールには、ディレクトリーおよび dnf
ソフトウェアパッケージマネージャーへの特権アクセスが必要です。
Red Hat Enterprise Linux IdM ドキュメントの Playbook は、次の セキュリティー設定 を前提としています。
-
IdM
admin
は、管理ノードのリモート Ansible ユーザーです。 -
Ansible vault に暗号化された IdM
admin
パスワードを保存します。 - Ansible vault を保護するパスワードをパスワードファイルに配置しました。
- ローカルの ansible ユーザーを除く全員に対して、vault パスワードファイルへのアクセスをブロックします。
- vault パスワードファイルを定期的に削除して再作成します。
別のセキュリティー設定 も検討してください。
5.1. Ansible Playbook を使用して IdM を管理するためのコントロールノードと管理ノードの準備
~/MyPlaybooks ディレクトリーを作成し、それを使用して Ansible Playbook を保存および実行できるように設定するには、次の手順に従います。
前提条件
- 管理対象ノードに IdM サーバー (server.idm.example.com および replica.idm.example.com) をインストールしている。
- DNS およびネットワークを設定し、コントロールノードから直接管理対象ノード (server.idm.example.com および replica.idm.example.com) にログインすることができる。
-
IdM
admin
のパスワードを把握している。
手順
Ansible 設定および Playbook のディレクトリーをホームディレクトリーに作成します。
$ mkdir ~/MyPlaybooks/
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks
~/MyPlaybooks/ansible.cfg ファイルを以下の内容で作成します。
[defaults] inventory = /home/your_username/MyPlaybooks/inventory remote_user = admin
~/MyPlaybooks/inventory ファイルを以下の内容で作成します。
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
この設定は、これらの場所にあるホストの 2 つのホストグループ (eu と us) を定義します。さらに、この設定は、eu および us グループのすべてのホストを含む ipaserver ホストグループを定義します。
[オプション] SSH 公開鍵および秘密鍵を作成します。テスト環境でのアクセスを簡素化するには、秘密鍵にパスワードを設定しないでください。
$ ssh-keygen
各マネージドノードの IdM
admin
アカウントに SSH 公開鍵をコピーします。$ ssh-copy-id admin@server.idm.example.com $ ssh-copy-id admin@replica.idm.example.com
これらのコマンドでは、IdM
管理者
パスワードを入力します。Vault パスワードを含む password_file ファイルを作成します。
redhat
ファイルを変更する権限を変更します。
$ chmod 0600 password_file
IdM の
admin
パスワードを保存する secret.yml Ansible Vault を作成します。Vault パスワードを保存するように password_file を設定します。
$ ansible-vault create --vault-password-file=password_file secret.yml
プロンプトが表示されたら、secret.yml ファイルの内容を入力します。
ipaadmin_password: Secret123
Playbook で暗号化された ipaadmin_password
を使用するには、vars_file
ディレクティブを使用する必要があります。たとえば、IdM ユーザーを削除する単純な Playbook は次のようになります。
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete user robot ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: robot state: absent
Playbook を実行するときに、--vault-password-file=password_file
オプションを追加して、Ansible に Vault パスワードを使用して ipaadmin_password
を復号するように指示します。以下に例を示します。
ansible-playbook -i inventory --vault-password-file=password_file del-user.yml
セキュリティー上の理由から、各セッションの終了時に Vault パスワードファイルを削除し、新しいセッションの開始時に手順 7 ~ 9 を繰り返します。
5.2. ansible-freeipa Playbook に必要な認証情報を提供するさまざまな方法
ansible-freeipa
ロールおよびモジュールを使用する Playbook の実行に必要な認証情報を提供するための様々な方法には長所と短所があります。
Playbook にパスワードを平文で保存する
利点:
- Playbook を実行するたびにプロンプトが表示されません。
- 実装が簡単。
短所:
- ファイルにアクセスできるすべてのユーザーがパスワードを読み取ることができます。内部または外部のリポジトリーなどで間違った権限を設定してファイルを共有すると、セキュリティーが損なわれる可能性があります。
- 高いメンテナンス作業: パスワードが変更された場合は、すべての Playbook で変更する必要があります。
Playbook の実行時に対話的にパスワードを入力する
利点:
- パスワードはどこにも保存されないため、誰もパスワードを盗むことはできません。
- パスワードを簡単に更新できます。
- 実装が簡単。
短所:
- スクリプトで Ansible Playbook を使用している場合は、パスワードを対話的に入力する必要があると不便な場合があります。
パスワードを Ansible Vault に保存し、Vault パスワードをファイルに保存します。
利点:
- ユーザーパスワードは暗号化されて保存されます。
- 新しい Ansible Vault を作成することで、ユーザーパスワードを簡単に更新できます。
-
ansible-vault rekey --new-vault-password-file=NEW_VAULT_PASSWORD_FILE secret.yml
コマンドを使用して、ansible Vault を保護するパスワードファイルを簡単に更新できます。 - スクリプトで Ansible Playbook を使用している場合は、Ansible Vault を対話的に保護するパスワードを入力する必要がないのは便利です。
短所:
- 機密性の高いプレーンテキストパスワードを含むファイルは、ファイルのアクセス許可やその他のセキュリティー対策によって保護することが重要です。
パスワードを Ansible Vault に保存し、Vault のパスワードを対話的に入力する
利点:
- ユーザーパスワードは暗号化されて保存されます。
- Vault のパスワードはどこにも保存されていないため、誰も盗むことはできません。
- 新しい Ansible Vault を作成することで、ユーザーパスワードを簡単に更新できます。
-
ansible-vault rekey file_name
コマンドを使用して、Vault パスワードも簡単に更新できます。
短所:
- スクリプトで Ansible Playbook を使用している場合は、Vault のパスワードを対話的に入力する必要があると不便な場合があります。
第6章 Ansible Playbook でのグローバル IdM 設定
Ansible 設定
モジュールを使用すると、Identity Management (IdM) のグローバル設定パラメーターを取得および設定できます。
6.1. Ansible Playbook での IdM 設定の取得
以下の手順では、Ansible Playbook を使用して、現在のグローバル IdM 設定に関する情報を取得する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
Ansible Playbook ファイル
/usr/share/doc/ansible-freeipa/playbooks/config/retrieve-config.yml
を開いて編集します。--- - name: Playbook to handle global IdM configuration hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Query IPA global configuration ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" register: serverconfig - debug: msg: "{{ serverconfig }}"
以下を変更してファイルを調整します。
- IdM 管理者のパスワード。
- その他の値 (必要な場合)。
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/retrieve-config.yml [...] TASK [debug] ok: [server.idm.example.com] => { "msg": { "ansible_facts": { "discovered_interpreter_ }, "changed": false, "config": { "ca_renewal_master_server": "server.idm.example.com", "configstring": [ "AllowNThash", "KDC:Disable Last Success" ], "defaultgroup": "ipausers", "defaultshell": "/bin/bash", "emaildomain": "idm.example.com", "enable_migration": false, "groupsearch": [ "cn", "description" ], "homedirectory": "/home", "maxhostname": "64", "maxusername": "64", "pac_type": [ "MS-PAC", "nfs:NONE" ], "pwdexpnotify": "4", "searchrecordslimit": "100", "searchtimelimit": "2", "selinuxusermapdefault": "unconfined_u:s0-s0:c0.c1023", "selinuxusermaporder": [ "guest_u:s0$xguest_u:s0$user_ ], "usersearch": [ "uid", "givenname", "sn", "telephonenumber", "ou", "title" ] }, "failed": false } }
6.2. Ansible Playbook での IdM CA 更新サーバーの設定
組み込みの認証局 (CA) を使用する Identity Management (IdM) デプロイメントでは、CA 更新サーバーが IdM システム証明書を維持および更新します。IdM デプロイメントを確実に堅牢化します。
IdM CA 更新サーバーロールの詳細は、IdM CA 更新サーバーの使用 を参照してください。
以下の手順では、Ansible Playbook を使用して IdM CA 更新サーバーを設定する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
必要に応じて、現在の IdM CA 更新サーバーを特定します。
$ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
Ansible Playbook ファイル
/usr/share/doc/ansible-freeipa/playbooks/config/set-ca-renewal-master-server.yml
を開いて編集します。--- - name: Playbook to handle global DNS configuration hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: set ca_renewal_master_server ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" ca_renewal_master_server: carenewal.idm.example.com
以下を変更してファイルを調整します。
-
ipaadmin_password
変数で設定した IdM 管理者のパスワード -
ca_renewal_master_server
変数で設定した CA 更新サーバーの名前。
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/set-ca-renewal-master-server.yml
検証手順
CA 更新サーバーが変更されたことを確認します。
IdM 管理者として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
IdM CA 更新サーバーの ID を要求します。
$ ipa config-show | grep ‘CA renewal’ IPA CA renewal master: carenewal.idm.example.com
この出力には、carenewal.idm.example.com サーバーが新しい CA 更新サーバーであることが分かります。
6.3. Ansible Playbook での IdM ユーザーのデフォルトシェルの設定
シェルとは、コマンドを受け入れて変換するプログラムです。Red Hat Enterprise Linux (RHEL) では、bash
、sh
、ksh
、zsh
、fish
など、複数のシェルが利用できます。Bash
(または /bin/bash
) は、ほとんどの Linux システムで一般的なシェルです。通常は、RHEL のユーザーアカウントのデフォルトシェルです。
以下の手順では、Ansible Playbook を使用して、IdM ユーザーのデフォルトシェルとして別のシェルである sh
を設定する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
-
必要に応じて、Ansible Playbook
retrieve-config.yml
を使用して、IdM ユーザーの現在のシェルを特定します。詳細は、Ansible Playbook での IdM 設定の取得 を参照してください。 inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
Ansible Playbook
/usr/share/doc/ansible-freeipa/playbooks/config/ensure-config-options-are-set.yml
ファイルを開いて編集します。--- - name: Playbook to ensure some config options are set hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Set defaultlogin and maxusername - ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" defaultshell: /bin/bash maxusername: 64
以下を変更してファイルを調整します。
-
ipaadmin_password
変数で設定した IdM 管理者のパスワード -
defaultshell
変数で設定されている IdM ユーザーのデフォルトのシェルが/bin/sh
に設定されます。
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/ensure-config-options-are-set.yml
検証手順
IdM で新しいセッションを開始すると、デフォルトのユーザーシェルが変更されていることを確認できます。
IdM 管理者として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
現在のシェルを表示します。
[admin@server /]$ echo "$SHELL" /bin/sh
ログインしているユーザーが
sh
シェルを使用している。
6.4. Ansible を使用した IdM ドメインの NETBIOS 名の設定
NetBIOS 名は、Microsoft Windows (SMB) タイプの共有およびメッセージングに使用されます。NetBIOS 名を使用して、ドライブをマップしたり、プリンターに接続したりできます。
以下の手順に従って、Ansible Playbook を使用して Identity Management (IdM) ドメインの NetBIOS 名を設定します。
前提条件
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
ansible-freeipa
パッケージをインストールしている。
想定条件
- この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されており、ボールトファイルのパスワードを知っていることを前提としています。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
- netbios-domain-name-present.yml Ansible Playbook ファイルを作成します。
以下の内容をファイルに追加します。
--- - name: Playbook to change IdM domain netbios name hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Set IdM domain netbios name ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" netbios_name: IPADOM
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory netbios-domain-name-present.yml
プロンプトが表示されたら、ボールトファイルのパスワードを入力します。
6.5. Ansible を使用して IdM ユーザーとグループに SID があることを確認する
Identity Management (IdM) サーバーは、ローカルドメインの ID 範囲のデータに基づいて、一意のセキュリティー識別子 (SID) を IdM ユーザーおよびグループに内部的に割り当てることができます。SID は、ユーザーオブジェクトとグループオブジェクトに格納されます。
IdM ユーザーとグループに SID があることを確認する目的は、特権属性証明書 (PAC) の生成を許可することです。これは、IdM-IdM 信頼への最初のステップです。IdM ユーザーおよびグループが SID を持っている場合、IdM は PAC データを使用して Kerberos チケットを発行できます。
次の目標を達成するには、次の手順に従ってください。
- 既存の IdM ユーザーおよびユーザーグループの SID を生成します。
- IdM の新しいユーザーおよびグループの SID の生成を有効にします。
前提条件
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
ansible-freeipa
パッケージをインストールしている。
想定条件
- この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されており、ボールトファイルのパスワードを知っていることを前提としています。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
- sids-for-users-and-groups-present.yml Ansible Playbook ファイルを作成します。
以下の内容をファイルに追加します。
--- - name: Playbook to ensure SIDs are enabled and users and groups have SIDs hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Enable SID and generate users and groups SIDS ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" enable_sid: true add_sids: true
enable_sid
変数は、将来の IdM ユーザーおよびグループの SID 生成を有効にします。add_sids
変数は、既存の IdM ユーザーおよびグループの SID を生成します。注記add_sids: true
を使用する場合は、enable_sid
変数をtrue
に設定する必要もあります。- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory sids-for-users-and-groups-present.yml
プロンプトが表示されたら、ボールトファイルのパスワードを入力します。
6.6. 関連情報
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-config.md
を参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/config
ディレクトリーのサンプルの Playbook を参照してください。
第7章 Ansible Playbook を使用したユーザーアカウントの管理
Ansible Playbook を使用して IdM のユーザーを管理できます。ユーザーのライフサイクル を示した後、本章では以下の操作に Ansible Playbook を使用する方法を説明します。
-
YML
ファイルに直接リストされている ユーザーを 1 つ存在させる 手順 -
YML
ファイルに直接リストされている ユーザーを複数存在させる 手順 -
YML
ファイルから参照されるJSON
ファイルにリストされている ユーザーを複数存在させる 手順 -
YML
ファイルに直接リストされている ユーザーがないことを確認 します。
7.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 グループのメンバーシップは、ローカルユーザーでは機能しません。
7.2. Ansible Playbook を使用して IdM ユーザーを存在させる手順
以下の手順では、Ansible Playbook を使用して IdM にユーザーを 1 つ存在させる方法を説明します。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
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 に存在しています。
7.3. Ansible Playbook を使用して IdM ユーザーを複数存在させる手順
以下の手順では、Ansible Playbook を使用して IdM にユーザーを複数存在させる方法を説明します。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
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 に存在しています。
7.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 ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
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 に存在しています。
7.5. Ansible Playbook を使用してユーザーが存在しないことを確認する手順
以下の手順では、Ansible Playbook を使用して、特定のユーザーが IdM に存在しないことを確認する方法を説明します。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
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 に存在しません。
7.6. 関連情報
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-user.md
Markdown ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/user
ディレクトリーのサンプルの Ansible Playbook を参照してください。
第8章 Ansible Playbook を使用したユーザーグループの管理
本セクションでは、Ansible Playbook を使用したユーザーグループの管理について紹介します。
ユーザーグループは、共通の特権、パスワードポリシーなどの特性が指定された一連のユーザーです。
Identity Management (IdM) のユーザーグループには以下が含まれます。
- IdM ユーザー
- 他の IdM ユーザーグループ
- 外部ユーザー (IdM の外部に存在するユーザー)
このセクションには、以下のトピックが含まれます。
8.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 が定義されていません。
表8.1 デフォルトで作成されたユーザーグループ
グループ名 | デフォルトのグループメンバー |
---|---|
| すべての IdM ユーザー |
|
管理権限を持つユーザー (デフォルトの |
| 特権のないレガシーグループ |
| Active Directory 信頼を管理する権限を持つユーザー |
ユーザーをユーザーグループに追加すると、ユーザーはグループに関連付けられた権限とポリシーを取得します。たとえば、ユーザーに管理権限を付与するには、ユーザーを admins
グループに追加します。
admins
グループを削除しないでください。admins
は IdM で必要な事前定義グループであるため、この操作では特定のコマンドで問題が生じます。
さらに、IdM で新しいユーザーが作成されるたびに、IdM は、デフォルトで ユーザーのプライベートグループ を作成します。プライベートグループの詳細は、プライベートグループのないユーザーの追加 を参照してください。
8.2. 直接および間接のグループメンバー
IdM のユーザーグループ属性は、直接メンバーと間接メンバーの両方に適用されます。グループ B がグループ A のメンバーである場合、グループ B のすべてのユーザーはグループ A の間接メンバーと見なされます。
たとえば、以下の図の場合:
- ユーザー 1 とユーザー 2 は、グループ A の 直接メンバー です。
- ユーザー 3、ユーザー 4、およびユーザー 5 は、グループ A の 間接メンバー です。
図8.1 直接および間接グループメンバーシップ

ユーザーグループ A にパスワードポリシーを設定すると、そのポリシーはユーザーグループ B のすべてのユーザーにも適用されます。
8.3. Ansible Playbook を使用して IdM グループおよびグループメンバーの存在を確認する
以下の手順では、Ansible Playbook を使用して、IdM グループとグループメンバー (ユーザーとユーザーグループの両方) を存在させる方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- Ansible Playbook で参照するユーザーが IdM に存在する。Ansible を使用してユーザーの存在を確認する方法は、Ansible Playbook を使用したユーザーアカウントの管理 を参照してください。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
必要なユーザーおよびグループ情報を使用して Ansible Playbook ファイルを作成します。
--- - name: Playbook to handle groups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create group ops with gid 1234 ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: ops gidnumber: 1234 - name: Create group sysops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: sysops user: - idm_user - name: Create group appops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: appops - name: Add group members sysops and appops to group ops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: ops group: - sysops - appops
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-group-members.yml
検証手順
ipa group-show
コマンドを使用すると、ops グループに sysops および appops がダイレクトメンバーとして追加され、idm_user が間接メンバーとして追加されているかどうかを確認できます。
管理者として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
ops についての情報を表示します。
ipaserver]$ ipa group-show ops Group name: ops GID: 1234 Member groups: sysops, appops Indirect Member users: idm_user
appops および sysops グループ (後者には idm_user ユーザーを含む) が IdM に存在します。
関連情報
-
/usr/share/doc/ansible-freeipa/README-group.md
Markdown ファイルを参照してください。
8.4. Ansible を使用して AD ユーザーが IdM を管理できるようにする手順
Ansible Playbook を使用してユーザー ID オーバーライドが Identity Management (IdM) グループに存在することを確認するには、次の手順に従います。ユーザー ID オーバーライドは、Active Directory (AD) とのトラストを確立した後に、デフォルトの Trust View で作成した AD ユーザーのオーバーライドです。Playbook を実行すると、AD 管理者などの AD ユーザーは、2 つの異なるアカウントとパスワードを持たなくても IdM を完全に管理できるようになります。
前提条件
-
IdM
admin
のパスワードを把握している。 - AD とのトラストをインストール している。
-
IdM に AD ユーザーのユーザー ID オーバーライドがすでに存在する。存在しない場合は、
ipa idoverrideuser-add 'default trust view' ad_user@ad.example.com
コマンドで作成します。 - ユーザー ID オーバーライドを追加しようとしているグループが、IdM にすでに存在する。
-
IdM 4.8.7 バージョン以降の IdM を使用している。サーバーにインストールされている IdM のバージョンを表示するには、
ipa --version
を実行します。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
次の内容で
add-useridoverride-to-group.yml
playbook を作成します。--- - name: Playbook to ensure presence of users in a group hosts: ipaserver - name: Ensure the ad_user@ad.example.com user ID override is a member of the admins group: ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: admins idoverrideuser: - ad_user@ad.example.com
上記の例では、以下のようになります。
-
Secret123 は IdM
admin
パスワードです。 -
admins
は、ad_user@ad.example.com ID オーバーライドを追加する IdM POSIX グループの名前です。このグループのメンバーには、完全な管理者権限があります。 - ad_user@ad.example.com は、AD 管理者のユーザー ID オーバーライドです。ユーザーは、信頼が確立された AD ドメインに保存されます。
-
Secret123 は IdM
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-useridoverride-to-group.yml
関連情報
- AD ユーザーの ID のオーバーライド
- /usr/share/doc/ansible-freeipa/README-group.md
- /usr/share/doc/ansible-freeipa/playbooks/user
- Using ID views in Active Directory environments
- IdM を管理する AD ユーザーの有効化
8.5. Ansible Playbook を使用して IdM ユーザーグループにメンバーマネージャーを存在させる手順
以下の手順では、Ansible Playbook を使用して、ユーザーとユーザーグループ両方の IdM メンバーマネージャーが存在させる方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- メンバーマネージャーとして追加するユーザーまたはグループの名前と、メンバーマネージャーが管理するグループ名を用意する。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
必要なユーザーおよびグループメンバー管理情報を使用して、Ansible Playbook ファイルを作成します。
--- - name: Playbook to handle membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure user test is present for group_a ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_user: test - name: Ensure group_admins is present for group_a ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_group: group_admins
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-user-groups.yml
検証手順
ipa group-show
コマンドを使用すると、group_a グループにメンバーマネージャーの test が含まれており、group_admins が group_a のメンバーであることが確認できます。
管理者として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
managergroup1 についての情報を表示します。
ipaserver]$ ipa group-show group_a Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test
関連情報
-
ipa host-add-member-manager --help
を参照してください。 -
ipa
の man ページを参照してください。
8.6. Ansible Playbook を使用して IdM ユーザーグループにメンバーマネージャーを存在させないようにする手順
以下の手順では、Ansible Playbook を使用して、ユーザーとユーザーグループ両方の IdM メンバーマネージャーが存在させないようにする方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- 削除する既存のメンバーマネージャーのユーザーまたはグループの名前と、そのメンバーマネージャーが管理するグループ名が必要です。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
必要なユーザーおよびグループメンバー管理情報を使用して、Ansible Playbook ファイルを作成します。
--- - name: Playbook to handle membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager user and group members are absent for group_a ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_user: test membermanager_group: group_admins action: member state: absent
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-are-absent.yml
検証手順
ipa group-show
コマンドを使用すると、group_a グループにメンバーマネージャーの test が含まれておらず、group_admins が group_a のメンバーであることが確認できます。
管理者として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
group_a についての情報を表示します。
ipaserver]$ ipa group-show group_a Group name: group_a GID: 1133400009
関連情報
-
ipa host-remove-member-manager --help
を参照してください。 -
ipa
の man ページを参照してください。
第9章 Ansible を使用した IdM のグループメンバーシップの自動化
自動グループメンバーシップを使用すると、ユーザーとホストのユーザーグループとホストグループを、その属性に基づいて自動的に割り当てることができます。たとえば、以下を行うことができます。
-
従業員のユーザーエントリーを、従業員のマネージャー、場所、役職などの属性に基づいてグループに分割します。コマンドラインに
ipa user-add --help
と入力すると、すべての属性をリスト表示できます。 -
ホストを、クラス、場所、またはその他の属性に基づいてグループに分割します。コマンドラインに
ipa host-add --help
と入力すると、すべての属性をリスト表示できます。 - 全ユーザーまたは全ホストを 1 つのグローバルグループに追加する。
Red Hat Ansible Engine を使用すると、Identity Management (IdM) で自動グループメンバーシップの管理を自動化できます。
このセクションでは、以下のトピックについて説明します。
9.1. Ansible を使用した IdM ユーザーグループの automember ルールが存在することの確認
以下の手順では、Ansible Playbook を使用して、Identity Management (IdM) グループの automember
ルールが存在することを確認する方法について説明しますこの例では、testing_group ユーザーグループに対して automember
ルールの存在が保証されます。
前提条件
-
IdM
admin
のパスワードを把握している。 - testing_group ユーザーグループが IdM に存在します。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/automember/
ディレクトリーにあるautomember-group-present.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-group-present.yml automember-group-present-copy.yml
-
automember-group-present-copy.yml
ファイルを開いて編集します。 ipaautomember
タスクセクションで次の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数を testing_group に設定します。 -
automember_type
変数を group に設定します。 -
state
変数はpresent
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Automember group present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure group automember rule admins is present ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: present
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-present-copy.yml
9.2. Ansible を使用した、IdM ユーザーグループの automember ルールに指定した条件が存在することの確認
関連情報
以下の手順では、Ansible Playbook を使用して、Identity Management (IdM) グループの automember
ルールに、指定した条件が存在することを確認する方法について説明しますこの例では、testing_group グループに対して、automember
ルールに UID 関連の条件が存在することが保証されます。.* 条件を指定することで、今後使用する IdM ユーザーがすべて自動的に testing_group のメンバーになるようにします。
前提条件
-
IdM
admin
のパスワードを把握している。 - testing_group ユーザーグループおよび automember ユーザーグループルールが IdM に存在します。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/automember/
ディレクトリーにあるautomember-hostgroup-rule-present.yml
Ansible Playbook ファイルをコピーして、名前を付けます (automember-usergroup-rule-present.yml など)。$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-usergroup-rule-present.yml
-
automember-usergroup-rule-present.yml
を開いて編集します。 次のパラメーターを変更して、ファイルを調整します。
- ユースケースに対応するように Playbook の名前を変更します (例: Automember user group rule member present)。
- ユースケースに合わせて、タスクの名前を変更します (例: Ensure an automember condition for a user group is present)。
ipaautomember
タスクセクションで、以下の変数を設定します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数を testing_group に設定します。 -
automember_type
変数をgroup
に設定します。 -
state
変数はpresent
に設定されていることを確認します。 -
action
変数がmember
に設定されていることを確認します。 -
inclusive
key
変数をUID
に設定します。 -
inclusive
expression
変数を .* に設定します。
-
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Automember user group rule member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure an automember condition for a user group is present ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: present action: member inclusive: - key: UID expression: .*
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-present.yml
検証手順
IdM 管理者としてログインします。
$ kinit admin
ユーザーを追加します。以下に例を示します。
$ ipa user-add user101 --first user --last 101 ----------------------- Added user "user101" ----------------------- User login: user101 First name: user Last name: 101 ... Member of groups: ipausers, testing_group ...
9.3. Ansible を使用した IdM ユーザーグループの automember ルールに条件がないことの確認
関連情報
以下の手順では、Ansible Playbook を使用して、Identity Management (IdM) グループの automember
ルールに条件がないことを確認する方法を説明します。この例では、automember
ルールに条件がないことが保証されており、initials
がdp であるユーザーを含める必要があることを指定しています。automember ルールが testing_group グループに適用されます。条件を適用することにより、今後は、イニシャルがdpである IdM ユーザーがtesting_groupのメンバーにならないようにします。
前提条件
-
IdM
admin
のパスワードを把握している。 - testing_group ユーザーグループおよび automember ユーザーグループルールが IdM に存在します。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/automember/
ディレクトリーにあるautomember-hostgroup-rule-absent.yml
Ansible Playbook ファイルをコピーして、名前を付けます (automember-usergroup-rule-absent.yml など)。$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-absent.yml automember-usergroup-rule-absent.yml
-
automember-usergroup-rule-absent.yml
を開いて編集します。 次のパラメーターを変更して、ファイルを調整します。
- ユースケースに対応するように Playbook の名前を変更します (例: Automember user group rule member absent)。
- ユースケースに合わせて、タスクの名前を変更します (例: Ensure an automember condition for a user group is absent)。
ipaautomember
タスクセクションで、以下の変数を設定します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数を testing_group に設定します。 -
automember_type
変数を group に設定します。 -
state
変数は、absent
に設定されていることを確認します。 -
action
変数がmember
に設定されていることを確認します。 -
inclusive
key
変数をinitials
に設定します。 -
inclusive
expression
変数を dp に設定します。
-
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Automember user group rule member absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure an automember condition for a user group is absent ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: absent action: member inclusive: - key: initials expression: dp
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-absent.yml
検証手順
IdM 管理者としてログインします。
$ kinit admin
automember グループを表示します。
$ ipa automember-show --type=group testing_group Automember Rule: testing_group
出力に Inclusive Regex: initials=dp
エントリーがない場合は、testing_group automember ルールに指定した条件が含まれていないことを確認します。
9.4. Ansible を使用した IdM ユーザーグループの automember ルールがないことの確認
関連情報
以下の手順では、Ansible Playbook を使用して、Identity Management (IdM) グループに automember
ルールがないことを確認する方法を説明します。この例では、testing_group グループに automember
ルールがないことが保証されます。
automember ルールを削除すると、そのルールに関連付けられた条件もすべて削除されます。ルールから特定の条件のみを削除するには、Ansible を使用した IdM ユーザーグループの automember ルールに条件がないことの確認 を参照してください。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/automember/
ディレクトリーにあるautomember-group-absent.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-group-absent.yml automember-group-absent-copy.yml
-
automember-group-absent-copy.yml
を開いて編集します。 ipaautomember
タスクセクションで次の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数を testing_group に設定します。 -
automember_type
変数を group に設定します。 -
state
変数は、absent
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Automember group absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure group automember rule admins is absent ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: absent
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-absent.yml
関連情報
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-automember.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/automember
ディレクトリーを参照してください。
9.5. Ansible を使用した IdM ホストグループの automember ルールに条件が存在することの確認
以下の手順に従って、Ansible を使用して、IdM ホストグループの automember ルールに条件が存在することを確認します。この例では、FQDN
が .*.idm.example.com のホストが、primary_dns_domain_hosts ホストグループのメンバーであることと、FQDN
が .*.example.org であるホストが primary_dns_domain_hosts ホストグループのメンバーではないことを確認する方法を説明します。
前提条件
-
IdM
admin
のパスワードを把握している。 - primary_dns_domain_hosts ホストグループおよび automember ホストグループルールが IdM に存在します。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/automember/
ディレクトリーにあるautomember-hostgroup-rule-present.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-hostgroup-rule-present-copy.yml
-
automember-hostgroup-rule-present-copy.yml
を開いて編集します。 ipaautomember
タスクセクションで次の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数を primary_dns_domain_hosts に設定します。 -
automember_type
を hostgroup に設定します。 -
state
変数はpresent
に設定されていることを確認します。 -
action
変数がmember
に設定されていることを確認します。 -
inclusive
key
変数がfqdn
に設定されていることを確認します。 -
対応する
inclusive
expression
変数を.*.idm.example.comに設定します。 -
exclusive
key
変数をUID
に設定します。 -
対応する
exclusive
expression
変数を .*.example.org に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Automember user group rule member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure an automember condition for a user group is present ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: primary_dns_domain_hosts automember_type: hostgroup state: present action: member inclusive: - key: fqdn expression: .*.idm.example.com exclusive: - key: fqdn expression: .*.example.org
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-hostgroup-rule-present-copy.yml
関連情報
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-automember.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/automember
ディレクトリーを参照してください。
第10章 Ansible Playbook を使用した IdM でのセルフサービスルールの管理
本セクションでは、Identity Management (IdM) のセルフサービスルールを紹介し、Ansible Playbook を使用してセルフサービスアクセスルールを作成および編集する方法を説明します。セルフサービスのアクセス制御ルールにより、IdM エンティティーは IdM Directory Server エントリーで指定の操作を実行できます。
10.1. IdM でのセルフサービスアクセス制御
セルフサービスのアクセス制御ルールは、Identity Management (IdM) エンティティーが IdM Directory Server エントリーで実行できる操作を定義します (例: IdM ユーザーが独自のパスワードを更新できるなど)。
この制御方法では、認証された IdM エンティティーがその LDAP エントリー内の特定の属性を編集できますが、エントリー全体での 追加
や 削除
の操作は許可されません。
セルフサービスのアクセス制御規則を使用する場合は注意が必要です。アクセス制御ルールを誤って設定すると、エンティティーの特権が誤って昇格する可能性があります。
10.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 ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ 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
ディレクトリーを参照してください。
10.3. Ansible を使用してセルフサービスルールがないことを確認する手順
以下の手順では、Ansible Playbook を使用して、指定したセルフサービスルールが IdM 設定に存在しないことを確認する方法を説明します。以下の例では、ユーザーが自分の名前の詳細 のセルフサービスルールが IdM に存在しないことを確認する方法を説明します。これにより、ユーザーは自分の表示名や初期などを変更できないようにします。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ 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 を参照してください。
10.4. Ansible を使用してセルフサービスルールに固有の属性を含める手順
以下の手順では、Ansible Playbook を使用して、既存のセルフサービスルールに特定の設定を追加する方法を説明します。この例では、ユーザーは自分の名前詳細を管理できる のセルフサービスルールに、surname
のメンバー属性が含まれるようにします。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- ユーザーが独自の名前の詳細 セルフサービスルールが 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 を参照してください。
10.5. Ansible を使用してセルフサービスルールに固有の属性を含めいないようにする手順
以下の手順では、Ansible Playbook を使用して、セルフサービスルールに特定の設定が割り当てられないようにする方法を説明します。この Playbook を使用して、セルフサービスルールで不必要なアクセス権限を付与しないようにします。この例では、ユーザーが独自の名前の詳細を管理できる セルフサービスルールに givenname
と surname
のメンバー属性が含まれないようにします。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- ユーザーが独自の名前の詳細 セルフサービスルールが 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 を参照してください。
第11章 Ansible Playbook を使用してユーザーグループにパーミッションを委譲してユーザーを管理する手順
委譲は、セルフサービスルールおよびロールベースのアクセス制御 (RBAC) などの IdM のアクセス制御メソッドの 1 つです。委譲を使用して、あるユーザーのグループにパーミッションを割り当てて別のユーザーのグループのエントリーを管理できます。
このセクションでは、以下のトピックについて説明します。
11.1. 委譲ルール
委譲ルール を作成して、ユーザーグループにパーミッションを委譲してユーザーを管理できます。
委譲ルールを使用すると、特定のユーザーグループが、別のユーザーグループ内のユーザーの特定の属性に対して書き込み (編集) 操作を実行できます。このようなアクセス制御ルールは、委譲ルールで指定された属性のサブセットの編集に限定されており、エントリー全体の追加や削除、未指定の属性の制御はできません。
委譲ルールにより、IdM の既存のユーザーグループにパーミッションが付与されます。委任を使用すると、managers
ユーザーグループで employees
ユーザーグループでユーザーの選択された属性を管理できます。
11.2. IdM の Ansible インベントリーファイルの作成
Ansible を使用する場合は、ホームディレクトリーに Ansible Playbook 専用のサブディレクトリーを作成して、/usr/share/doc/ansible-freeipa/*
と /usr/share/doc/rhel-system-roles/*
サブディレクトリーからコピーして調整できるようにします。この方法には、以下の利点があります。
- すべての Playbook を 1 カ所で見つけることがでる。
-
root
権限を呼び出さずに Playbook を実行できる。
手順
Ansible 設定および Playbook のディレクトリーをホームディレクトリーに作成します。
$ mkdir ~/MyPlaybooks/
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks
~/MyPlaybooks/ansible.cfg ファイルを以下の内容で作成します。
[defaults] inventory = /home/<username>/MyPlaybooks/inventory [privilege_escalation] become=True
~/MyPlaybooks/inventory ファイルを以下の内容で作成します。
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
この設定は、これらの場所にあるホストの 2 つのホストグループ (eu と us) を定義します。さらに、この設定は、eu および us グループのすべてのホストを含む ipaserver ホストグループを定義します。
11.3. Ansible を使用して委譲ルールを存在させる手順
以下の手順では、Ansible Playbook を使用して、新しい IdM 委譲ルールの特権を定義して、その存在を確認する方法を説明します。この例では、新しい basic manager attributes 委譲ルールにより、managers
グループが employees
グループのメンバーに対して以下の属性の読み取りと書き込みを行うことができます。
-
businesscategory
-
departmentnumber
-
employeenumber
-
employeetype
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/delegation/
にあるdelegation-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-present.yml delegation-present-copy.yml
-
Ansible Playbook ファイル
delegation-present-copy.yml
を開きます。 ipadelegation
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は新しい委譲ルールの名前に設定します。 -
permission
変数は、付与するパーミッションをコンマ区切りのリスト (read
およびwrite
) で設定します。 -
attribute
変数は、委譲されたユーザーグループが管理できる属性のリスト (businesscategory
、departmentnumber
、employeenumber
およびemployeetype
) に変数を設定します。 -
group
変数は、属性の表示や変更権限を付与したグループの名前に設定します。 -
membergroup
変数は、属性の表示または変更が可能なグループ名に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to manage a delegation rule hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" is present ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" permission: read, write attribute: - businesscategory - departmentnumber - employeenumber - employeetype group: managers membergroup: employees
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-present-copy.yml
関連情報
- 委譲ルール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-delegation.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/ipadelegation
ディレクトリーのサンプルの Playbook を参照してください。
11.4. Ansible を使用して委譲ルールがないことを確認する手順
以下の手順では、Ansible Playbook を使用して、指定した委譲ルールが IdM 設定に存在しないことを確認する方法を説明します。以下の例では、カスタムの basic manager attributes 委譲ルールが IdM に存在しないことを確認する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks>/
/usr/share/doc/ansible-freeipa/playbooks/delegation/
ディレクトリーにあるdelegation-absent.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-present.yml delegation-absent-copy.yml
-
Ansible Playbook ファイル
delegation-absent-copy.yml
を開きます。 ipadelegation
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は委譲ルールの名前に設定します。 -
state
変数はabsent
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Delegation absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" is absent ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" state: absent
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-absent-copy.yml
関連情報
- 委譲ルール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-delegation.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/ipadelegation
ディレクトリーのサンプルの Playbook を参照してください。
11.5. Ansible を使用して委譲ルールに特定の属性を含める手順
以下の手順では、Ansible Playbook を使用して、委譲ルールに特定の設定を指定する方法を説明します。この Playbook を使用して、以前に作成した委譲ロールを変更できます。この例では、basic manager attributes 委譲ルールに departmentnumber
メンバー属性のみが含まれるようにします。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- basic manager attributes 委譲ルールが IdM に存在する。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/delegation/
にあるdelegation-member-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-member-present.yml delegation-member-present-copy.yml
-
Ansible Playbook ファイル
delegation-member-present-copy.yml
を開きます。 ipadelegation
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、変更する委譲ルールの名前に設定します。 -
attribute
変数はdepartmentnumber
に設定します。 -
action
変数はmember
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Delegation member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" member attribute departmentnumber is present ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" attribute: - departmentnumber action: member
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-present-copy.yml
関連情報
- 委譲ルール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-delegation.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/ipadelegation
ディレクトリーのサンプルの Playbook を参照してください。
11.6. Ansible を使用して委譲ルールに特定の属性を含めないようにする手順
以下の手順では、Ansible Playbook を使用して、委譲ルールに特定の設定が割り当てられないようにする方法を説明します。この Playbook を使用して、委譲ロールが不必要なアクセス権限を付与しないようします。この例では、basic manager attributes 委譲ルールに employeenumber
および employeetype
メンバー属性が含まれないようにします。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- basic manager attributes 委譲ルールが IdM に存在する。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/delegation/
にあるdelegation-member-absent.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-member-absent.yml delegation-member-absent-copy.yml
-
Ansible Playbook ファイル
delegation-member-absent-copy.yml
を開きます。 ipadelegation
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、変更する委譲ルールの名前に設定します。 -
attribute
変数はemployeenumber
およびemployeetype
に設定します。 -
action
変数はmember
に設定します。 -
state
変数はabsent
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Delegation member absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" member attributes employeenumber and employeetype are absent ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" attribute: - employeenumber - employeetype action: member state: absent
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-absent-copy.yml
関連情報
- 委譲ルール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-delegation.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/ipadelegation
ディレクトリーのサンプルの Playbook を参照してください。
第12章 Ansible Playbook を使用した IdM でのロールベースアクセス制御の管理
ロールベースアクセス制御 (RBAC) は、ロールおよび権限関連を定義する、ポリシーに依存しないアクセス制御メカニズムです。Identity Management (IdM) の RBAC のコンポーネントは、ロール、権限、パーミッションです。
- パーミッション は、ユーザーの追加または削除、グループの変更、読み取りアクセスの有効化など、特定のタスクを実行するパーミッションを付与します。
- 特権 は、新規ユーザーの追加に必要な全権限など、権限を組み合わせます。
- ロール は、ユーザー、ユーザーグループ、ホスト、またはホストグループに特権のセットを付与します。
特に大企業では、RBAC を使用すると、責任の領域を個別に設定する階層管理システムを作成できます。
本章では、Ansible Playbook を使用した RBAC の管理時に行う以下の操作について説明します。
- Ansible を使用して特権のある IdM RBAC ロールを存在させる手順
- Ansible を使用して IdM RBAC ロールを設定しないようにする手順
- Ansible を使用して、ユーザーグループに IdM RBAC ロールを割り当てる手順
- Ansible を使用して特定のユーザーに IdM RBAC ロールが割り当てられないようにする手順
- Ansible を使用してサービスを IdM RBAC ロールに所属させるように設定する手順
- Ansible を使用してホストを IdM RBAC ロールに所属させるように設定する手順
- Ansible を使用してホストグループを IdM RBAC ロールに所属させるように設定する手順
12.1. IdM のパーミッション
パーミッションは、ロールベースのアクセス制御の中で最も低いレベルの単位で、操作を適用する LDAP エントリーと合わせて操作を定義します。ブロックの構築と同様に、パーミッションは必要に応じて多くの権限に割り当てることができます。
1 つ以上の 権限 を使用して、許容される操作を定義します。
-
write
-
read
-
search
-
compare
-
add
-
delete
-
all
上記の操作は、3 つの基本的な ターゲット に適用されます。
-
subtree
: ドメイン名 (DN) (この DN のサブツリー) -
target filter
: LDAP フィルター -
target
: DN。ワイルドカードでエントリーを指定可能。
また、以下の便利なオプションは、対応する属性を設定します。
-
type
: オブジェクトのタイプ (ユーザー、グループなど) (subtree
およびtarget filter
を設定します)。 -
memberof
: グループのメンバー。target filter
を設定します。 -
targetgroup
: 特定のグループを変更する権限 (グループメンバーシップの管理権限の付与など) を付与します (target
を設定します)。
IdM パーミッションを使用すると、どのユーザーがどのオブジェクトにアクセスできるか、さらにこのようなオブジェクトの属性にアクセスできるかどうかを制御できます。IdM を使用すると、個別の属性を許可または拒否したり、ユーザー、グループ、sudo などの特定の IdM 機能を、全匿名ユーザー、全認証済みユーザー、または特定の特権ユーザーグループ限定などと、全体的な表示設定を変更したりできます。
たとえば、このアプローチではパーミッション指定に柔軟性があるので、アクセスが必要な特定のセクションのみにユーザーまたはグループのアクセスを制限し、他のセクションをこれらのユーザーまたはグループには完全に表示されないように設定する場合に、管理者にとって便利です。
パーミッションには他のパーミッションを含めることはできません。
12.2. デフォルトの管理パーミッション
管理パーミッションは、IdM にデフォルトで含まれているパーミッションです。このパーミッションはユーザーが作成した他のパーミッションと同様に機能しますが、以下の相違点があります。
- この管理パーミッションは削除できず、名前、場所、ターゲットの属性を変更できません。
このパーミッションには 3 つの属性セットがあります。
- デフォルト の属性。IdM で管理されているため、ユーザーは変更できません。
- 包含 属性。ユーザーが別途追加する属性。
- 除外 属性。ユーザーが削除する属性。
管理パーミッションは、デフォルトおよび包含属性セットに表示されている属性すべてに適用されますが、除外セットに表示されている属性には適用されません。
管理パーミッションを削除できませんが、パーミッションにバインドタイプを設定し、すべての特権から管理パーミッションを削除して管理パーミッションを効果的に無効にできます。
管理パーミッションの名前はすべて System:
から始まります (例: System: Add Sudo rule
または System: Modify Services
)。以前のバージョンの IdM では、デフォルトのパーミッションに異なるスキームを使用していました。たとえば、ユーザーはパーミッションの削除はできず、特権に割り当てるしかできませんでした。これらのデフォルトパーミッションのほとんどは、管理パーミッションに切り替わっていますが、以下のパーミッションは引き続き以前のスキームを使用します。
- Automember Rebuild メンバーシップタスクの追加
- 設定サブエントリーの追加
- レプリカ合意の追加
- 証明書削除保留
- CA から証明書のステータス取得
- DNA 範囲の読み取り
- DNA 範囲の変更
- PassSync Manager の設定の読み取り
- PassSync Manager 設定の変更
- レプリカ合意の読み込み
- レプリカ合意の修正
- レプリカ合意の削除
- LDBM データベース設定の読み取り
- 証明書の要求
- CA ACL を無視する証明書の要求
- 別のホストからの証明書の要求
- CA からの証明書の取得
- 証明書の取り消し
- IPA 設定の書き込み
コマンドラインから管理パーミッションを変更しようとし、変更不可な属性の変更をシステム側が許可しない場合には、コマンドに失敗します。Web UI から管理パーミッションを変更しようとした場合には、変更できない属性が無効になります。
12.3. IdM の特権
特権は、ロールに適用されるパーミッションのグループです。
パーミッションは単一の操作を実行する権限を提供しますが、IdM タスクを成功させるには、複数のパーミッションが必要なものがあります。したがって、特権は、特定のタスクを実行するために必要な異なるパーミッションを組み合わせたものです。
たとえば、新しい IdM ユーザーにアカウントを設定するには、以下の権限が必要です。
- 新規ユーザーエントリーの作成
- ユーザーパスワードのリセット
- 新規ユーザーのデフォルト IPA ユーザーグループへの追加
これらの 3 つの低レベルのタスクを、ユーザーの追加 という名前のカスタム特権の形式で、権限がより高いレベルのタスクに組み合わせることで、システム管理者はロールを管理しやすくなります。IdM には、すでにいくつかのデフォルト特権が含まれています。ユーザーとユーザーグループとは別に、権限はホストおよびホストグループ、およびネットワークサービスにも割り当てられます。これにより、特定のネットワークサービスを使用するホストセットのユーザーセットによって、操作をきめ細かく制御できます。
特権には、他の特権を含めることはできません。
12.4. IdM のロール
ロールは、ロールに指定したユーザーが所有する権限のリストです。
実際には、パーミッションでは、指定の低階層のタスク (ユーザーエントリーの作成、グループへのエントリーの追加など) を実行する権限を付与し、特権では、高階層のタスク (指定のグループへの新規ユーザーの作成など) に必要なこれらのパーミッション 1 つ以上を組み合わせます。ロールは必要に応じて、管理者ロールでユーザーの追加、変更、削除ができるなど、特権をまとめます。
ロールは、許可されたアクションを分類するために使用されます。ロールは、特権昇格されないようにしたり、特権の分離を実装するツールとしては使用しません。
ロールに他のロールを含めることはできません。
12.5. Identity Management で事前定義されたロール
Red Hat Identity Management には、以下の事前定義済みのロールが含まれています。
表12.1 Identity Management の定義済みロール
ロール | 特権 | 説明 |
---|---|---|
登録管理者 | ホストの登録 | クライアントまたはホストの登録を行います。 |
helpdesk | Modify Users、Reset passwords、Modify Group membership | 簡単なユーザー管理タスクを実行します。 |
IT Security Specialist | Netgroups Administrators、HBAC Administrator、Sudo Administrator | ホストベースのアクセス制御、sudo ルールなどのセキュリティーポリシーを管理します。 |
IT Specialist | Host Administrators、Host Group Administrators、Service Administrators、Automount Administrators | ホストの管理を行います |
Security Architect | Delegation Administrator、Replication Administrators、Write IPA Configuration、Password Policy Administrator | Identity Management 環境の管理、信頼の作成、レプリカ合意を作成します。 |
User Administrator | User Administrators、Group Administrators、Stage User Administrators | ユーザーおよびグループの作成を行います |
12.6. Ansible を使用して特権のある IdM RBAC ロールを存在させる手順
デフォルトのロール以外で、ロールベースのアクセス制御 (RBAC) を使用して Identity Management (IdM) のリソースを詳細にわたり制御するには、カスタムロールを作成します。
以下の手順では、Ansible Playbook を使用して、新しい IdM カスタムロールの特権を定義し、その存在を確認する方法を説明します。この例では、新しい user_and_host_administrator ロールには、デフォルトで IdM で存在する以下の特権を一意に組み合わせたものが含まれます。
-
Group Administrators
-
User Administrators
-
Stage User Administrators
-
Group Administrators
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/<MyPlaybooks>/ ディレクトリーに移動します。
$ cd ~/<MyPlaybooks>/
/usr/share/doc/ansible-freeipa/playbooks/role/
にあるrole-member-user-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-user-present.yml role-member-user-present-copy.yml
-
Ansible Playbook ファイル (
role-member-user-present-copy.yml
) を開きます。 iparole
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は新規ロールの名前に設定します。 -
特権
リストは、新しいロールに追加する IdM 権限の名前に設定します。 -
必要に応じて、
user
変数は、新規ロールを付与するユーザーの名前に設定します。 -
必要に応じて、
group
変数は、新規ロールを付与するグループの名前に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: user_and_host_administrator user: idm_user01 group: idm_group01 privilege: - Group Administrators - User Administrators - Stage User Administrators - Group Administrators
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-present-copy.yml
関連情報
- Ansible Vault を使用したコンテンツの暗号化 を参照してください。
- IdM のロール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-role
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/iparole
ディレクトリーのサンプルの Playbook を参照してください。
12.7. Ansible を使用して IdM RBAC ロールを設定しないようにする手順
Identity Management (IdM) のロールベースアクセス制御 (RBAC) を管理するシステム管理者は、誤って管理者がユーザーに割り当てることがないように、使用しなくなったロールが削除されていることを確認する必要があります。
以下の手順では、Ansible Playbook を使用してロールが削除されていることを確認する方法を説明します。以下の例では、カスタムの user_and_host_administrator ロールが IdM に存在しないことを確認する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/<MyPlaybooks>/ ディレクトリーに移動します。
$ cd ~/<MyPlaybooks>/
/usr/share/doc/ansible-freeipa/playbooks/role/
にあるrole-is-absent.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-is-absent.yml role-is-absent-copy.yml
-
Ansible Playbook ファイル (
role-is-absent-copy.yml
) を開きます。 iparole
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、ロールの名前に設定します。 -
state
変数は、absent
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: user_and_host_administrator state: absent
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-is-absent-copy.yml
関連情報
- Ansible Vault を使用したコンテンツの暗号化 を参照してください。
- IdM のロール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-role
Markdown ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/iparole
ディレクトリーのサンプルの Playbook を参照してください。
12.8. Ansible を使用して、ユーザーグループに IdM RBAC ロールを割り当てる手順
Identity Management (IdM) のロールベースアクセス制御 (RBAC) を管理するシステム管理者は、junior administrators など、特定のユーザーグループにロールを割り当てます。
以下の例では、Ansible Playbook を使用して、同梱の IdM RBAC helpdesk ロールを junior_sysadmins に割り当てる方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/<MyPlaybooks>/ ディレクトリーに移動します。
$ cd ~/<MyPlaybooks>/
/usr/share/doc/ansible-freeipa/playbooks/role/
にあるrole-member-group-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-group-present.yml role-member-group-present-copy.yml
-
Ansible Playbook ファイル (
role-member-group-present-copy.yml
) を開きます。 iparole
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、割り当てるロールの名前に設定します。 -
group
変数はグループ名に設定します。 -
action
変数はmember
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: helpdesk group: junior_sysadmins action: member
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-group-present-copy.yml
関連情報
- Ansible Vault を使用したコンテンツの暗号化 を参照してください。
- IdM のロール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-role
Markdown ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/iparole
ディレクトリーのサンプルの Playbook を参照してください。
12.9. Ansible を使用して特定のユーザーに IdM RBAC ロールが割り当てられないようにする手順
Identity Management (IdM) のロールベースアクセス制御 (RBAC) を管理するシステム管理者は、会社内で別の役職に異動した後など、特定のユーザーに RBAC ロールが割り当てられないようにすることもできます。
以下の手順では、Ansible Playbook を使用して、 user_01 および user_02 という名前のユーザーが helpdesk ロールに割り当てられないようにする方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/<MyPlaybooks>/ ディレクトリーに移動します。
$ cd ~/<MyPlaybooks>/
/usr/share/doc/ansible-freeipa/playbooks/role/
にあるrole-member-user-absent.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-user-absent.yml role-member-user-absent-copy.yml
-
Ansible Playbook ファイル (
role-member-user-absent-copy.yml
) を開きます。 iparole
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、割り当てるロールの名前に設定します。 -
user
リストをユーザーの名前に設定します。 -
action
変数はmember
に設定します。 -
state
変数はabsent
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: helpdesk user - user_01 - user_02 action: member state: absent
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-absent-copy.yml
関連情報
- Ansible Vault を使用したコンテンツの暗号化 を参照してください。
- IdM のロール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-role
Markdown ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/iparole
ディレクトリーのサンプルの Playbook を参照してください。
12.10. Ansible を使用してサービスを IdM RBAC ロールに所属させるように設定する手順
Identity Management (IdM) のロールベースアクセス制御 (RBAC) を管理するシステム管理者は、IdM に登録されている特定のサービスが、特定のロールのメンバーになっていることを確認する必要がある場合があります。以下の例では、カスタムの web_administrator ロールを使用して client01.idm.example.com サーバー上で実行中の HTTP
サービスを管理できるようにする方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- web_administrator ロールが IdM に存在する。
- HTTP/client01.idm.example.com@IDM.EXAMPLE.COM サービスが IdM に存在する。
手順
~/<MyPlaybooks>/ ディレクトリーに移動します。
$ cd ~/<MyPlaybooks>/
/usr/share/doc/ansible-freeipa/playbooks/role/
にあるrole-member-service-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-service-present-absent.yml role-member-service-present-copy.yml
-
Ansible Playbook ファイル (
role-member-service-present-copy.yml
) を開きます。 iparole
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、割り当てるロールの名前に設定します。 -
service
リストはサービス名に設定します。 -
action
変数はmember
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: web_administrator service: - HTTP/client01.idm.example.com action: member
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-service-present-copy.yml
関連情報
- Ansible Vault を使用したコンテンツの暗号化 を参照してください。
- IdM のロール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-role
Markdown ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/iparole
ディレクトリーのサンプルの Playbook を参照してください。
12.11. Ansible を使用してホストを IdM RBAC ロールに所属させるように設定する手順
Identity Management (IdM) でロールベースアクセス制御を管理するシステム管理者は、特定のホストまたはホストグループが特定のロールに関連付けられていることを確認する必要がある場合があります。以下の例では、カスタムの web_administrator ロールが HTTP
サービスを実行している client01.idm.example.com の IdM ホストを管理できるようにする方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- web_administrator ロールが IdM に存在する。
- client01.idm.example.com ホストが IdM に存在する。
手順
~/<MyPlaybooks>/ ディレクトリーに移動します。
$ cd ~/<MyPlaybooks>/
/usr/share/doc/ansible-freeipa/playbooks/role/
にあるrole-member-host-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-host-present.yml role-member-host-present-copy.yml
-
Ansible Playbook ファイル (
role-member-host-present-copy.yml
) を開きます。 iparole
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、割り当てるロールの名前に設定します。 -
host
リストをホストの名前に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: web_administrator host: - client01.idm.example.com action: member
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-host-present-copy.yml
関連情報
- Ansible Vault を使用したコンテンツの暗号化 を参照してください。
- IdM のロール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-role
Markdown ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/iparole
ディレクトリーのサンプルの Playbook を参照してください。
12.12. Ansible を使用してホストグループを IdM RBAC ロールに所属させるように設定する手順
Identity Management (IdM) でロールベースアクセス制御を管理するシステム管理者は、特定のホストまたはホストグループが特定のロールに関連付けられていることを確認する必要がある場合があります。以下の例では、カスタムの web_administrator ロールが HTTP
サービスを実行している IdM ホストの web_servers グループを管理できるようにする方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- web_administrator ロールが IdM に存在する。
- web_servers ホストグループが IdM に存在する。
手順
~/<MyPlaybooks>/ ディレクトリーに移動します。
$ cd ~/<MyPlaybooks>/
/usr/share/doc/ansible-freeipa/playbooks/role/
にあるrole-member-hostgroup-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-hostgroup-present.yml role-member-hostgroup-present-copy.yml
-
Ansible Playbook ファイル (
role-member-hostgroup-present-copy.yml
) を開きます。 iparole
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、割り当てるロールの名前に設定します。 -
hostgroup
リストはホストグループ名に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: web_administrator hostgroup: - web_servers action: member
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-hostgroup-present-copy.yml
関連情報
- Ansible Vault を使用したコンテンツの暗号化 を参照してください。
- IdM のロール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-role
Markdown ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/iparole
ディレクトリーのサンプルの Playbook を参照してください。
第13章 Ansible Playbook を使用した RBAC 権限の管理
ロールベースアクセス制御 (RBAC) は、ロール、権限およびパーミッションで定義する、ポリシーに依存しないアクセス制御メカニズムです。特に大企業では、RBAC を使用すると、責任の領域を個別に設定する階層管理システムを作成できます。
本章では、Ansible Playbook を使用して Identity Management (IdM) で RBAC 権限を管理する以下の操作について説明します。
前提条件
- RBAC の概念および原則 について理解している。
13.1. Ansible を使用してカスタムの IdM RBAC 特権を存在させる手順
Identity Management (IdM) のロールベースアクセス制御 (RBAC) でカスタム権限を完全に機能させるには、ステージごとに進めていく必要があります。
- パーミッションが割り当てられていない特権を作成します。
- 選択したパーミッションを特権に追加します。
以下の手順では、後でパーミッションを追加できるように、Ansible Playbook を使用して空の特権を作成する方法を説明します。この例では、ホスト管理に関連するすべての IdM パーミッションを組み合わせられるように full_host_administration という名前の特権を作成する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/privilege/
にあるprivilege-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-present.yml privilege-present-copy.yml
-
Ansible Playbook ファイル (
privilege-present-copy.yml
) を開きます。 ipaprivilege
タスクセクションに以下の変数を設定してファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、新しい特権 full_host_administration の名前に設定します。 -
必要に応じて、
description
変数を使用して特権を記述します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Privilege present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure privilege full_host_administration is present ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: full_host_administration description: This privilege combines all IdM permissions related to host administration
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-present-copy.yml
13.2. Ansible を使用してカスタムの IdM RBAC 特権にメンバーパーミッションを存在させる手順
Identity Management (IdM) のロールベースアクセス制御 (RBAC) でカスタム権限を完全に機能させるには、ステージごとに進めていく必要があります。
- パーミッションが割り当てられていない特権を作成します。
- 選択したパーミッションを特権に追加します。
以下の手順では、Ansible Playbook を使用して、前の手順で作成した特権にパーミッションを追加する方法を説明します。この例では、ホスト管理に関連する IdM パーミッションをすべて、full_host_administration という名前の特権に追加する方法を説明します。デフォルトでは、パーミッションは Host Enrollment
、Host Administrators
および Host Group Administrator
特権の間で分散されます。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- full_host_administration 権限が存在する。Ansible を使用して特権を作成する方法の詳細は、Ansible を使用してカスタムの IdM RBAC 特権を存在させる手順 を参照してください。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/privilege/
にあるprivilege-member-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-member-present.yml privilege-member-present-copy.yml
-
Ansible Playbook ファイル (
privilege-member-present-copy.yml
) を開きます。 ipaprivilege
タスクセクションに以下の変数を設定してファイルを調整します。-
使用しているユースケースに合わせて、タスクの
名前
を調節します。 -
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、特権の名前に設定します。 -
permission
は、特権に追加するパーミッションの名前を設定します。 -
action
変数がmember
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Privilege member present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that permissions are present for the "full_host_administration" privilege ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: full_host_administration permission: - "System: Add krbPrincipalName to a Host" - "System: Enroll a Host" - "System: Manage Host Certificates" - "System: Manage Host Enrollment Password" - "System: Manage Host Keytab" - "System: Manage Host Principals" - "Retrieve Certificates from the CA" - "Revoke Certificate" - "System: Add Hosts" - "System: Add krbPrincipalName to a Host" - "System: Enroll a Host" - "System: Manage Host Certificates" - "System: Manage Host Enrollment Password" - "System: Manage Host Keytab" - "System: Manage Host Keytab Permissions" - "System: Manage Host Principals" - "System: Manage Host SSH Public Keys" - "System: Manage Service Keytab" - "System: Manage Service Keytab Permissions" - "System: Modify Hosts" - "System: Remove Hosts" - "System: Add Hostgroups" - "System: Modify Hostgroup Membership" - "System: Modify Hostgroups" - "System: Remove Hostgroups"
-
使用しているユースケースに合わせて、タスクの
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-present-copy.yml
13.3. Ansible を使用して IdM RBAC 特権にパーミッションが含まれないようにする手順
Identity Management (IdM) のシステム管理者は、IdM のロールベースアクセス制御をカスタマイズできます。
以下の手順では、Ansible Playbook を使用して、特権からパーミッションを削除する方法を説明します。この例では、管理者がセキュリティー上のリスクを考慮するため、デフォルトの Certificate Administrators
特権から Request Certificates ignoring CA ACLs
を削除する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/privilege/
にあるprivilege-member-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-member-absent.yml privilege-member-absent-copy.yml
-
Ansible Playbook ファイル (
privilege-member-absent-copy.yml
) を開きます。 ipaprivilege
タスクセクションに以下の変数を設定してファイルを調整します。-
使用しているユースケースに合わせて、タスクの
名前
を調節します。 -
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、特権の名前に設定します。 -
permission
のリストは、特権から削除するパーミッションの名前に設定します。 -
action
変数がmember
に設定されていることを確認します。 -
state
変数はabsent
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Privilege absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "Request Certificate ignoring CA ACLs" permission is absent from the "Certificate Administrators" privilege ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: Certificate Administrators permission: - "Request Certificate ignoring CA ACLs" action: member state: absent
-
使用しているユースケースに合わせて、タスクの
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-absent-copy.yml
13.4. Ansible を使用してカスタムの IdM RBAC 権限の名前を変更する手順
Identity Management (IdM) のシステム管理者は、IdM のロールベースアクセス制御をカスタマイズできます。
以下の手順では、たとえば、パーミッションの一部を削除したなどの理由から、特権の名前を変更する方法を説明します。パーミッションを削除した結果、特権の名前は正確ではなくなりました。この例では、管理者は full_host_administration 特権の名前を limited_host_administration に変更します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- full_host_administration 権限が存在する。特権の追加方法は、Ansible を使用してカスタムの IdM RBAC 特権を存在させる手順 を参照してください。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/privilege/
にあるprivilege-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-present.yml rename-privilege.yml
-
Ansible Playbook ファイル (
rename-privilege.yml
) を開いて編集します。 ipaprivilege
タスクセクションに以下の変数を設定してファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、現在の特権名に設定します。 -
rename
変数を追加して、特権の新しい名前に設定します。 -
state
変数を追加し、renamed
に設定します。
-
以下のように、Playbook 自体の名前を変更します。
--- - name: Rename a privilege hosts: ipaserver
以下のように、Playbook のタスクの名前を変更します。
[...] tasks: - name: Ensure the full_host_administration privilege is renamed to limited_host_administration ipaprivilege: [...]
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Rename a privilege hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the full_host_administration privilege is renamed to limited_host_administration ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: full_host_administration rename: limited_host_administration state: renamed
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory rename-privilege.yml
13.5. Ansible を使用して IdM RBAC 特権が含まれないようにする手順
Identity Management (IdM) のシステム管理者は、IdM のロールベースアクセス制御をカスタマイズできます。以下の手順では、Ansible Playbook を使用して RBAC 特権が削除されていることを確認する方法を説明します。この例では、CA administrator
特権が存在しないことを確認する方法を説明します。この手順が終わると、IdM で認証局を管理できるユーザーは admin
だけになります。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/privilege/
ディレクトリーにあるprivilege-absent.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-absent.yml privilege-absent-copy.yml
-
Ansible Playbook ファイル (
privilege-absent-copy.yml
) を開きます。 ipaprivilege
タスクセクションに以下の変数を設定してファイルを調整します。-
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数は、削除する権限の名前に設定します。 -
state
変数がabsent
に設定されていることを確認します。
-
以下のように、Playbook のタスクの名前を変更します。
[...] tasks: - name: Ensure privilege "CA administrator" is absent ipaprivilege: [...]
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Privilege absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure privilege "CA administrator" is absent ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: CA administrator state: absent
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-absent-copy.yml
13.6. 関連情報
- IdM の特権 を参照してください。
- IdM のパーミッション を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーで利用可能なREADME-privilege
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/ipaprivilege
ディレクトリーのサンプルの Playbook を参照してください。
第14章 Ansible Playbook を使用した IdM での RBAC パーミッションの管理
ロールベースアクセス制御 (RBAC) は、ロール、権限およびパーミッションで定義する、ポリシーに依存しないアクセス制御メカニズムです。特に大企業では、RBAC を使用すると、責任の領域を個別に設定する階層管理システムを作成できます。
本章では、Ansible Playbook を使用して Identity Management (IdM) で RBAC パーミッションの管理時に行う、以下の操作について説明します。
前提条件
- RBAC の概念および原則 について理解している。
14.1. Ansible を使用して RBAC パーミッションを存在させる手順
Identity Management (IdM) のシステム管理者は、IdM のロールベースアクセス制御 (RBAC) をカスタマイズできます。
以下の手順では、Ansible Playbook を使用して、パーミッションを特権に追加できるように IdM にパーミッションを追加する方法を説明します。この例では、目的とする以下の状態を達成する方法を説明します。
-
MyPermission
パーミッションが存在する。 -
MyPermission
パーミッションだけがホストに適用できる。 パーミッションを含む特権を付与されたユーザーは、エントリーに対して以下の操作すべてを実行できます。
- Write
- Read
- Search
- Compare
- Add
- Delete
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/permission/
ディレクトリーにあるpermission-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-present.yml permission-present-copy.yml
-
Ansible Playbook ファイル (
permission-present-copy.yml
) を開きます。 ipapermission
タスクセクションに以下の変数を設定して、ファイルを調整します。-
使用しているユースケースに合わせて、タスクの
名前
を調節します。 -
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数はパーミッションの名前に設定します。 -
object_type
変数はhost
に設定します。 -
right
変数はall
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Permission present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "MyPermission" permission is present ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission object_type: host right: all
-
使用しているユースケースに合わせて、タスクの
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-copy.yml
14.2. Ansible を使用して属性を含めて RBAC パーミッションを追加する手順
Identity Management (IdM) のシステム管理者は、IdM のロールベースアクセス制御 (RBAC) をカスタマイズできます。
以下の手順では、Ansible Playbook を使用して、パーミッションを特権に追加できるように IdM にパーミッションを追加する方法を説明します。この例では、目的とする以下の状態を達成する方法を説明します。
- MyPermission パーミッションが存在する。
- MyPermission パーミッションだけがホストの追加に使用できる。
パーミッションを含む特権を付与されたユーザーは、ホストのエントリーに対して以下の操作すべてを実行できる。
- Write
- Read
- Search
- Compare
- Add
- Delete
-
MyPermission パーミッションを含む特権のあるユーザーが作成したホストエントリーに
description
の値を追加できる。
IdM LDAP スキーマでは、パーミッションの作成または変更時に指定できる属性のタイプは制約されません。ただし、object_type
が host
の場合に attrs: car_licence
を指定すると、後でパーミッションを実行して、車のライセンス値をホストに追加使用とすると ipa: ERROR: attribute "car-license" not allowed
というエラーメッセージが表示されます。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/permission/
ディレクトリーにあるpermission-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-present.yml permission-present-with-attribute.yml
-
Ansible Playbook ファイル (
permission-present-with-attribute.yml
) を開きます。 ipapermission
タスクセクションに以下の変数を設定して、ファイルを調整します。-
使用しているユースケースに合わせて、タスクの
名前
を調節します。 -
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数はパーミッションの名前に設定します。 -
object_type
変数はhost
に設定します。 -
right
変数はall
に設定します。 -
attrs
変数はdescription
に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Permission present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "MyPermission" permission is present with an attribute ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission object_type: host right: all attrs: description
-
使用しているユースケースに合わせて、タスクの
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-with-attribute.yml
関連情報
- RHEL 7 の Linux Domain Identity, Authentication and Policy Guide の User and group schema を参照してください。
14.3. Ansible を使用して RBAC パーミッションをバインドする手順
Identity Management (IdM) のシステム管理者は、IdM のロールベースアクセス制御 (RBAC) をカスタマイズできます。
以下の手順では、Ansible Playbook を使用して、パーミッションを特権に追加できないように IdM からパーミッションを削除する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/permission/
ディレクトリーにあるpermission-absent.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-absent.yml permission-absent-copy.yml
-
Ansible Playbook ファイル (
permission-absent-copy.yml
) を開きます。 ipapermission
タスクセクションに以下の変数を設定して、ファイルを調整します。-
使用しているユースケースに合わせて、タスクの
名前
を調節します。 -
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数はパーミッションの名前に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Permission absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "MyPermission" permission is absent ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission state: absent
-
使用しているユースケースに合わせて、タスクの
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-absent-copy.yml
14.4. Ansible を使用して属性を IdM RBAC パーミッションをメンバーにする手順
Identity Management (IdM) のシステム管理者は、IdM のロールベースアクセス制御 (RBAC) をカスタマイズできます。
以下の手順では、Ansible Playbook を使用して、属性が IdM の RBAC パーミッションのメンバーであることを確認する方法を説明します。この手順を行うと、パーミッションのあるユーザーは、属性のあるエントリーを作成できます。
この例では、MyPermission パーミッションを含む特権を持つユーザーにより作成されたホストエントリーに、gecos
および description
の値を設定する方法を説明します。
IdM LDAP スキーマでは、パーミッションの作成または変更時に指定できる属性のタイプは制約されません。ただし、object_type
が host
の場合に attrs: car_licence
を指定すると、後でパーミッションを実行して、車のライセンス値をホストに追加使用とすると ipa: ERROR: attribute "car-license" not allowed
というエラーメッセージが表示されます。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- MyPermission パーミッションが存在する。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/permission/
ディレクトリーにあるpermission-member-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-member-present.yml permission-member-present-copy.yml
-
Ansible Playbook ファイル (
permission-member-present-copy.yml
) を開きます。 ipapermission
タスクセクションに以下の変数を設定して、ファイルを調整します。-
使用しているユースケースに合わせて、タスクの
名前
を調節します。 -
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数はパーミッションの名前に設定します。 -
attrs
リストをdescription
およびgecos
変数に設定します。 -
action
変数がmember
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Permission member present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "gecos" and "description" attributes are present in "MyPermission" ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission attrs: - description - gecos action: member
-
使用しているユースケースに合わせて、タスクの
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-present-copy.yml
14.5. Ansible を使用して属性が IdM RBAC パーミッションのメンバーに含まれないようにする手順
Identity Management (IdM) のシステム管理者は、IdM のロールベースアクセス制御 (RBAC) をカスタマイズできます。
以下の手順では、Ansible Playbook を使用して、属性が IdM の RBAC パーミッションに含まれないようにする方法を説明します。この手順を実行すると、パーミッションのあるユーザーが IdM LDAP にエントリーを作成すると、そのエントリーで、値に属性を関連付けて設定できません。
この例では、目的とする以下の状態を達成する方法を説明します。
- MyPermission パーミッションが存在する。
-
MyPermission パーミッションを含む特権のあるユーザーが作成したホストエントリーに
description
属性を使用できない。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- MyPermission パーミッションが存在する。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/permission/
ディレクトリーにあるpermission-member-absent.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-member-absent.yml permission-member-absent-copy.yml
-
Ansible Playbook ファイル (
permission-member-absent-copy.yml
) を開きます。 ipapermission
タスクセクションに以下の変数を設定して、ファイルを調整します。-
使用しているユースケースに合わせて、タスクの
名前
を調節します。 -
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数はパーミッションの名前に設定します。 -
attrs
変数はdescription
に設定します。 -
action
変数はmember
に設定します。 -
state
変数がabsent
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Permission absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that an attribute is not a member of "MyPermission" ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission attrs: description action: member state: absent
-
使用しているユースケースに合わせて、タスクの
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-absent-copy.yml
14.6. Ansible を使用して IdM RBAC パーミッションの名前を変更する手順
Identity Management (IdM) のシステム管理者は、IdM のロールベースアクセス制御をカスタマイズできます。
以下の手順では、Ansible Playbook を使用してパーミッションの名前を変更する方法を説明します。この例では、MyPermission の名前を MyNewPermission に変更する方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- MyPermission が IdM に存在する。
- MyNewPermission が IdM に存在しない。
手順
~/ MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/permission/
ディレクトリーにあるpermission-renamed.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-renamed.yml permission-renamed-copy.yml
-
Ansible Playbook ファイル (
permission-renamed-copy.yml
) を開きます。 ipapermission
タスクセクションに以下の変数を設定して、ファイルを調整します。-
使用しているユースケースに合わせて、タスクの
名前
を調節します。 -
ipaadmin_password
変数は IdM 管理者のパスワードに設定します。 -
name
変数はパーミッションの名前に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Permission present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Rename the "MyPermission" permission ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission rename: MyNewPermission state: renamed
-
使用しているユースケースに合わせて、タスクの
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-renamed-copy.yml
14.7. 関連情報
- IdM のパーミッション を参照してください。
- IdM の特権 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーで利用可能なREADME-permission
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/ipapermission
ディレクトリーのサンプルの Playbook を参照してください。
第15章 Ansible を使用した IdM でのレプリケーショントポロジーの管理
複数の Identity Management (IdM) サーバーを維持し、冗長性の目的で相互に複製して、サーバーの損失を軽減または防止することができます。たとえば、1 台のサーバーに障害が発生しても、その他のサーバーがドメインにサービスを提供し続けます。障害が発生していないサーバーの 1 台から新しいレプリカを作成し、失われたサーバーを回復することもできます。
IdM サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリケートされるデータはトポロジーの suffix
に保存されます。2 つのレプリカに接尾辞間でレプリカ合意があると、接尾辞はトポロジー segment
を形成します。
本章では、Red Hat Ansible Engine を使用して IdM レプリカ合意、トポロジーセグメント、およびトポロジー接尾辞を管理する方法を説明します。本章は以下のセクションで設定されます。
15.1. Ansible を使用して、レプリカ合意が IdM に存在することを確認
Identity Management (IdM) サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリカ合意は常に双方向のものです。最初のレプリカからサーバーから別のレプリカにデータが複製されるだけでなく、別ののレプリカから最初のレプリカにもデータが複製されます。
この手順に従い、Ansible Playbook を使用して、server.idm.example.com と replica.idm.example.com との間で domain
タイプのレプリカ合意が存在することを確認説明します。
前提条件
- トポロジーで IdM レプリカを接続するためのガイドライン に記載されている IdM トポロジーを設計するための推奨事項を確実に理解している。
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible -freeipa/playbooks/topology/
ディレクトリーにあるadd-topologysegment.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegment.yml add-topologysegment-copy.yml
-
add-topologysegment-copy.yml
ファイルを開いて編集します。 ipatopologysegment
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
追加するセグメントのタイプに応じて、
suffix
変数をdomain
またはca
のいずれかに設定します。 -
left
の変数をレプリカ合意の左ノードに設定する IdM サーバーの名前に設定します。 -
レプリカ合意の適切なノードとなる IdM サーバーの名前に
right
変数を設定します。 -
state
変数はpresent
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: server.idm.example.com right: replica.idm.example.com state: present
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegment-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-topology.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/topology
ディレクトリーのサンプルの Playbook を参照してください。
15.2. Ansible を使用して複数の IdM レプリカ間でレプリカ合意を存在させる手順
Identity Management (IdM) サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリカ合意は常に双方向のものです。最初のレプリカからサーバーから別のレプリカにデータが複製されるだけでなく、別ののレプリカから最初のレプリカにもデータが複製されます。
以下の手順に従って、IdM の複数のレプリカのペア間でレプリカ合意が存在することを確認します。
前提条件
- トポロジー内のレプリカの接続 に記載されている IdM トポロジーを設計するための推奨事項を理解しておく。
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible -freeipa/playbooks/topology/
ディレクトリーにあるadd-topologysegments.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegments.yml add-topologysegments-copy.yml
-
add-topologysegments-copy.yml
ファイルを開いて編集します。 vars
セクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 すべてのトポロジーセグメントについて、
ipatopology_segments
セクションに行を追加し、以下の変数を設定します。-
追加するセグメントのタイプに応じて、
suffix
変数をdomain
またはca
のいずれかに設定します。 -
left
の変数をレプリカ合意の左ノードに設定する IdM サーバーの名前に設定します。 -
レプリカ合意の適切なノードとなる IdM サーバーの名前に
right
変数を設定します。
-
追加するセグメントのタイプに応じて、
-
add-topologysegments-copy.yml
ファイルのtasks
セクションで、state
変数がpresent
に設定されていることを確認します。以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Add topology segments hosts: ipaserver gather_facts: false vars: ipaadmin_password: "{{ ipaadmin_password }}" ipatopology_segments: - {suffix: domain, left: replica1.idm.example.com , right: replica2.idm.example.com } - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com } - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com } - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com } vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: "{{ item.suffix }}" name: "{{ item.name | default(omit) }}" left: "{{ item.left }}" right: "{{ item.right }}" state: present #state: absent #state: checked #state: reinitialized loop: "{{ ipatopology_segments | default([]) }}"
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegments-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-topology.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/topology
ディレクトリーのサンプルの Playbook を参照してください。
15.3. Ansible を使用して 2 つのレプリカ間でレプリカ合意が存在するかどうかの確認
Identity Management (IdM) サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリカ合意は常に双方向のものです。最初のレプリカからサーバーから別のレプリカにデータが複製されるだけでなく、別ののレプリカから最初のレプリカにもデータが複製されます。
以下の手順に従って、IdM のレプリカのペア間でレプリカ合意が存在することを確認します。
前提条件
- トポロジー内のレプリカの接続 に記載されている Identity Management (IdM) トポロジーを設計するための推奨事項を理解しておく。
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible -freeipa/playbooks/topology/
ディレクトリーにあるcheck-topologysegments.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/check-topologysegments.yml check-topologysegments-copy.yml
-
check-topologysegments-copy.yml
ファイルを開いて編集します。 vars
セクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 すべてのトポロジーセグメントについて、
ipatopology_segments
セクションに行を追加し、以下の変数を設定します。-
追加するセグメントのタイプに応じて、
suffix
変数をdomain
またはca
のいずれかに設定します。 -
left
の変数をレプリカ合意の左ノードに設定する IdM サーバーの名前に設定します。 -
レプリカ合意の適切なノードとなる IdM サーバーの名前に
right
変数を設定します。
-
追加するセグメントのタイプに応じて、
-
check-topologysegments-copy.yml
ファイルのtasks
セクションで、state
変数がpresent
に設定されていることを確認します。以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Add topology segments hosts: ipaserver gather_facts: false vars: ipaadmin_password: "{{ ipaadmin_password }}" ipatopology_segments: - {suffix: domain, left: replica1.idm.example.com, right: replica2.idm.example.com } - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com } - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com } - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com } vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Check topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: "{{ item.suffix }}" name: "{{ item.name | default(omit) }}" left: "{{ item.left }}" right: "{{ item.right }}" state: checked loop: "{{ ipatopology_segments | default([]) }}"
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory check-topologysegments-copy.yml
関連情報
- トポロジー合意、接尾辞、およびセグメントの概念の詳細は、レプリカ合意、トポロジー接尾辞、およびトポロジーセグメント を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-topology.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/topology
ディレクトリーのサンプルの Playbook を参照してください。
15.4. Ansible を使用してトポロジーの接尾辞が IdM に存在することを確認
Identity Management (IdM) のレプリカ合意のコンテキストでは、トポロジー接尾辞はレプリケートされるデータを保存します。IdM は、domain
と ca
の 2 種類のトポロジー接尾辞に対応します。それぞれの接尾辞は、個別のバックエンドである個別のレプリケーショントポロジーを表します。レプリカ合意が設定されると、同じタイプのトポロジー接尾辞を 2 つの異なるサーバーに結合します。
domain
接尾辞には、ユーザー、グループ、ポリシーなどのドメイン関連のデータがすべて含まれます。ca
接尾辞には、Certificate System コンポーネントのデータが含まれます。これは認証局 (CA) がインストールされているサーバーにのみ存在します。
以下の手順に従って、Ansible Playbook を使用して、トポロジー接尾辞が IdM に存在することを確認します。この例では、domain
接尾辞が IdM に存在することを確認する方法を説明します。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/topology/
ディレクトリーにあるverify-topologysuffix.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/ verify-topologysuffix.yml verify-topologysuffix-copy.yml
-
Ansible Playbook ファイル
verify-topologysuffix-copy.yml
を開きます。 ipatopologysuffix
セクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
suffix
変数はdomain
に設定し ます。ca
接尾辞が存在することを確認する場合は、変数をca
に設定します。 -
state
変数がverified
に設定されていることを確認します。他のオプションは使用できません。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to handle topologysuffix hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Verify topology suffix ipatopologysuffix: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain state: verified
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory verify-topologysuffix-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-topology.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/topology
ディレクトリーのサンプルの Playbook を参照してください。
15.5. Ansible を使用した IdM レプリカの再初期化
レプリカが長期間オフラインである場合や、そのデータベースが破損している場合は、初期化できます。初期化により、更新リストのデータでレプリカが更新されます。たとえば、バックアップからの権威復元が必要な場合に使用できます。
レプリケーションの更新とは対照的に、レプリカが変更エントリーのみを送信する間、データベース全体を再初期化します。
コマンドを実行するローカルホストは、再初期化されたレプリカです。データの取得元となるレプリカを指定するには、direction
オプションを使用します。
以下の手順に従って、Ansible Playbook を使用して server.idm.example.com から replica.idm.example.com の domain
データを再初期化します。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible -freeipa/playbooks/topology/
ディレクトリーにあるreinitialize-topologysegment.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/reinitialize-topologysegment.yml reinitialize-topologysegment-copy.yml
-
reinitialize-topologysegment-copy.yml
ファイルを開いて編集します。 ipatopologysegment
セクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
suffix
変数はdomain
に設定し ます。ca
データを再初期化する場合は、変数をca
に設定します。 -
left
の変数をレプリカ合意の左ノードに設定します。 -
レプリカ合意の
right
なノードに正しい変数を設定します。 -
direction
変数は再初期化されるデータの方向に設定します。left-to-right
は、左のノードから適切なノードにデータフローがあることを意味します。 state
変数がreinitialized
に設定されていることを確認します。以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Reinitialize topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: server.idm.example.com right: replica.idm.example.com direction: left-to-right state: reinitialized
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory reinitialize-topologysegment-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-topology.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/topology
ディレクトリーのサンプルの Playbook を参照してください。
15.6. Ansible を使用して IdM にレプリカ合意がないことを確認する手順
Identity Management (IdM) サーバーに保存されているデータは、レプリカ合意に基づいて複製されます。2 台のサーバーでレプリカ合意が設定されている場合は、データを共有します。レプリカ合意は常に双方向のものです。最初のレプリカからサーバーから別のレプリカにデータが複製されるだけでなく、別ののレプリカから最初のレプリカにもデータが複製されます。
以下の手順に従って、2 つのレプリカ間のレプリカ合意が IdM に存在しないことを確認します。この例では、domain
タイプのレプリカ合意が、replica01.idm.example.com と replica02.idm.example.com 間で存在させないようにする方法を説明します。
前提条件
- トポロジー内のレプリカの接続 に記載されている IdM トポロジーを設計するための推奨事項を理解しておく。
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible -freeipa/playbooks/topology/
ディレクトリーにあるdelete-topologysegment.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/delete-topologysegment.yml delete-topologysegment-copy.yml
-
delete-topologysegment-copy.yml
ファイルを開いて編集します。 ipatopologysegment
タスクセクションに以下の変数を設定して、ファイルを調整します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
suffix
変数はdomain
に設定し ます。また、ca
データが左右ノードと右のノード間で複製されないようにするには、変数をca
に設定します。 -
left
の変数を、レプリカ合意の左ノードである IdM サーバーの名前に設定します。 -
右側
の変数を、レプリカ合意の右のノードである IdM サーバーの名前に設定します。 -
state
変数は、absent
に設定されていることを確認します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: replica01.idm.example.com right: replica02.idm.example.com: state: absent
-
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory delete-topologysegment-copy.yml
関連情報
- レプリカ合意、トポロジー接尾辞、およびトポロジーセグメントの説明 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-topology.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/topology
ディレクトリーのサンプルの Playbook を参照してください。
15.7. 関連情報
- Planning the replica topology を参照してください。
- Installing an IdM replica を参照してください。
第16章 Ansible を使用した IdM サーバーの管理
Red Hat Ansible Engine
を使用すると、Identity Management (IdM) トポロジーのサーバーを管理できます。ansible-freeipa
パッケージの server
モジュールを使用して、IdM トポロジーにサーバーの有無を確認できます。任意のレプリカを非表示にしたり、レプリカを表示したりすることもできます。
このセクションには、以下のトピックが含まれます。
- Ansible を使用した IdM サーバーの存在の確認
- Ansible を使用した IdM トポロジーに IdM サーバーが存在しないことの確認
- 最後の IdM サーバーロールをホストしているにもかかわらず IdM サーバーがないことの確認
- IdM サーバーが存在しないが、必ずしも他の IdM サーバーから切断されていないことの確認
- Ansible Playbook を使用した既存の IdM サーバーが非表示であることの確認
- Ansible Playbook を使用した既存の IdM サーバーが表示されていることの確認
- 既存の IdM サーバーに IdM DNS の場所が割り当てられていることの確認
- 既存の IdM サーバーに IdM DNS の場所が割り当てられていないことの確認
16.1. Ansible を使用した IdM サーバーの存在の確認
Ansible Playbook で ipaserver
ansible-freeipa
モジュールを使用して、Identity Management (IdM) サーバーが存在することを確認できます。
ipaserver
Ansible モジュールは、IdM サーバーをインストールしません。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。 -
制御ノードからインベントリーファイルに定義した IdM サーバーへの
SSH
接続が正常に動作している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
ディレクトリーにあるserver-present.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-present.yml server-present-copy.yml
-
server-present-copy.yml
を開いて編集します。 ipaserver
タスクセクションで次の変数を設定してファイルを調整し、ファイルを保存します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数をサーバーのFQDN
に設定します。サンプルサーバーのFQDN
は server123.idm.example.com です。
--- - name: Server present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is present ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com
-
Ansible Playbook を実行し、Playbook ファイルとインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-present-copy.yml
関連情報
- Ansible Playbook を使用した Identity Management サーバーのインストール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-server.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/server
ディレクトリーのサンプルの Playbook を参照してください。
16.2. Ansible を使用した IdM トポロジーに IdM サーバーが存在しないことの確認
Ansible Playbook を使用して、Identity Management (IdM) サーバーが、ホストとしても IdM トポロジーに存在しないようにします。
ansible-freeipa
ipaserver
ロールとは対照的に、この Playbook で使用する ipaserver
モジュールは、サーバーから IdM サービスをアンインストールしません。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。 -
制御ノードからインベントリーファイルに定義した IdM サーバーへの
SSH
接続が正常に動作している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
ディレクトリーにあるserver-absent.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent.yml server-absent-copy.yml
-
server-absent-copy.yml
を開いて編集します。 ipaserver
タスクセクションで次の変数を設定してファイルを調整し、ファイルを保存します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数をサーバーのFQDN
に設定します。サンプルサーバーのFQDN
は server123.idm.example.com です。 -
state
変数は、absent
に設定されていることを確認します。
--- - name: Server absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is absent ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com state: absent
-
Ansible Playbook を実行し、Playbook ファイルとインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-copy.yml
- server123.idm.example.com を指定しているネームサーバー (NS) の DNS レコードがすべて DNS ゾーンから削除されていることを確認してください。使用する DNS が IdM により管理される統合 DNS であるか、外部 DNS であるかに関わらず、確認を行なってください。
関連情報
- IdM サーバーのアンインストール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-server.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/server
ディレクトリーのサンプルの Playbook を参照してください。
16.3. 最後の IdM サーバーロールをホストしているにもかかわらず IdM サーバーがないことの確認
Ansible を使用すると、最後の IdM サービスインスタンスがサーバーで実行している場合でも、Identity Management (IdM) サーバーがないことを確認できます。認証局 (CA)、キーリカバリー認証局 (KRA)、または DNS サーバーはすべて IdM サービスの例です。
CA サーバー、KRA サーバー、または DNS サーバーとして機能する最後のサーバーを削除すると、IdM 機能に深刻な不具合が生じます。ipa service-find
を使用すると、どのサービスがどの IdM サーバーで実行されているかを手動で確認できます。認証局サーバーのプリンシパル名は dogtag/server_name/REALM_NAME
です。
ansible-freeipa
ipaserver
ロールとは対照的に、この Playbook で使用する ipaserver
モジュールは、サーバーから IdM サービスをアンインストールしません。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。 -
制御ノードからインベントリーファイルに定義した IdM サーバーへの
SSH
接続が正常に動作している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
ディレクトリーにあるserver-absent-ignore-last-of-role.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent-ignore-last-of-role.yml server-absent-ignore-last-of-role-copy.yml
-
server-absent-ignore-last-of-role-copy.yml
ファイルを開いて編集します。 ipaserver
タスクセクションで次の変数を設定してファイルを調整し、ファイルを保存します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数をサーバーのFQDN
に設定します。サンプルサーバーのFQDN
は server123.idm.example.com です。 -
ignore_last_of_role
がyes
に設定されていることを確認します。 -
state
変数はabsent
に設定します。
--- - name: Server absent with last of role skip example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server “server123.idm.example.com” is absent with last of role skip ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com ignore_last_of_role: yes state: absent
-
Ansible Playbook を実行し、Playbook ファイルとインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-ignore-last-of-role-copy.yml
- server123.idm.example.com を指定するネームサーバー (NS) の DNS レコードが、すべて DNS ゾーンから削除されていることを確認してください。使用する DNS が IdM により管理される統合 DNS であるか、外部 DNS であるかに関わらず、確認を行なってください。
関連情報
- IdM サーバーのアンインストール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-server.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/server
ディレクトリーのサンプルの Playbook を参照してください。
16.4. IdM サーバーが存在しないが、必ずしも他の IdM サーバーから切断されていないことの確認
トポロジーから Identity Management (IdM) サーバーを削除する場合は、Ansible Playbook でレプリケーションアグリーメントをそのまま保持できます。Playbook では、IdM サーバーがホストとしても IdM に存在しないことも確認します。
削除する際にサーバーのレプリカ合意を無視することが推奨されるのは、削除を予定している他のサーバーが機能不全のサーバーである場合のみです。トポロジーの中心点として機能するサーバーを削除すると、トポロジーが 2 つの切断されたクラスターに分割される可能性があります。
機能不全のサーバーは、ipa server-del
コマンドを使用してトポロジーから削除できます。
認証局 (CA)、キーリカバリー認証局 (KRA)、または DNS サーバーとして機能する最後のサーバーを削除すると、Identity Management (IdM) 機能に深刻な不具合が生じます。この問題を防ぐため、Playbook は、CA サーバー、KRA サーバー、または DNS サーバーとして機能するサーバーをアンインストールする前に、これらのサービスがドメインの別のサーバーで実行していることを確認します。
ansible-freeipa
ipaserver
ロールとは対照的に、この Playbook で使用する ipaserver
モジュールは、サーバーから IdM サービスをアンインストールしません。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。 -
制御ノードからインベントリーファイルに定義した IdM サーバーへの
SSH
接続が正常に動作している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
ディレクトリーにあるserver-absent-ignore_topology_disconnect.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent-ignore_topology_disconnect.yml server-absent-ignore_topology_disconnect-copy.yml
-
server-absent-ignore_topology_disconnect-copy.yml
を開いて編集します。 ipaserver
タスクセクションで次の変数を設定してファイルを調整し、ファイルを保存します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数をサーバーのFQDN
に設定します。サンプルサーバーのFQDN
は server123.idm.example.com です。 -
ignore_topology_disconnect
変数がyes
に設定されていることを確認します。 -
state
変数は、absent
に設定されていることを確認します。
--- - name: Server absent with ignoring topology disconnects example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server “server123.idm.example.com” with ignoring topology disconnects ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com ignore_topology_disconnect: yes state: absent
-
Ansible Playbook を実行し、Playbook ファイルとインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-ignore_topology_disconnect-copy.yml
- [オプション] server123.idm.example.com を指すすべてのネームサーバー (NS) DNS レコードが DNS ゾーンから削除されていることを確認します。使用する DNS が IdM により管理される統合 DNS であるか、外部 DNS であるかに関わらず、確認を行なってください。
関連情報
- IdM サーバーのアンインストール を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-server.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/server
ディレクトリーのサンプルの Playbook を参照してください。
16.5. Ansible Playbook を使用した既存の IdM サーバーが非表示であることの確認
Ansible Playbook の ipaserver
ansible-freeipa
モジュールを使用して、既存の Identity Management (IdM) サーバーが非表示になっていることを確認します。この Playbook では、IdM サーバーがインストールされないことに注意してください。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。 -
制御ノードからインベントリーファイルに定義した IdM サーバーへの
SSH
接続が正常に動作している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
ディレクトリーにあるserver-hidden.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-hidden.yml server-hidden-copy.yml
-
server-hidden-copy.yml
ファイルを開いて編集します。 ipaserver
タスクセクションで次の変数を設定してファイルを調整し、ファイルを保存します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数をサーバーのFQDN
に設定します。サンプルサーバーのFQDN
は server123.idm.example.com です。 -
hidden
変数がTrue
に設定されていることを確認します。
--- - name: Server hidden example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is hidden ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com hidden: True
-
Ansible Playbook を実行し、Playbook ファイルとインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-hidden-copy.yml
関連情報
- Ansible Playbook を使用した Identity Management サーバーのインストール を参照してください。
- The hidden replica mode を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-server.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/server
ディレクトリーのサンプルの Playbook を参照してください。
16.6. Ansible Playbook を使用した既存の IdM サーバーが表示されていることの確認
Ansible Playbook で ipaserver
ansible-freeipa
モジュールを使用して、既存の Identity Management (IdM) サーバーが表示されていることを確認します。この Playbook では、IdM サーバーがインストールされないことに注意してください。
前提条件
-
IdM
admin
のパスワードを把握している。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。 -
制御ノードからインベントリーファイルに定義した IdM サーバーへの
SSH
接続が正常に動作している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
ディレクトリーにあるserver-not-hidden.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-not-hidden.yml server-not-hidden-copy.yml
-
server-not-hidden-copy.yml
ファイルを開いて編集します。 ipaserver
タスクセクションで次の変数を設定してファイルを調整し、ファイルを保存します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数をサーバーのFQDN
に設定します。サンプルサーバーのFQDN
は server123.idm.example.com です。 -
hidden
変数がno
に設定されていることを確認します。
--- - name: Server not hidden example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is not hidden ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com hidden: no
-
Ansible Playbook を実行し、Playbook ファイルとインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-not-hidden-copy.yml
関連情報
- Ansible Playbook を使用した Identity Management サーバーのインストール を参照してください。
- The hidden replica mode を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-server.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/server
ディレクトリーのサンプルの Playbook を参照してください。
16.7. 既存の IdM サーバーに IdM DNS の場所が割り当てられていることの確認
Ansible Playbook の ipaserver
ansible-freeipa
モジュールを使用して、既存の Identity Management (IdM) サーバーに特定の IdM DNS の場所が割り当てられていることを確認します。
ipaserver
Ansible モジュールは、IdM サーバーをインストールしないことに注意してください。
前提条件
-
IdM
admin
のパスワードを把握している。 - IdM DNS の場所が存在します。サンプルの場所は germany です。
-
サーバーへの
root
アクセス権限がある。サンプルサーバーは server123.idm.example.com である。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。 -
制御ノードからインベントリーファイルに定義した IdM サーバーへの
SSH
接続が正常に動作している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
ディレクトリーにあるserver-location.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-location.yml server-location-copy.yml
-
server-location-copy.yml
ファイルを開いて編集します。 ipaserver
タスクセクションで次の変数を設定してファイルを調整し、ファイルを保存します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数を server123.idm.example.com に設定します。 -
location
変数を germany に設定します。
以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。
--- - name: Server enabled example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com with location “germany” is present ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com location: germany
-
Ansible Playbook を実行し、Playbook ファイルとインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-location-copy.yml
SSH
を使用して、root
として server123.idm.example.com に接続します。ssh root@server123.idm.example.com
更新をすぐに有効にするには、サーバーで
named-pkcs11
サービスを再起動します。[root@server123.idm.example.com ~]# systemctl restart named-pkcs11
関連情報
- Ansible Playbook を使用した Identity Management サーバーのインストール を参照してください。
- Ansible を使用して IdM の場所が存在することを確認する を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-server.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/server
ディレクトリーのサンプルの Playbook を参照してください。
16.8. 既存の IdM サーバーに IdM DNS の場所が割り当てられていないことの確認
Ansible Playbook の ipaserver
ansible-freeipa
モジュールを使用して、既存の Identity Management (IdM) サーバーに IdM DNS の場所が割り当てられていないことを確認します。地理的な場所を頻繁に変更するサーバーに DNS の場所を割り当てないでください。Playbook では IdM サーバーがインストールされないことに注意してください。
前提条件
-
IdM
admin
のパスワードを把握している。 -
サーバーへの
root
アクセス権限がある。サンプルサーバーは server123.idm.example.com である。 次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。 -
制御ノードからインベントリーファイルに定義した IdM サーバーへの
SSH
接続が正常に動作している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
/usr/share/doc/ansible-freeipa/playbooks/server/
ディレクトリーにあるserver-no-location.yml
Ansible Playbook ファイルをコピーします。$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-no-location.yml server-no-location-copy.yml
-
server-no-location-copy.yml
を開いて編集します。 ipaserver
タスクセクションで次の変数を設定してファイルを調整し、ファイルを保存します。-
ipaadmin_password
変数は IdMadmin
のパスワードに設定します。 -
name
変数を server123.idm.example.com に設定します。 -
location
変数が "" に設定されていることを確認してください。
--- - name: Server no location example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is present with no location ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com location: “”
-
Ansible Playbook を実行し、Playbook ファイルとインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-no-location-copy.yml
SSH
を使用して、root
として server123.idm.example.com に接続します。ssh root@server123.idm.example.com
更新をすぐに有効にするには、サーバーで
named-pkcs11
サービスを再起動します。[root@server123.idm.example.com ~]# systemctl restart named-pkcs11
関連情報
- Ansible Playbook を使用した Identity Management サーバーのインストール を参照してください。
- Ansible を使用した IdM での DNS の場所の管理 を参照してください。
-
/usr/share/doc/ansible-freeipa/
ディレクトリーのREADME-server.md
ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/server
ディレクトリーのサンプルの Playbook を参照してください。
第17章 Ansible Playbook を使用したホストの管理
Ansible は、システムの設定、ソフトウェアのデプロイ、ローリング更新の実行に使用する自動化ツールです。Ansible には Identity Management (IdM) のサポートが含まれ、Ansible モジュールを使用してホスト管理を自動化できます。
Ansible Playbook を使用してホストおよびホストエントリーを管理する際に、以下のコンセプトに基づき、操作が実行されます。
17.1. Ansible Playbook を使用して FQDN が指定された IdM ホストエントリーを存在させる手順
以下の手順に従って、Ansible Playbook を使用して、Identity Management (IdM) にホストエントリーが存在することを確認します。ホストエントリーは、完全修飾ドメイン名
(FQDN) によってのみ定義されます。
以下の条件のいずれかが当てはまる場合は、ホストの FQDN
名を指定するだけで十分です。
- IdM サーバーが DNS を管理するよう設定されていない。
-
ホストに静的 IP アドレスがないか、ホストの設定時に IP アドレスが不明である。
FQDN
だけで定義されたホストを追加すると、基本的に IdM DNS サービスにプレースホルダーエントリーが作成されます。たとえば、ラップトップは IdM クライアントとして事前設定されている場合がありますが、設定時には IP アドレスがありません。DNS サービスがレコードを動的に更新すると、ホストの現在の IP アドレスが検出され、DNS レコードが更新されます。
Ansible ない場合に、ipa host-add
コマンドを使用すると、ホストエントリーが IdM に作成されます。ホストを IdM に追加すると、IdM でのホストの状態が present になります。Ansible は冪等性に依存しているので、Ansible を使用して IdM にホストを追加するには、ホストの状態を Present (state: present) として定義した Playbook を作成する必要があります。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
IdM に存在させるホストの
FQDN
を使用して Ansible Playbook ファイルを作成します。この手順は、/usr/share/doc/ansible-freeipa/playbooks/host/add-host.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com present ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com state: present force: yes
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
以下の手順では、IdM LDAP サーバーにホストエントリーが作成されますが、ホストは IdM Kerberos レルムには登録されません。登録されるようにするには、ホストを IdM クライアントとしてデプロイする必要があります。詳細は、Ansible Playbook を使用した Identity Management クライアントのインストール を参照してください。
検証手順
admin として IdM サーバーにログインします。
$ ssh admin@server.idm.example.com Password:
ipa host-show
コマンドを入力し、ホストの名前を指定します。$ ipa host-show host01.idm.example.com Host name: host01.idm.example.com Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM Password: False Keytab: False Managed by: host01.idm.example.com
この出力で、host01.idm.example.com が IdM に存在することを確認します。
17.2. Ansible Playbook を使用して DNS 情報など IdM ホストエントリーを存在させる手順
以下の手順に従って、Ansible Playbook を使用して、Identity Management (IdM) にホストエントリーが存在することを確認します。ホストエントリーは、ホストの 完全修飾ドメイン名
(FQDN) および IP アドレスで定義されます。
Ansible ない場合に、ipa host-add
コマンドを使用すると、ホストエントリーが IdM に作成されます。ホストを IdM に追加すると、IdM でのホストの状態が present になります。Ansible は冪等性に依存しているので、Ansible を使用して IdM にホストを追加するには、ホストの状態を Present (state: present) として定義した Playbook を作成する必要があります。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
IdM に存在させるホストの
完全修飾ドメイン名
(FQDN) で Ansible Playbook ファイルを作成します。また、IdM サーバーが DNS を管理するように設定され、ホストの IP アドレスが分かっている場合は、ip_address
パラメーターの値を指定します。ホストを DNS リソースレコードに存在させるには、IP アドレスが必要です。この手順は、/usr/share/doc/ansible-freeipa/playbooks/host/host-present.yml
ファイルのサンプルをコピーして変更し、簡素化できます。また、その他の追加情報を含めることもできます。--- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure host01.idm.example.com is present ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com description: Example host ip_address: 192.168.0.123 locality: Lab ns_host_location: Lab ns_os_version: CentOS 7 ns_hardware_platform: Lenovo T61 mac_address: - "08:00:27:E3:B1:2D" - "52:54:00:BD:97:1E" state: present
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
以下の手順では、IdM LDAP サーバーにホストエントリーが作成されますが、ホストは IdM Kerberos レルムには登録されません。登録されるようにするには、ホストを IdM クライアントとしてデプロイする必要があります。詳細は、Ansible Playbook を使用した Identity Management クライアントのインストール を参照してください。
検証手順
admin として IdM サーバーにログインします。
$ ssh admin@server.idm.example.com Password:
ipa host-show
コマンドを入力し、ホストの名前を指定します。$ ipa host-show host01.idm.example.com Host name: host01.idm.example.com Description: Example host Locality: Lab Location: Lab Platform: Lenovo T61 Operating system: CentOS 7 Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM MAC address: 08:00:27:E3:B1:2D, 52:54:00:BD:97:1E Password: False Keytab: False Managed by: host01.idm.example.com
この出力で、host01.idm.example.com が IdM に存在することを確認します。
17.3. Ansible Playbook を使用して無作為のパスワードが指定された IdM ホストエントリーを複数存在させる手順
ipahost
モジュールでは、システム管理者は、Ansible タスク 1 つだけを使用して、IdM に複数のホストエントリーが存在するか、存在しないかを確認できます。以下の手順に従って、fully-qualified domain names
(FQDN) でのみ定義されるホストエントリーを複数存在することを確認します。Ansible Playbook を実行すると、ホストのパスワードが無作為に生成されます。
Ansible ない場合に、ipa host-add
コマンドを使用すると、ホストエントリーが IdM に作成されます。ホストを IdM に追加すると、IdM でのホストの状態が present になります。Ansible は冪等性に依存しているので、Ansible を使用して IdM にホストを追加するには、ホストの状態を Present (state: present) として定義した Playbook を作成する必要があります。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
IdM に存在させるホストの
完全修飾ドメイン名
(FQDN) で Ansible Playbook ファイルを作成します。IdM にホストが既存し、update_password
がon_create
に制限されている場合にも、Ansible Playbook を使用して各ホストに対して無作為にパスワードを作成するには、random: yes
とforce: yes
のオプションを追加します。この手順を簡素化するには、/usr/share/doc/ansible-freeipa/README-host.md
Markdown ファイルからサンプルをコピーして変更できます。--- - name: Ensure hosts with random password hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Hosts host01.idm.example.com and host02.idm.example.com present with random passwords ipahost: ipaadmin_password: "{{ ipaadmin_password }}" hosts: - name: host01.idm.example.com random: yes force: yes - name: host02.idm.example.com random: yes force: yes register: ipahost
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-are-present.yml [...] TASK [Hosts host01.idm.example.com and host02.idm.example.com present with random passwords] changed: [r8server.idm.example.com] => {"changed": true, "host": {"host01.idm.example.com": {"randompassword": "0HoIRvjUdH0Ycbf6uYdWTxH"}, "host02.idm.example.com": {"randompassword": "5VdLgrf3wvojmACdHC3uA3s"}}}
無作為に作成されたワンタイムパスワード (OTP) を使用して IdM クライアントとしてホストをデプロイするには、Ansible Playbook を使用した IdM クライアント登録の認証オプション または ワンタイムパスワードを使用したクライアントのインストール: 対話型インストール を参照してください。
検証手順
admin として IdM サーバーにログインします。
$ ssh admin@server.idm.example.com Password:
ipa host-show
コマンドを入力し、ホストのいずれかの名前を指定します。$ ipa host-show host01.idm.example.com Host name: host01.idm.example.com Password: True Keytab: False Managed by: host01.idm.example.com
この出力で、host01.idm.example.com が無作為に作成されたパスワードが指定された IdM に存在することを確認します。
17.4. Ansible Playbook を使用して複数の IP アドレスが指定された IdM ホストエントリーを存在させる手順
以下の手順に従って、Ansible Playbook を使用して Identity Management (IdM) にホストエントリーが存在することを確認します。ホストエントリーは、完全修飾ドメイン名
(FQDN) と複数の IP アドレスで定義されます。
Ansible ipahost
モジュールでは、ipa host
ユーティリティーとは対照的に、ホストの IPv4 および IPv6 アドレスが複数存在させたり、または存在させなかったりできます。ipa host-mod
コマンドは IP アドレスを処理できません。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
Ansible Playbook ファイルを作成します。
ipahost
変数の名前
として、IdM に存在させるホストの完全修飾ドメイン名
(FQDN) を指定します。- ip_address 構文を使用して、個別の行に複数の IPv4 および IPv6ip_address
値を指定します。この手順は、/usr/share/doc/ansible-freeipa/playbooks/host/host-member-ipaddresses-present.yml
ファイルのサンプルをコピーして変更し、簡素化できます。追加情報を含めることもできます。--- - name: Host member IP addresses present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure host101.example.com IP addresses present ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com ip_address: - 192.168.0.123 - fe80::20c:29ff:fe02:a1b3 - 192.168.0.124 - fe80::20c:29ff:fe02:a1b4 force: yes
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-with-multiple-IP-addreses-is-present.yml
この手順では、IdM LDAP サーバーにホストエントリーは作成されますが、ホストは IdM Kerberos レルムに登録されません。登録されるようにするには、ホストを IdM クライアントとしてデプロイする必要があります。詳細は、Ansible Playbook を使用した Identity Management クライアントのインストール を参照してください。
検証手順
admin として IdM サーバーにログインします。
$ ssh admin@server.idm.example.com Password:
ipa host-show
コマンドを入力し、ホストの名前を指定します。$ ipa host-show host01.idm.example.com Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM Password: False Keytab: False Managed by: host01.idm.example.com
この出力で、host01.idm.example.com が IdM に存在することを確認します。
IdM DNS レコードにホストの複数の IP アドレスが存在することを確認するには、
ipa dnsrecord-show
コマンドを入力し、以下の情報を指定します。- IdM ドメインの名前
ホストの名前
$ ipa dnsrecord-show idm.example.com host01 [...] Record name: host01 A record: 192.168.0.123, 192.168.0.124 AAAA record: fe80::20c:29ff:fe02:a1b3, fe80::20c:29ff:fe02:a1b4
この出力では、Playbook で指定された IPv4 アドレスおよび IPv6 アドレスがすべて host01.idm.example.com ホストエントリーに正しく関連付けられていることを確認します。
17.5. Ansible Playbook を使用して IdM ホストエントリーがないことを確認する手順
以下の手順に従って、Ansible Playbook を使用して Identity Management (IdM) にホストエントリーがないことを確認します。
前提条件
- IdM 管理者の認証情報
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
IdM に存在させないホストの
完全修飾ドメイン名
(FQDN) を指定して Ansible Playbook ファイルを作成します。IdM ドメインに DNS が統合されている場合は、updatedns: yes
オプションを使用して、あらゆる種類のホストに関連するレコードを DNS から削除します。この手順は、
/usr/share/doc/ansible-freeipa/playbooks/host/delete-host.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Host absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com absent ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com updatedns: yes state: absent
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-absent.yml
この手順の結果は以下のようになります。
- IdM Kerberos レルムにホストが存在していない。
- IdM LDAP サーバーにホストエントリーが存在しない。
SSSD (System Security Services Daemon) などのシステムサービスの特定の IdM 設定をクライアントホスト自体から削除するには、クライアントで ipa-client-install --uninstall
コマンドを実行する必要があります。詳細は、IdM クライアントのアンインストール を参照してください。
検証手順
admin として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
host01.idm.example.com に関する情報を表示します。
$ ipa host-show host01.idm.example.com ipa: ERROR: host01.idm.example.com: host not found
この出力では、ホストが IdM に存在しないことを確認します。
17.6. 関連情報
-
/usr/share/doc/ansible-freeipa/README-host.md
Markdown ファイルを参照してください。 -
/usr/share/doc/ansible-freeipa/playbooks/host
ディレクトリーにある追加の Playbook を表示します。
第18章 Ansible Playbook を使用したホストグループの管理
Identity Management (IdM) のホストグループ と、Ansible を使用して Identity Management (IdM) のホストグループに関係する操作を実行する方法について詳しく説明します。
18.1. IdM のホストグループ
IdM ホストグループを使用すると、重要な管理タスク (特にアクセス制御) を一元管理できます。
ホストグループの定義
ホストグループは、一般的なアクセス制御ルールやその他の特性を持つ IdM ホストセットが含まれるエンティティーです。たとえば、企業の部門、物理的な場所、またはアクセス制御要件に基づいてホストグループを定義できます。
IdM のホストグループには以下が含まれます。
- IdM サーバーおよびクライアント
- その他の IdM ホストグループ
デフォルトで作成されたホストグループ
デフォルトでは、IdM サーバーは、全 IdM サーバーホストのホストグループ ipaservers
を作成します。
直接および間接のグループメンバー
IdM のグループ属性は、直接メンバーと間接メンバーの両方に適用されます。ホストグループ B がホストグループ A のメンバーである場合、ホストグループ B のすべてのユーザーはホストグループ A の間接メンバーと見なされます。
18.2. Ansible Playbook を使用して IdM ホストグループを存在させる手順
以下の手順に従って、Ansible Playbook を使用して、Identity Management (IdM) にホストグループが存在することを確認します。
Ansible を使用しない場合には、ipa hostgroup-add
コマンドでホストグループエントリーを IdM に作成します。ホストグループを IdM に追加すると、IdM でのホストグループの状態が present になります。Ansible は冪等性に依存しているので、Ansible を使用して IdM にホストグループを追加するには、ホストの状態を Present (state: present) として定義した Playbook を作成する必要があります。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
inventory.file
などのインベントリーファイル を作成し、そのファイルで、ターゲットに設定する IdM サーバーのリストと合わせてipaserver
を定義します。[ipaserver] server.idm.example.com
必要なホストグループ情報を使用して Ansible Playbook ファイルを作成します。たとえば、databases という名前のホストグループを存在させるには、
- ipahostgroup
タスクでname: databases
を指定します。この手順は、/usr/share/doc/ansible-freeipa/playbooks/user/ensure-hostgroup-is-present.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is present - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases state: present
Playbook で state: present が指定されていると、IdM にホストグループがない場合のホストグループの追加要求という意味です。
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-present.yml
検証手順
admin として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
admin の Kerberos チケットを要求します。
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
IdM に存在させるホストグループに関する情報を表示します。
$ ipa hostgroup-show databases Host-group: databases
データベース ホストグループが IdM に存在します。
18.3. Ansible Playbook を使用して IdM ホストグループにホストを存在させる手順
以下の手順に従って、Ansible Playbook を使用して、Identity Management (IdM) のホストグループにホストが存在することを確認します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- Ansible Playbook で参照するホストが IdM に存在する。詳細は Ansible Playbook を使用した IdM ホストエントリーの存在の確認 を参照してください。
- Ansible Playbook ファイルから参照するホストグループが IdM に追加されている。詳細は、Ansible Playbook を使用して IdM ホストグループを存在させる手順 を参照してください。
手順
inventory.file
などのインベントリーファイル を作成し、そのファイルで、ターゲットに設定する IdM サーバーのリストと合わせてipaserver
を定義します。[ipaserver] server.idm.example.com
必要なホスト情報を使用して Ansible Playbook ファイルを作成します。
ipahostgroup
変数のname
パラメーターを使用してホストグループの名前を指定します。ipahostgroup
変数のhost
パラメーターを使用してホストの名前を指定します。この手順は、/usr/share/doc/ansible-freeipa/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-present-in-hostgroup.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is present - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases host: - db.idm.example.com action: member
この Playbook は、db.idm.example.com ホストを データベース ホストグループに追加します。
action: member
の行は、Playbook の実行時に databases グループ自体の追加を試行しないことを示します。代わりに、db.idm.example.com の databases への追加を試行するだけです。Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml
検証手順
admin として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
admin の Kerberos チケットを要求します。
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
ホストグループに関する情報を表示して、どのホストが存在するかを確認します。
$ ipa hostgroup-show databases Host-group: databases Member hosts: db.idm.example.com
db.idm.example.com ホストは、database ホストグループのメンバーとして存在します。
18.4. Ansible Playbook を使用した IdM ホストグループのネスト化
以下の手順に従って、Ansible Playbook を使用して、Identity Management (IdM) ホストグループにネスト化されたホストグループが存在することを確認します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- Ansible Playbook ファイルから参照するホストグループが IdM に存在する。詳細は、Ansible Playbook を使用して IdM ホストグループを存在させる手順 を参照してください。
手順
inventory.file
などのインベントリーファイル を作成し、そのファイルで、ターゲットに設定する IdM サーバーのリストと合わせてipaserver
を定義します。[ipaserver] server.idm.example.com
必要なホストグループ情報を使用して Ansible Playbook ファイルを作成します。ネストされたホストグループ A が、Ansible Playbook のホストグループ B に存在することを確認するには、
- ipahostgroup
変数でname
変数を使用して、ホストグループ B の名前を指定します。hostgroup
変数でネスト化されたホストグループ A の名前を指定します。この手順は、/usr/share/doc/ansible-freeipa/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-present-in-hostgroup.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure hosts and hostgroups are present in existing databases hostgroup - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases hostgroup: - mysql-server - oracle-server action: member
この Ansible Playbook は、database ホストグループに myqsl-server および oracle-server ホストグループが存在することを確認します。
action: member
行は、Playbook が実行されると、databases グループ自体を IdM に追加しようとはしません。Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml
検証手順
admin として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
admin の Kerberos チケットを要求します。
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
ネスト化されたホストグループが含まれるホストグループに関する情報を表示します。
$ ipa hostgroup-show databases Host-group: databases Member hosts: db.idm.example.com Member host-groups: mysql-server, oracle-server
mysql-server および oracle-server ホストグループは、databases ホストグループに存在します。
18.5. Ansible Playbook を使用して IdM ホストグループにメンバーマネージャーを存在させる手順
以下の手順では、Ansible Playbook を使用して、IdM ホストおよびホストグループにメンバーマネージャーを存在させる方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- メンバーマネージャーとして追加するホストまたはホストグループの名前と、管理するホストグループ名が必要です。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
必要なホストおよびホストグループメンバー管理情報を使用して Ansible Playbook ファイルを作成します。
--- - name: Playbook to handle host group membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager user example_member is present for group_name ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_user: example_member - name: Ensure member manager group project_admins is present for group_name ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_group: project_admins
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-host-groups.yml
検証手順
ipa group-show
コマンドを使用して group_name グループのメンバーマネージャーとして example_member と project_admins が含まれていることを確認できます。
管理者として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
testhostgroup に関する情報を表示します。
ipaserver]$ ipa hostgroup-show group_name Host-group: group_name Member hosts: server.idm.example.com Member host-groups: testhostgroup2 Membership managed by groups: project_admins Membership managed by users: example_member
関連情報
-
ipa hostgroup-add-member-manager --help
を参照してください。 -
ipa
の man ページを参照してください。
18.6. Ansible Playbook を使用して IdM ホストグループにホストを存在させないようにする方法
以下の手順に従って、Ansible Playbook を使用して、Identity Management (IdM) のホストグループにホストがないことを確認します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- Ansible Playbook で参照するホストが IdM に存在する。詳細は Ansible Playbook を使用した IdM ホストエントリーの存在の確認 を参照してください。
- Ansible Playbook ファイルから参照するホストグループが IdM に存在する。詳細は、Ansible Playbook を使用して IdM ホストグループを存在させる手順 を参照してください。
手順
inventory.file
などのインベントリーファイル を作成し、そのファイルで、ターゲットに設定する IdM サーバーのリストと合わせてipaserver
を定義します。[ipaserver] server.idm.example.com
必要なホストおよびホストグループ情報を使用して Ansible Playbook ファイルを作成します。
ipahostgroup
変数のname
パラメーターを使用してホストグループの名前を指定します。ipahostgroup
変数のhost
パラメーターを使用して、ホストグループに、存在させないようにするホストの名前を指定します。この手順は、/usr/share/doc/ansible-freeipa/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-absent-in-hostgroup.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is absent - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases host: - db.idm.example.com action: member state: absent
この Playbook では、databases ホストグループに db.idm.example.com ホストを存在させないようにできます。action: member の行で、Playbook の実行時に databases グループ自体の削除を試行しないように指定します。
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml
検証手順
admin として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
admin の Kerberos チケットを要求します。
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
ホストグループと、そのホストグループに含まれるホストに関する情報を表示します。
$ ipa hostgroup-show databases Host-group: databases Member host-groups: mysql-server, oracle-server
db.idm.example.com ホストは データベース ホストグループに存在していません。
18.7. Ansible Playbook を使用して IdM ホストグループに、ネスト化されたホストグループを存在させないようにする方法
以下の手順に従って、Ansible Playbook を使用して、Identity Management (IdM) の外部ホストグループからネスト化されたホストグループがないことを確認します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- Ansible Playbook ファイルから参照するホストグループが IdM に存在する。詳細は、Ansible Playbook を使用して IdM ホストグループを存在させる手順 を参照してください。
手順
inventory.file
などのインベントリーファイル を作成し、そのファイルで、ターゲットに設定する IdM サーバーのリストと合わせてipaserver
を定義します。[ipaserver] server.idm.example.com
必要なホストグループ情報を使用して Ansible Playbook ファイルを作成します。
- ipahostgroup
変数のname
変数を使用して、外部ホストグループの名前を指定します。hostgroup
変数でネスト化されたホストグループの名前を指定します。この手順は、/usr/share/doc/ansible-freeipa/playbooks/hostgroup/ensure-hosts-and-hostgroups-are-absent-in-hostgroup.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure hosts and hostgroups are absent in existing databases hostgroup - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases hostgroup: - mysql-server - oracle-server action: member state: absent
この Playbook は、mysql-server および oracle-server ホストグループが databases ホストグループにないことを確認します。
action: member
行は、Playbook の実行時に、databases グループ自体の IdM からの削除は試行されないようにします。Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml
検証手順
admin として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
admin の Kerberos チケットを要求します。
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
ネスト化されたホストグループを存在させないホストグループに関する情報を表示します。
$ ipa hostgroup-show databases Host-group: databases
この出力では、mysql-server および oracle-server のネスト化されたホストグループが、外部 databases のホストグループにないことを確認します。
18.8. Ansible Playbook を使用して IdM ホストグループを存在させないようにする方法
以下の手順に従って、Ansible Playbook を使用して Identity Management (IdM) にホストグループがないことを確認します。
Ansible を使用しない場合には、ipa hostgroup-del
コマンドでホストグループエントリーを IdM から削除します。IdM からホストグループを削除すると、IdM にホストグループが存在しない状態になります。Ansible は冪等性に依存しているので、Ansible を使用して IdM からホストグループを削除するには、ホストの状態を Absent (state: absent) として定義した Playbook を作成する必要があります。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
手順
inventory.file
などのインベントリーファイル を作成し、そのファイルで、ターゲットに設定する IdM サーバーのリストと合わせてipaserver
を定義します。[ipaserver] server.idm.example.com
必要なホストグループ情報を使用して Ansible Playbook ファイルを作成します。この手順は、
/usr/share/doc/ansible-freeipa/playbooks/user/ensure-hostgroup-is-absent.yml
ファイルのサンプルをコピーして変更し、簡素化できます。--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - Ensure host-group databases is absent ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases state: absent
この Playbook では、IdM から databases ホストグループを存在させないようにします。
state: absent
は、IdM からホストグループが削除されていない限り、ホストグループの削除要求を意味します。Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-absent.yml
検証手順
admin として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
admin の Kerberos チケットを要求します。
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
存在させないようにするホストグループの情報を表示します。
$ ipa hostgroup-show databases ipa: ERROR: databases: host group not found
databases ホストグループが IdM に存在しません。
18.9. Ansible Playbook を使用して IdM ホストグループからホストを存在させないようにする方法
以下の手順では、Ansible Playbook を使用して、IdM ホストおよびホストグループにメンバーマネージャーを存在させないようにする方法を説明します。
前提条件
- IdM 管理者パスワードを把握している。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.14 以降を使用している。
-
Ansible コントローラーに
ansible-freeipa
パッケージがインストールされている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible ボールトに
ipaadmin_password
が保存されていることを前提としている。
- メンバーマネージャーから削除するユーザーまたはユーザーグループの名前と、管理するホストグループの名前が必要です。
手順
inventory.file
などのインベントリーファイルを作成して、そのファイルにipaserver
を定義します。[ipaserver] server.idm.example.com
必要なホストおよびホストグループメンバー管理情報を使用して Ansible Playbook ファイルを作成します。
--- - name: Playbook to handle host group membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager host and host group members are absent for group_name ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_user: example_member membermanager_group: project_admins action: member state: absent
Playbook を実行します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-host-groups-are-absent.yml
検証手順
ipa group-show
コマンドを使用して、group_name グループに example_member または project_admins がメンバーマネージャーとして含まれているかどうかを確認できます。
管理者として
ipaserver
にログインします。$ ssh admin@server.idm.example.com Password: [admin@server /]$
testhostgroup に関する情報を表示します。
ipaserver]$ ipa hostgroup-show group_name Host-group: group_name Member hosts: server.idm.example.com Member host-groups: testhostgroup2
関連情報
-
ipa hostgroup-add-member-manager --help
を参照してください。 -
ipa
の man ページを参照してください。
第19章 IdM パスワードポリシーの定義
本章では、Identity Management (IdM) パスワードポリシーについて、また、Ansible Playbook を使用して IdM に新規パスワードポリシーを追加する方法を説明します。
19.1. パスワードポリシーとは
パスワードポリシーは、パスワードが満たす必要のある一連のルールです。たとえば、パスワードポリシーでは、パスワードの最小長と最大有効期間を定義できます。このポリシーの対象となる全ユーザーには、十分に長いパスワードを設定して、指定の条件を満たす頻度でパスワードを変更する必要があります。このようにパスワードポリシーを使用することで、ユーザーのパスワードが検出されて悪用されるリスクが軽減されます。
19.2. IdM のパスワードポリシー
パスワードは、Identity Management (IdM) ユーザーが IdM Kerberos ドメインに対して認証する最も一般的な方法です。パスワードポリシーでは、このような IdM ユーザーのパスワードが満たす必要条件を定義します。
IdM パスワードポリシーは基礎となる LDAP ディレクトリーで設定されますが、Kerberos Key Distribution Center (KDC) はパスワードポリシーを強制的に使用します。
パスワードポリシー属性 は、IdM でのパスワードポリシーの定義に使用できる属性をリスト表示します。
表19.1 パスワードポリシーの属性
属性 | 説明 | 例 |
---|---|---|
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? を参照してください。
19.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 ボールトに
ipaadmin_password
が保存されていることを前提としている。
- 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 を参照してください。
19.4. IdM での追加のパスワードポリシーオプション
Identity Management (IdM) 管理者は、libpwquality
機能セットに基づく追加のパスワードポリシーオプションを有効にすることで、デフォルトのパスワード要件を強化できます。追加のパスワードポリシーオプションには、以下が含まれます。
--maxrepeat
- 新しいパスワードに使用できる、連続する同一文字数の上限を指定します。
--maxsequence
- 新しいパスワードにおける単調な文字シーケンスの最大長を指定します。このような配列の例は、12345 または fedcb です。このようなパスワードのほとんどは、簡素化チェックに合格しません。
--dictcheck
-
ゼロ以外の場合は、パスワード (修正可能) が辞書の単語と一致するかどうかを確認します。現在、
libpwquality
は、cracklib
ライブラリーを使用してディクショナリーの確認を実行しています。 --usercheck
- ゼロ以外の場合は、パスワード (修正可能) に、何らかの形式でユーザー名が含まれているかどうかを確認します。ユーザー名が 3 文字より短い場合は実行されません。
既存のパスワードには、追加のパスワードポリシーオプションを適用できません。追加オプションのいずれかを適用すると、IdM は、パスワードの最小文字数である --minlength
オプションを自動的に 6 文字に設定します。
RHEL 7 サーバーと RHEL 8 サーバーが混在する環境では、RHEL 8.4 以降で実行されているサーバーにのみ追加のパスワードポリシー設定を適用できます。ユーザーが IdM クライアントにログインし、IdM クライアントが RHEL 8.3 以前で実行している IdM サーバーと通信している場合は、システム管理者が設定した新しいパスワードポリシーの要件は適用されません。一貫した動作を確認するには、すべてのサーバーを RHEL 8.4 以降にアップグレードまたは更新します。
関連情報:
- IdM グループへの追加のパスワードポリシーの適用
-
pwquality(3)
man ページ
19.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 で、Identity → Groups → User Groups をクリックします。
- managers をクリックします。
-
Add
をクリックします。 - Add users into user group 'managers' ページで、test_user をチェックします。
-
>
矢印をクリックして、ユーザーをProspective
列に移動します。 -
Add
をクリックします。
テストユーザーのパスワードをリセットします。
- Identity → Users に移動します。
- 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
マネージャー のパスワードポリシーが、マネージャー グループのユーザーに対して正しく機能するようになりました。
関連情報
19.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 インベントリーファイル を作成した。
-
ipaadmin_password
を Secret.yml Ansible Vault に保存している。
- 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 で、Identity → Groups → User Groups をクリックします。
- managers をクリックします。
-
Add
をクリックします。 - Add users into user group 'managers' ページで、test_user をチェックします。
-
>
矢印をクリックして、ユーザーをProspective
列に移動します。 -
Add
をクリックします。
テストユーザーのパスワードをリセットします。
- Identity → Users に移動します。
- 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
第20章 IdM クライアントの IdM ユーザーへの sudo アクセスの許可
Identity Management でユーザーに sudo
アクセス権を付与する方法を詳しく説明します。
20.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
集約ルール を作成できます。
RHEL 8.4 以降では、Generic Security Service Application Programming Interface (GSSAPI) を使用して sudo
のパスワードレス認証を設定することもできます。これは、UNIX ベースのオペレーティングシステムがネイティブで Kerberos サービスにアクセスして認証する方法です。pam_sss_gss.so
Pluggable Authentication Module (PAM) を使用して SSSD サービスを介して GSSAPI 認証を呼び出し、有効な Kerberos チケットを使用して sudo
コマンドに対して認証を行うことができます。
関連情報
- sudo アクセスの管理 を参照してください。
20.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:
20.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 グループを作成します。
- オプション: AD ドメインで対応するグループを作成または選択して、IdM レルムで 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:
20.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
を使用してユーザーが実行できるコマンドを入力します。図20.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 ページに戻ります。
図20.2 IdM sudo ルールの追加
- 左上隅にある Save をクリックします。
新しいルールはデフォルトで有効になります。
サーバーからクライアントへの変更の伝播には数分かかる場合があります。
検証手順
-
idmclient
にidm_user
としてログインします。 sudo
を使用してマシンを再起動します。プロンプトが表示されたら、idm_user
のパスワードを入力します。$ sudo /usr/sbin/reboot [sudo] password for idm_user:
sudo
ルールが正しく設定されている場合には、マシンが再起動します。
20.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.