9.5. Ansible を使用した信頼関係の設定
Identity Management (IdM) と Active Directory (AD) 間の信頼関係の作成を自動化するには、Ansible Playbook を介して ansible-freeipa パッケージを使用します。
3 種類の信頼関係を設定できます。
- 一方向の信頼 - デフォルトのオプション。一方向の信頼により、Active Directory (AD) ユーザーおよびグループは IdM のリソースにアクセスできますが、その逆はできません。IdM ドメインは AD フォレストを信頼しますが、AD フォレストは IdM ドメインを信頼しません。
双方向の信頼 - 双方向の信頼により、AD ユーザーおよびグループは IdM のリソースにアクセスできるようになります。
信頼境界を使用して Kerberos プロトコルに
S4U2SelfおよびS4U2Proxyの Microsoft 拡張を必要とする、Microsoft SQL Server などのソリューションに、双方向の信頼を設定する必要があります。RHEL IdM ホスト上にあるアプリケーションは、AD ユーザーに関するS4U2SelfまたはS4U2Proxyの情報を Active Directory ドメインコントローラーから要求する場合があり、双方向の信頼でこの機能が提供されます。この双方向の信頼機能では、IdM ユーザーは Windows システムにログインできないだけでなく、IdM の双方向信頼では、AD の一方向信頼ソリューションと比較して、権限が追加でユーザーに付与されるわけではありません。
-
双方向の信頼を作成するには、
two_way: trueの変数を Playbook タスクに追加します。
-
双方向の信頼を作成するには、
外部信頼: 異なるフォレストの IdM と AD ドメインとの間の信頼関係です。フォレストの信頼では常に IdM と Active Directory フォレストのルートドメインとの間で信頼関係を確立する必要がありますが、IdM からフォレスト内の任意のドメインへの外部の信頼関係も確立できます。管理上または組織上の理由で、フォレストの root ドメイン間でフォレストの信頼を確立できない場合に限り、これが推奨されます。
-
外部信頼を作成するには、以下の変数を
external: trueの Playbook タスクに追加します。
-
外部信頼を作成するには、以下の変数を
前提条件
- Windows 管理者のユーザー名およびパスワード
-
IdM
adminパスワード。 - 信頼用の IdM サーバーの準備ができている。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.15 以降を使用している。
-
ansible-freeipaパッケージがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル が作成されている (この例の場合)。
-
secret.yml Ansible vault に
ipaadmin_passwordが保存されており、secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできる (この例の場合)。
-
ターゲットノード (
freeipa.ansible_freeipaモジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/ユースケースに基づいて、以下のいずれかのシナリオを選択します。
SSSD が SID に基づいて AD ユーザーおよびグループの UID および GID を自動的に生成する ID マッピング信頼合意を作成するには、以下の内容で
add-trust.ymlPlaybook を作成します。--- - name: Playbook to create a trust hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: ensure the trust is present ipatrust: ipaadmin_password: "{{ ipaadmin_password }}" realm: ad.example.com admin: Administrator password: secret_password state: present上記の例では、以下のようになります。
-
realmは、AD レルム名文字列を定義します。 -
adminは AD ドメイン管理者文字列を定義します。 -
passwordは、AD ドメイン管理者のパスワード文字列を定義します。
-
SSSD が AD に保存されている POSIX 属性 (
uidNumberやgidNumberなど) を処理する POSIX 信頼合意を作成するには、以下の内容でadd-trust.ymlPlaybook を作成します。--- - name: Playbook to create a trust hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: ensure the trust is present ipatrust: ipaadmin_password: "{{ ipaadmin_password }}" realm: ad.example.com admin: Administrator password: secret_password range_type: ipa-ad-trust-posix state: presentフォレストルートドメインの AD ドメインコントローラーからの詳細を要求して、IdM が適切な範囲タイプ
ipa-ad-trustまたはipa-ad-trust-posixを選択しようとする信頼合意を作成するには、以下の内容を含むadd-trust.ymlPlaybook を作成します。--- - name: Playbook to create a trust hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: ensure the trust is present ipatrust: ipaadmin_password: "{{ ipaadmin_password }}" realm: ad.example.com admin: Administrator password: secret_password state: present
警告信頼の作成時に ID 範囲タイプを指定せず、かつ IdM により AD フォレストルートドメイン内の POSIX 属性が検出されない場合、信頼のインストールスクリプトにより
Active Directory domainID 範囲が選択されます。IdM がフォレストルートドメインの POSIX 属性を検出すると、信頼インストールスクリプトは、
Active Directory domain with POSIX attributesID 範囲を選択し、UID および GID が AD に正しく定義されていることを前提とします。ただし、POSIX 属性が AD で正しく設定されていない場合は、AD ユーザーを解決できません。たとえば、IdM システムへのアクセスを必要とするユーザーおよびグループが、フォレストルートドメインの一部ではなく、フォレストドメインの子ドメインにある場合は、インストールスクリプトで、子 AD ドメインで定義された POSIX 属性が検出されない場合があります。この場合、信頼を確立するときに POSIX ID 範囲タイプを明示的に選択してください。
ファイルを保存します。
FreeIPA Ansible コレクション内の変数とサンプル Playbook の詳細は、コントロールノードの
/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/README-trust.mdファイルと/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/trustディレクトリーを参照してください。Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-trust.yml