1.2.2 了解环境中要包含哪些内容
在继续之前,我们需要了解环境中要包含哪些内容。在上一节中,我们概述了一个非常简单的SOE定义。任何一个好的SOE操作过程的一部分就是拥有一个预定义的操作系统构建,它可以随时被部署。有多种方法可以实现这一点,我们将在本书后面讨论这些。但是,目前,让我们假设已经建立了Ubuntu 18.04 LTS的基本映像,正如前面所建议的那样。
我们在这个标准构建中集成了什么?例如,我们知道登录策略将应用于整个组织,因此,在创建构建时,/etc/ssh/sshd_config必须定制为包含PermitRootLogin no和PasswordAuthentication no。在部署后,再在配置中执行此步骤没有意义,因为这必须在每个部署上执行。很简单,这将是低效的。
对于操作系统映像,还有一些重要的自动化考虑因素。我们知道Ansible本身是通过SSH进行通信的,因此需要某种凭据(很可能是基于SSH密钥的),以便Ansible在所有部署的服务器上运行。在实际执行任何自动化操作之前,手动将Ansible凭据推送到每台计算机没有什么意义,因此重要的是考虑Ansible要使用的身份验证类型(例如,基于密码或SSH密钥的身份验证),并在构建映像时创建账户和相应的凭据。具体方法取决于你的公司安全标准,但我建议将以下内容作为一种潜在的解决方案:
·在标准映像上创建一个本机账户,以便Ansible进行身份验证。
·授予此账户适当的sudo权限,以确保可以执行所有所需的自动化任务。
·设置此账户的本机口令,或者将从Ansible密钥对中取出的SSH公钥添加到你创建的本机Ansible账户的authorized_keys文件中。
这样做当然会带来一些安全风险。Ansible很可能需要完全访问你服务器上的root,以便它有效地执行你可能要求它执行的所有自动化任务,因此如果凭据泄露,此Ansible账户可能会成为后门。建议尽可能少的人可以访问你的凭据,并建议你使用AWX或Ansible Tower(我们将在第3章中探讨)等工具来管理你的凭据,从而防止其他人不适当地获取凭据。你几乎肯定还希望启用对Ansible账户执行的所有活动的审计,并将这些活动记录到某个中央服务器上,以便你可以检查它们是否存在任何可疑活动,并根据需要对它们进行审计。
从用户账户和身份验证开始,还可以考虑Nagios跨平台代理(NCPA)。在我们的示例中,我们知道需要监视所有部署的服务器,因此必须安装NCPA代理,并定义令牌以便它可以与Nagios服务器通信。同样,部署标准映像之后再在每台服务器上执行此操作是没有意义的。
但是Web服务器呢?制定一个标准是明智的,因为这意味着所有对环境负责的人都能对这项技术感到满意。这使得管理更容易,并且对于自动化特别有利,我们将在下一节中看到。但是,除非你只需要部署运行在Linux上的Web服务器,否则这可能不应该作为标准构建的一部分。
作为一个合理的原则,标准构建应该尽可能简单和轻量级。当额外的服务都是多余的时,在服务器上面运行它们,占用内存和CPU周期是没有意义的。同样,拥有未配置的服务会增加潜在攻击者的攻击面,因此出于安全原因,建议将其排除在外。
简言之,标准构建应该只包含将对部署的每个服务器都通用的配置和服务。这种方法有时称为刚刚够用操作系统(Just enough Operating System,JeOS),它是SOE的最佳起点。
在了解了SOE的基本原理之后,我们将在下一节中更详细地了解SOE给企业带来的好处。