jborean93.win_laps

Ansibleロール win_laps

ビルドステータス win_openssh Ansible Galaxyロール

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_gpoTrueの場合、次の変数は必須です;

  • 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_serverTrueのときに、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_rebootTrueであり、再起動が必要な場合は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(監査)を制御するためのオプションパラメーターを追加。 フィーチャーリクエストは歓迎します。
プロジェクトについて

Install LAPS on a Windows host

インストール
ansible-galaxy install jborean93.win_laps
ライセンス
mit
ダウンロード
1.4k
所有者