本記事では、実務で一般的に採用されるADサーバーの構築例をベースに、設計のポイントと重要な設定項目について解説します。なお、構築手順の効率化(再現性の確保)のため、Ansibleを用いた手順も併せて紹介します。
1. ネットワークとOSの基本設計
静的IPアドレスの固定
DCは認証の基盤であり、クライアントからの名前解決の対象です。IPアドレスが動的に変わることは許されません。
- ポイント: 必ず固定IPを割り当てます。後述する2台目のDC構築時、互いを参照し合うDNS設定が冗長化の鍵となります。
サーバー名の命名規則
WIN-XXXXXのような初期名は避け、一目で役割がわかる名前に変更します。
-
例:
AD01,SV-AUTH01など - 注意: AD DS役割の追加後にサーバー名を変更するとトラブルの元になるため、昇格前に必ず完了させます。
DNSサーバーの設定
自分自身がドメインのDNSサーバーとなるため、自身の優先DNSサーバーは「127.0.0.1(自分自身)」または自身の固定IPに設定します。
2. 時刻同期(NTP)の設計
ADにおいて、サーバーとクライアントの時刻のズレは5分以内である必要があります。これを超えるとKerberos認証に失敗し、ログインできなくなります。
PDCエミュレーターの役割
ドメイン内で1台、「PDCエミュレーター」という役割を持つDCが時刻同期のマスターとなります。
- 設計: PDCエミュレーターは、外部の正確な時刻ソース(独立行政法人情報通信研究機構(NICT)やクラウド事業者の提供するNTP等)と同期するように設定します。
3. Active Directoryの構築(Ansibleによる自動化)
ここではAnsibleを使用して、一貫性のある構築を行います。
1台目のドメインコントローラー構築
前提条件
- 対象サーバーで WinRM が有効であること。
-
ansible-galaxy collection install microsoft.adを実行済みであること。
Ansible Playbook (setup_ad.yml)
---
- name: Active Directory ドメインサービスの構築
hosts: windows
gather_facts: false
vars:
# 構築パラメータ
domain_name: "example.local"
safe_mode_password: "" # 環境変数やAnsible Vaultの使用を推奨
tasks:
- name: 1. Active Directory ドメインサービス(AD DS)役割のインストール
ansible.windows.win_feature:
name: AD-Domain-Services
state: present
include_management_tools: true
register: install_ad_feature
- name: 2. 新しいフォレストの作成(ドメインコントローラーへの昇格)
microsoft.ad.domain:
dns_domain_name: "{{ domain_name }}"
safe_mode_password: "{{ safe_mode_password }}"
# NetBIOS名は自動的に生成されます(例: EXAMPLE)
register: domain_promotion
- name: 3. インストール後の再起動
ansible.windows.win_reboot:
msg: "AD DS構築完了のため再起動します"
reboot_timeout: 600
when: domain_promotion.reboot_required
インベントリファイルの例 (hosts.ini)
[windows]
192.168.1.10
[windows:vars]
ansible_user=Administrator
ansible_password=
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
手順との対応表
| GUIの手順 | Ansibleのモジュール / パラメータ |
|---|---|
| 役割と機能の追加 | ansible.windows.win_feature |
| Active Directory ドメインサービス | name: AD-Domain-Services |
| 新しいフォレストを追加する | microsoft.ad.domain |
| ルートドメイン名 (example.local) | dns_domain_name: "example.local" |
| パスワード (DSRM) | safe_mode_password |
| 再起動 | ansible.windows.win_reboot |
補足事項
-
パスワードの管理: プレイブック内に直接パスワードを書くのはセキュリティ上推奨されません。本番環境では
ansible-vaultを使用して暗号化することをお勧めします。 -
NetBIOS名: 手順にある「NetBIOS名は自動入力される」挙動は、Ansibleの
microsoft.ad.domainモジュールでも同様で、デフォルトではドメイン名の先頭部分が自動採用されます。 - DNSオプション: AD DSの役割をインストールする際、依存関係としてDNSサーバー機能も自動的に構成されます。
4. 組織単位(OU)の設計思想
ADのOU設計は「管理の委任」と「GPOの適用範囲」を基準にします。
デフォルトの Users や Computers コンテナは、グループポリシー(GPO)を直接リンクできないという制約があるため、独自のOUを作成します。
推奨される構成例
「拠点・部署」×「オブジェクトの種類」の階層構造が一般的です。
example.local (ドメインルート)
└── IT-Division (管理用OU)
├── Admins (管理者用アカウント)
└── Servers (サーバー機)
└── Tokyo-Office (拠点OU)
├── Users (一般ユーザー)
│ ├── Sales (営業部)
│ └── BackOffice (事務・人事)
├── Computers (一般PC)
└── Groups (部署ごとのセキュリティグループ)
5. グループポリシー(GPO)の設計
実務でよく設定される主要なGPO項目を整理します。
① セキュリティ基盤(Default Domain Policy等)
- パスワードのポリシー: 8文字以上、複雑さの要件有効、有効期間90日など。
- アカウントロックアウト: 5回失敗で30分ロック。
② クライアントPC向け設定(Computers OU)
- Windows Update: 夜間に自動インストール、再起動を促す設定。
- 離席対策: スクリーンセーバーを有効にし、5分でパスワード保護。
- FW設定: Windows Defender Firewallの一括有効化と例外ルールの定義。
③ ユーザー環境設定(Users OU)
- デスクトップ制限: コントロールパネルへのアクセス禁止など。
- ブラウザ設定: 社内ポータルをホームページに固定、信頼済みサイトの登録。
6. 冗長化とバックアップ(2台目のDC)
可用性を高めるため、ADは必ず2台以上で構成します。
2台目のDC追加におけるポイント
1台目のDCに障害が発生しても、2台目が認証を継続できるようにします。
Ansible Playbook (add_second_dc.yml)
---
- name: ADサーバーの冗長化(2台目のDC追加)
hosts: windows_new_dc
gather_facts: yes
vars:
domain_name: "example.local"
# 1台目のADサーバーのIPアドレス(DNS参照先として使用)
first_dc_ip: "192.168.1.10"
# ドメイン参加用の権限を持つユーザー
domain_admin_user: "Administrator@example.local"
domain_admin_password: "" # 環境変数やAnsible Vaultの使用を推奨
# 復元モード用パスワード
safe_mode_password: "" # 環境変数やAnsible Vaultの使用を推奨
tasks:
- name: 1. 優先DNSサーバーを1台目のADに設定
# 手順の「DNSサーバー変更手順」に該当
ansible.windows.win_dns_client:
adapter_names: "*"
ipv4_addresses:
- "{{ first_dc_ip }}"
- "127.0.0.1" # 自分自身も予備として追加
- name: 2. AD DS および DNS役割のインストール
# 手順の「役割と機能の追加」に該当
ansible.windows.win_feature:
name:
- AD-Domain-Services
- DNS
state: present
include_management_tools: true
- name: 3. 既存ドメインへのドメインコントローラー追加(昇格)
# 手順の「既存のドメインにドメインコントローラーを追加する」に該当
microsoft.ad.domain_controller:
domain_name: "{{ domain_name }}"
safe_mode_password: "{{ safe_mode_password }}"
domain_admin_user: "{{ domain_admin_user }}"
domain_admin_password: "{{ domain_admin_password }}"
state: domain_controller
read_only: false
site_name: "Default-First-Site-Name"
register: dc_promotion
- name: 4. 完了後の再起動
ansible.windows.win_reboot:
msg: "AD冗長化完了のため再起動します"
when: dc_promotion.reboot_required
手順との対応解説
| 手順書の項目 | Ansibleの処理 | 解説 |
|---|---|---|
| DNSサーバーの変更 | win_dns_client |
2台目がドメインに参加するためには、1台目の名前解決ができる必要があります。 |
| 役割と機能の追加 | win_feature |
AD-Domain-Services と DNS の両方を一括でインストールします。 |
| 既存のドメインに追加 | domain_controller |
microsoft.ad コレクションを使用し、既存ドメインへの参加を指定します。 |
| パスワードの設定 | safe_mode_password |
DSRM(復元モード)のパスワードを設定します。 |
| レプリケート元 | (自動) |
domain_controller モジュールは、標準で最適なDCからデータを同期します。 |
| 自動的に再起動 | win_reboot |
昇格処理の結果、再起動が必要な場合にのみ実行されます。 |
7. まとめ:堅牢なAD環境の維持に向けて
本記事では、Active Directoryの基本設計からAnsibleを用いた自動構築、そして冗長化の構成までを解説しました。安定したドメイン運用を実現するための要点は以下の通りです。
構築・設計の重要ポイント
- 徹底した事前準備: 静的IPアドレスの固定やサーバー名の命名は、AD昇格後の変更が困難なため、最初に行います。
- 正確な時刻同期: Kerberos認証の不整合を防ぐため、PDCエミュレーターを起点とした外部NTPサーバーとの同期が不可欠です。
- 運用を考慮したOU設計: デフォルトのコンテナを避け、管理の委任やグループポリシー(GPO)の適用を前提とした階層構造を構築します。
- 冗長性の確保: 単一障害点を排除するため、必ず2台以上のドメインコントローラー(DC)を設置し、互いにDNSを参照し合う設定にします。
自動化によるメリット
Ansibleを活用することで、GUI操作による設定漏れやヒューマンエラーを排除し、「コードとしてのインフラ(Infrastructure as Code)」を実現できます。これにより、検証環境の迅速な立ち上げや、将来的なサーバーのリプレース作業も容易になります。