LoginSignup
9
6

More than 5 years have passed since last update.

AWS Microsoft ADをAnsibleでユーザ管理する

Last updated at Posted at 2018-06-15

はじめに

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ファイルでグループ変数を定義します。
リスト型の変数で定義できればどのような方法でもよいでしょう。

vars/main.yml
ad_group:
  - example_gourp_1
  - example_gourp_2
  - example_gourp_3

タスクの実行

tasks/main.yml
- 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ファイルでユーザの変数を定義します。

vars/main.yml
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

タスクの実行

tasks/main.yml
- 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パラメータの値です。
email ADのemailパラメータの値です。
groups ユーザの所属グループです。ここではDomain Usersグループには必ず所属するようにしています。
upn ユーザー・プリンシパル名です。
attributes Ansibleで予約されているパラメータ以外の属性を指定するときに利用します。辞書型でパラメータのキー:パラメータの値を指定します。
domain_username ドメインを登録するのに使うユーザ名です
domain_password ドメインを登録するのに使うユーザパスワードです

ADの確認

Windows ServerにRDPでリモート接続し、「Active Directory Users and Computers」サービスで
ADの構造を確認することができます。

ad_001.PNG

おわりに

最初は手で構築する必要がありますが、その後はAnsibleで運用をいい感じにできそうです。
SSOなどと組み合わせることによって効率よくユーザ管理できるといいですね。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6