jborean93.win_laps
Ansibleロール win_laps
Windowsホストにローカル管理者パスワードソリューションアプリケーションをインストールし、設定します。
これを使用して以下のことができます;
- サーバー側コンポーネントをインストールし、必要なActive Directoryスキーマオブジェクトと権限を追加
- クライアントにLAPS設定を自動的にプッシュするGPOを作成
- クライアント側コンポーネントをインストール
このロールは主に概念検証のためのもので、LAPSを統合したテストドメインをセットアップするのを簡単にします。このロールを実稼働環境で動かすことができない理由はありませんが、LAPSがADに要求する複雑な変更のため、実稼働環境に触れる前にテストしてください。
要件
- Windows Server 2012 R2+
注意:このロールはWindows Server 2016でテストされています。他のバージョンでも動作するはずですが、保証はありません。
サーバー側コンポーネント要件
このロールを使用してサーバー側コンポーネントをインストールする場合、次のことが必要になります;
Schema Admin
ドメイングループのメンバーであるユーザーとして接続すること- または、
opt_laps_domain_username
またはopt_laps_domain_password
変数を通じてSchema Admin
ドメイングループのメンバーであるユーザーを指定すること - 管理者としてドメインコントローラーに接続していること
GPO設定要件
このロールを使用してGPOポリシーを設定する場合、新しいGPOを作成してターゲット組織単位にリンクする権限を持つユーザーとして接続していることを確認する必要があります。
クライアント側コンポーネント要件
クライアント側コンポーネントをインストールするための唯一の要件は、ホストで管理者であることです。
変数
必須変数
opt_laps_install_server
またはopt_laps_configure_gpo
がTrue
の場合、次の変数は必須です;
man_laps_ou_containers
: LAPSインストールで設定する組織単位のリスト。これにより、AD内で適切な権限が適用され、新しく作成されたLAPS GPOが必要に応じてリンクされます。
man_laps_ou_containers
の値は、OUの完全な識別名である必要があります。例:OU=Workstations,DC=domain,DC=local
。
任意変数
次の変数は任意です;
opt_laps_admin_account
: LAPSで管理する管理者アカウントの名前を変更します。デフォルトはBUILTIN\Administrator
アカウントです。opt_laps_configure_gpo
:True
に設定すると、opt_laps_install_server
がTrue
のときに、LAPS設定を強制し、man_laps_out_containers
にリンクするGPOを作成します(デフォルト:False
)。opt_laps_install_client
:True
に設定すると、クライアント側コンポーネントをインストールします(デフォルト:False
)。opt_laps_install_powershell
:True
に設定すると、LAPS PowerShellモジュールAdmPwd.PS
をインストールします(デフォルト:False
)。opt_laps_install_server
:True
に設定すると、サーバー側コンポーネントとActive Directoryの設定をインストールおよび構成します(デフォルト:False
)。opt_laps_install_ui
:True
に設定すると、LAPS UIアプリケーションをインストールします(デフォルト:False
)。opt_laps_install_source
: インストールするLAPS msiのパスまたはURLで、デフォルトはMicrosoftのダウンロードURLです。opt_laps_product_id
: 冪等性チェックに使用されるLAPSインストーラーのユニークなプロダクトIDを指定します。デフォルトでは、%ProgramFiles%\LAPS
がすでに存在する場合、インストーラーはスキップされます。opt_laps_skip_reboot
:True
に設定すると、LAPSインストールが必要だと言ってもホストを再起動しません。スキップされた場合はout_laps_reboot_required
をセットします(デフォルト:False
)。
サーバー設定を制御するために設定できる任意の変数;
opt_laps_domain_server
: LAPS設定を追加する対象のドメインコントローラーを指定します。デフォルトはlocalhost
です。opt_laps_domain_username
: ADを設定するために使用する接続ユーザーをオーバーライドします。このアカウントはSchema Admins
グループのメンバーである必要があります。opt_laps_domain_password
:opt_laps_domain_username
のパスワードです。
GPO設定を制御するために設定できる任意の変数;
opt_laps_enforce_password_expiry
:ポリシーで要求されるよりも長いパスワードの期限切れを許可しない
ポリシーに対応。opt_laps_gpo_name
: LAPS設定を含むグループポリシーオブジェクトの名前。opt_laps_password_policy_age
: パスワードの最大年齢(日数)(デフォルト:30
)。opt_laps_password_policy_complexity
: パスワードの複雑さポリシーで、次のいずれかになります;uppercase
uppercase,lowercase
uppercase,lowercase,digits
uppercase,lowercase,digits,symbols
デフォルト
opt_laps_password_policy_length
: 生成するパスワードの長さ(デフォルト:14
)。
出力変数
out_laps_reboot_required
:opt_laps_skip_reboot
がTrue
であり、再起動が必要な場合はTrue
に設定されます。
ロール依存関係
なし
サンプルプレイブック
- name: LAPSクライアントをUIとともにインストール
hosts: windows
gather_facts: no
roles:
- role: jborean93.win_laps
opt_laps_install_client: True
opt_laps_install_ui: True
- name: LAPSサーバーをインストールし、1つのOUに対して設定
hosts: windows
gather_facts: no
roles:
- role: jborean93.win_laps
man_laps_ou_containers:
- OU=Workstations,DC=domain,DC=local
- OU=Accounting,DC=domain,DC=local
opt_laps_install_server: True
- name: LAPSサーバーをインストールし、GPOを作成
hosts: windows
gather_facts: no
roles:
- role: jborean93.win_laps
man_laps_ou_containers:
- OU=Workstations,DC=domain,DC=local
opt_laps_install_server: True
opt_laps_configure_gpo: True
ロールが実行された後は、win_ad_dacl
モジュールなどがAnsibleパスに利用可能になります。このモジュールを使用して、他のアカウントにパスワードおよび有効期限属性への読み書きアクセスを適用できます。デフォルトでは、ドメイン管理者または実際のコンピュータアカウントのみがこれらの値に触れることができます。DACLに新しいユーザーまたはグループを追加するには、次のようなタスクを実行できます;
- name: パスワード属性の読み取りアクセスを持つユーザーを追加
win_ad_dacl:
# OUの完全な識別名を使用するのが最適
path: OU=Workstations,DC=ansible,DC=laps
state: present
# ACEには適用する権利のリストが含まれます
aces:
# パスワード属性への読み取りアクセスを追加
- rights: ReadProperty
inheritance_type: Descendents
inherited_object_type: Computer
object_type: ms-Mcs-AdmPwd
access: allow
account: ANSIBLE\PasswordUsers
# パスワードの有効期限属性への読み取りおよび書き込みアクセスを追加
- rights: ReadProperty, WriteProperty
inheritance_type: Descendents
inherited_object_type: Computer
object_type: ms-Mcs-AdmPwdExpirationTime
access: allow
account: ANSIBLE\ExpiryUsers
詳細についてはlibrary/win_ad_dacl.py
を参照してください。
library
内のモジュールは、各ロールリリースで同じであることが保証されません。ロールのバージョンをアップグレードする前に、これらのモジュールに関する変更ログを確認してください。
テスト
このロールはドメインが設定され、異なる2つのホストで動作することに依存しています。これは無料のCI環境でセットアップするのが難しいため、実際に行われるテストはローカルのVagrantを通じたものだけです。このロールをテストするには、次の手順を行ってください;
pip install pypsrp
cd tests
vagrant up
ansible-playbook -i inventory.ini main.yml -vvv
これらの手順は、Vagrantボックスがすでにダウンロードされているかによって時間がかかる場合があります。現在のテストスイートは、ドメインコントローラーにサーバーコンポーネントをインストールし、別のサーバーにクライアントCSEをインストールし、パスワードを取得できることを確認します。
バックログ
- 各AD属性のSACL(監査)を制御するためのオプションパラメーターを追加。 フィーチャーリクエストは歓迎します。
ansible-galaxy install jborean93.win_laps