使用 Ansible 进行 Windows 安全简介
使用 Ansible 进行 Windows 安全简介
欢迎来到我们以 Windows 为中心的入门系列的另一个部分!在之前的文章中,我们讨论了连接到 Windows 机器,简要介绍了将 Ansible 与 Active Directory 一起使用,并讨论了 Ansible 在 Windows 上的包管理选项。在这篇文章中,我们将简要介绍与我们原始主题相关的安全方法和实践。
三要素
为了讨论与 Ansible 和 Windows 相关的安全问题,我们将应用来自流行的 CIA 三要素的概念:机密性、完整性和可用性。
机密性不言自明——保护机密性有助于将私有数据限制为仅授权用户,并有助于防止未经授权的用户查看它。实现此目标的方法包括多种技术,例如身份验证、授权和加密。在使用 Windows 时,这意味着确保主机知道所有必要身份,每个用户都经过适当验证,并且数据受到保护(例如,通过加密),以便只有授权方可以访问它。
完整性是确保数据未被篡改或损坏,因此可以使用。当您通过网络发送数据时,您需要确保它以与发送时相同的条件到达。这将适用于 Ansible Playbook 中的任务、可能被传输的任何文件或安装的软件包(等等!)。
可用性主要与在授权用户需要访问数据时使其可用有关。将冗余、弹性、高可用性或集群视为确保系统和数据可用性的方法。
机密性
正如 Bianca 在本系列的第一部分中提到的那样,Ansible 使用 WinRM 并使用变量发送用户名/密码(或者,在 Ansible Tower 的情况下,使用凭据)。在下面的示例中,它显示了一个包含变量作为 [win:vars]
的清单文件,证书将被忽略
[win:vars] ansible_user=vagrant ansible_connection=winrm ansible_winrm_server_cert_validation=ignore
在 Active Directory 环境中,已加入域的主机将不需要忽略验证您的控制节点是否已设置为信任 Active Directory CS 的证书。
完整性
Active Directory(由 John 在第二部分中讨论)为验证域范围内证书的凭据和权限添加了更多验证。目录服务通过成为权威凭据存储库为机密性提供了额外的安全性。将主机加入域会建立其信任,因此只要请求资源的用户有效,那么已加入域的主机将已建立完整性。
Ansible 能够安全地并使用有效的域凭据添加和管理用户(win_domain_user)、组(win_domain_group)或主机(win_domain_membership)。有关如何使用剧本执行这些任务的示例,请参见下面的示例
- name: Join to domain win_domain_membership: dns_domain_name: tycho.local hostname: mydomainclient domain_admin_user: "{{ win_domain_admin_user }}" domain_admin_password: "{{ win_domain_admin_password }}" domain_ou_path: "OU=Windows,OU=Servers,DC=tycho,DC=local" state: domain register: domain_state - name: set group with delete protection enabled win_domain_group: name: Users scope: domainlocal category: security ignore_protection: no
可用性
在最近的与 Windows 相关的文章中,关于包管理的文章,Jake 提供了一些使用 Ansible 模块 win_package 和 win_chocolatey 的示例。这与安全三要素的第三部分相关,因为数据模型的物理层和传输层在可获得性方面得到了很多关注,但快速高效的软件/补丁管理也是维护这种可用性的一个组成部分。通过推出更新所花费的时间越少,停机时间就越少。在推出过程中节省几分钟甚至几秒钟可以带来更一致的服务交付。
可以使用 Ansible 模块执行的与可用性相关的安全功能很重要,与更新有关。顾名思义,win_updates 通过自动执行 Windows 更新客户端,在所有 Windows 主机上同时搜索、下载和安装更新。让我们进一步探索此模块。
下面的示例取自 示例,该示例是与安全自动化相关的 Ansible 角色 集合的一部分。在这里您可以看到 win_updates 模块在运行
tasks: - name: Install security updates win_updates: category_names: - SecurityUpdates Notify: reboot windows system
另一个示例显示了如何在剧本中使用此模块来修补 Windows 节点,以及 win_reboot 模块,该模块用于——您猜对了!——自动重启 Windows 机器
– name: Install missing updates win_updates: Category_names: – ServicePacks – UpdateRollups – CriticalUpdates Reboot: yes
结论
安全是一个复杂且不断发展的领域,它取决于每个组织的特定环境、漏洞和特定需求。阅读以上内容作为指南,而不是清单非常重要;如果未实施持续改进,那么无论实施多少,都不会产生任何持久的影响。
希望您发现这些信息对您有所帮助,并且这个五部分系列为您提供了使用 Ansible 为您完成工作来自信地自动执行 Windows 主机的工具!