はじめに
AnsibleでAWS Microsoft ADサービスのユーザ管理をしてみます。
記事ではAWS Microsoft ADにスコープをあてていますが
おそらくそれ以外のActiveDirectoryでも同じように管理できると思います。
参考記事と前処理
- [AWS Directory Service] Microsoft ADのセットアップ手順
AWS Microsoft ADとADを操作するインスタンスを構築できます。
この記事に従い、AWS Microsoft ADと操作用のインスタンスを立ち上げます。
- AnsibleでWindowsを操作する準備をする
WindowsでAnsibleのTaskが動くようにしておきます。
オペレーション元はWindowsでなくて大丈夫です。
私は他のLinuxサーバと同じ場所からPlaybookを切り替えて操作できるようにしています。
手順
Windowsサーバのドメイン参加
操作対象のWindowsサーバを、AWS Microsoft ADのドメインに参加させます。
この時、AWS Microsoft ADを作成するときに作成した管理ユーザで
ログインできるか確認しておきます。
ADの利用は、AD上のユーザにログインしてから行う必要があります。
ドメイングループの作成
グループ変数の定義
ここでは、varsファイルでグループ変数を定義します。
リスト型の変数で定義できればどのような方法でもよいでしょう。
ad_group:
- example_gourp_1
- example_gourp_2
- example_gourp_3
タスクの実行
- name: create group
win_domain_group:
name: "{{ item }}"
scope: domainlocal
domain_username: "{{ ad_domain }}\{{ ad_admin_user }}"
domain_password: "{{ ad_admin_pass }}"
with_items:
"{{ ad_group }}"
- ad_domain
- ad_admin_user
- ad_admin_pass
上の3つの変数はどこかで定義しておきます。
それぞれ、AWS Microsoft AD作成時に指定したパラメータを使用します。
最も、ポリシーとして別のユーザを作成し
そのユーザを使ってもよいでしょう。
簡単にパラメータを解説します。
恒例ではありますが、
正確な内容は公式リファレンスを参照してください、
https://docs.ansible.com/ansible/latest/modules/win_domain_group_module.html
パラメータ名 | 説明 |
---|---|
name | グループ名です |
scope | ADのスコープです。私はdomainlocalで運用しています |
domain_username | ドメインを登録するのに使うユーザ名です |
domain_password | ドメインを登録するのに使うユーザパスワードです |
ドメインユーザの作成
ユーザ変数の定義
varsファイルでユーザの変数を定義します。
ad_user:
- name: ad_example_user1
last_name: user1_last_name
first_name: user1_first_name
list_group:
- example_gourp_1
- example_gourp_2
email: ad_example_user1@example.com
- name: ad_example_user2
last_name: user2_last_name
first_name: user2_first_name
list_group:
- example_gourp_1
email: ad_example_user2@example.com
タスクの実行
- name: create user
win_domain_user:
name: "{{ item.last_name }}"
surname: "{{ item.last_name }}"
firstname: "{{ item.first_name }}"
company: company_name
password: "{{ password[item.name] }}"
state: present
update_password: on_create
groups:
"{{ item.list_group + ['Domain Users'] }}"
upn: "{{ item.name }}@{{ ad_domain_name }}"
email: "{{ item.email }}"
attributes:
displayname: "{{ item.name }}"
domain_username: "{{ ad_domain }}\{{ ad_admin_user }}"
domain_password: "{{ ad_admin_pass }}"
with_items: "{{ ad_user }}"
AD操作用ユーザのパラメータはgroup作成時と同じです。
こちらでも簡単にパラメータを解説します。
詳細は同じく公式リファレンスを参照してください。
https://docs.ansible.com/ansible/latest/modules/win_domain_user_module.html
パラメータ名 | 説明 |
---|---|
name | ユーザ名です。 |
password | ユーザのパスワードです。 |
update_password | どのタイミングでパスワードをアップデートするかしています。 |
surname | ADのsurnameパラメータの値です。last_nameに相当します。 |
firstname | ADのfirstnameパラメータの値です。 |
company | ADのcompanパラメータの値です。 |
ADのemailパラメータの値です。 | |
groups | ユーザの所属グループです。ここではDomain Usersグループには必ず所属するようにしています。 |
upn | ユーザー・プリンシパル名です。 |
attributes | Ansibleで予約されているパラメータ以外の属性を指定するときに利用します。辞書型でパラメータのキー:パラメータの値を指定します。 |
domain_username | ドメインを登録するのに使うユーザ名です |
domain_password | ドメインを登録するのに使うユーザパスワードです |
ADの確認
Windows ServerにRDPでリモート接続し、「Active Directory Users and Computers」サービスで
ADの構造を確認することができます。
おわりに
最初は手で構築する必要がありますが、その後はAnsibleで運用をいい感じにできそうです。
SSOなどと組み合わせることによって効率よくユーザ管理できるといいですね。