Ansible Tower で Windows Active Directory を認証に使ってみよう!

みなさんこんにちは。レッドハットの杉村です。Ansible のテクニカルサポートをしています。

Ansible から Windows Active Directory を操作してみるというものを紹介したことがありました。

rheb.hatenablog.com

その環境を使いまして、今回は Ansible Tower の認証をこの Active Directory を使って行う方法について紹介してみようと思います。Windows 2019 で Active Directory はあらかじめ構築されているものとして進めます。

  • Ansible Tower 3.7.2 (RHEL 8.2)
  • Windows 2019 (192.168.0.158)

設定のためのドキュメントはこちらです。

docs.ansible.com

Active Directory への接続を確認

まず Active Directory 上に接続のためのユーザを1つ作ります。このユーザを通して Tower は検索を行います。

Domain Users として、binduser ユーザを作成しました。

f:id:sugitk:20200928124329p:plain

f:id:sugitk:20200928124227p:plain

「属性エディター」のタブで、distinguishedName を調べておきます。

f:id:sugitk:20200928124249p:plain

次に、Ansible Tower からこの Active Directory に LDAP 接続してみます。接続を確認するためには、ldapsearch コマンドを使うのが便利です。標準ではインストールされていませんので、openldap-clients パッケージをインストールしてください。

$ sudo dnf install openldap-clients

binduser を使って接続できることを確認してみます。

$ ldapsearch -x -H ldap://192.168.0.158 \
-D "CN=binduser,CN=Users,DC=ANSIBLE,DC=JP,DC=REDHAT,DC=COM" \
-b "CN=Users,DC=ANSIBLE,DC=JP,DC=REDHAT,DC=COM" \
-w <binduserのパスワード>

ここで覚えておかなければいけないオプションはこのようになっています。

オプション
-H LDAPサーバのURL (Active Directory)
-D bind DN
-b base DN (どのツリーから探すか)
-w bind DN に対応するパスワード

search result として、0 Success が出力されていれば正しく接続できています。

# search result
search: 2
result: 0 Success

# numResponses: 28
# numEntries: 27

これで LDAP としての接続が確認できたので、Ansible Tower で設定していきます。

Ansible Tower での設定

admin ユーザでログインして、「設定」→「認証」→「LDAP」の画面で設定します。これまでに調べた値を利用して、次のようにフォームに入力してください。

  • LDAPサーバーURI: ldap://192.168.0.158
  • LDAPバインドDN: CN=binduser,CN=Users,DC=ANSIBLE,DC=JP,DC=REDHAT,DC=COM
  • LDAPバインドパスワード: <binduserのパスワード>
  • LDAPユーザーDNテンプレート: (空欄)
  • LDAPグループタイプ: PosixGroupType
  • LDAP要求グループ: (空欄)
  • LDAP拒否グループ: (空欄)
  • LDAP START TLS: off
  • LDAPユーザー検索:
[
 "CN=Users,DC=ANSIBLE,DC=JP,DC=REDHAT,DC=COM",
 "SCOPE_SUBTREE",
 "(sAMAccountName=%(user)s)"
]
  • LDAPグループ検索:
[
 "CN=Users,DC=ANSIBLE,DC=JP,DC=REDHAT,DC=COM",
 "SCOPE_SUBTREE",
 "(objectClass=group)"
]
  • LDAPユーザー属性マップ:
{
 "first_name": "givenName",
 "last_name": "sn",
 "email": "mail"
}
  • LDAPグループタイプパラメーター:
{
 "name_attr": "cn"
}

他の欄はデフォルト設定のままで、「保存」を押して設定を保存してください。

Active Directory でユーザを作成

アカウント名を user46 としてユーザを一つ作りました。「姓」「名」「電子メール」の欄は Ansible Tower の設定に反映されるので、適切に入力してください。

f:id:sugitk:20200928124354p:plain

作成したユーザで Ansible Tower からログイン

ユーザ名とパスワードでログインできることを確認してください。Active Directory 側で設定した項目がうまくマッピングされています。

f:id:sugitk:20200928124408p:plain

ログインはできましたが、いまのところ何も権限が付与されていません。適宜 admin ユーザなどの管理者権限を持つユーザからそれぞれに対して適切なパーミッションを付与して使う必要があります。

「LDAP組織マップ」や「LDAPチームマップ」の設定で自動的に「組織」や「チーム」にユーザを割り当てることにより、このパーミッションの付与作業を軽減することもできます。今回は触れることができませんでしたが、詳しくはこちらのドキュメントをご確認ください。

docs.ansible.com

Ansible Towerの評価ライセンスリクエストはこちらからご利用いただけますのでお試しください。

www.ansible.com

Happy Automation!

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。