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: パスワードの複雑さポリシーで、次のいずれかになります;uppercaseuppercase,lowercaseuppercase,lowercase,digitsuppercase,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