jborean93.win_laps
Ansible 角色 win_laps
在 Windows 主机上安装和配置 本地管理员密码解决方案 应用程序。
可以用来执行以下操作:
- 安装服务器端组件并添加所需的活动目录架构对象和权限
- 创建一个 GPO,自动将 LAPS 配置推送到客户端
- 安装客户端组件
该角色主要是一个概念验证,旨在简化集成 LAPS 的测试域的设置。虽然可以在真实环境中运行,但由于 LAPS 在活动目录中需要进行复杂的更改,请在触及生产环境之前进行测试。
要求
- 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 安装配置的组织单位列表。这将根据需要在活动目录中应用适当的权限,并链接新创建的 LAPS GPO(例如:OU=Workstations,DC=domain,DC=local
)。
可选变量
以下变量为可选:
opt_laps_admin_account
:更改要使用 LAPS 管理的管理员帐户名称,默认使用BUILTIN\Administrator
帐户opt_laps_configure_gpo
:设置为True
并且opt_laps_install_server
为True
时,将创建一个 GPO 来强制应用 LAPS 配置,并将其链接到man_laps_out_containers
(默认:False
)opt_laps_install_client
:设置为True
时,将安装客户端组件(默认:False
)opt_laps_install_powershell
:设置为True
时,将安装 LAPS PowerShell 模块AdmPwd.PS
(默认:False
)opt_laps_install_server
:设置为True
时,将安装和配置服务器端组件以及活动目录配置(默认:False
)opt_laps_install_ui
:设置为True
时,将安装 LAPS UI 应用程序(默认:False
)opt_laps_install_source
:要安装的 LAPS msu 的路径或 URL,默认使用微软的下载 URLopt_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
:覆盖用于配置活动目录的连接用户,该帐户应是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: 安装带 UI 的 LAPS 客户端
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
# ACEs 包含要应用的权限列表
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
目录中的模块在每个角色版本中不保证保持不变。在升级角色版本之前,请务必阅读变更日志以了解这些模块的任何更改。
测试
此角色依赖于已设置的域,并在两台不同的主机上运行。这在免费 CI 环境中很难设置,因此唯一的测试将通过本地的 Vagrant 进行。要测试该角色,请执行以下操作:
pip install pypsrp
cd tests
vagrant up
ansible-playbook -i inventory.ini main.yml -vvv
根据 Vagrant box 是否已经下载,这些步骤可能需要一些时间。当前的测试套件只是将在域控制器上安装服务器组件,并在另一台服务器上安装客户端 CSE,以确保我们可以检索密码。
待办事项
- 添加可选参数以控制每个 AD 属性的 SACL(审核) 欢迎任何功能请求。
ansible-galaxy install jborean93.win_laps