SEC06-BP03 减少人工管理工作和交互式访问
尽可能使用自动化方式来执行部署、配置、维护和调查任务。在紧急程序或安全(沙盒)环境中,如果自动化不可用,可以考虑手动访问计算资源。
期望结果:程序化脚本和自动化文档(运行手册)可捕获计算资源上的授权操作。这些运行手册可以通过变更检测系统自动启动,也可以在需要人工判断时手动启动。只有在无法实现自动化的紧急情况下,才允许直接访问计算资源。所有手动活动都会被记录下来并纳入审查流程,以便不断提高自动化能力。
常见反模式:
-
使用 SSH 或 RDP 等协议对 Amazon EC2 实例进行交互式访问。
-
维护个人用户登录信息,例如
/etc/passwd
或 Windows 本地用户。 -
多个用户共用一个密码或私钥来访问实例。
-
手动安装软件,手动创建或更新配置文件。
-
手动更新或修补软件。
-
登录实例来解决问题。
建立此最佳实践的好处:自动执行操作有助于降低意外更改和错误配置的操作风险。避免使用 Secure Shell(SSH)和远程桌面协议(RDP,Remote Desktop Protocol)进行交互式访问,可缩小计算资源的访问范围。这样可以消除一种执行未经授权操作的常见方式。可以在自动化文档和程序化脚本中捕获计算资源管理任务,这种机制以细粒度的方式定义和审计授权活动的全部范围。
在未建立这种最佳实践的情况下暴露的风险等级:中
实施指导
登录到实例上是一种传统的系统管理方法。安装服务器操作系统后,用户通常会手动登录,以便配置系统并安装所需的软件。在服务器的生命周期内,用户可能会登录服务器来更新软件、应用补丁、更改配置和解决问题。
然而,手动访问会带来一些风险。这需要一个能监听请求(如 SSH 或 RDP 服务)的服务器,这就可能为未经授权的访问提供潜在的路径。这还增加了与执行手动措施相关的人为出错风险。这些操作可能导致工作负载事件、数据损坏或毁坏或者其它安全问题。人工访问还需要防止共享凭证,从而增加了管理开销。
为了降低这些风险,您可以实施基于代理的远程访问解决方案,例如 AWS Systems Manager
利用 Systems Manager 可以精细控制您与托管实例进行交互的方式。您可以定义要运行的自动化操作、谁可以运行以及何时运行。Systems Manager 可以打补丁、安装软件和更改配置,而无需与实例进行交互式访问。Systems Manager 还可提供对远程 Shell 的访问,并将会话期间调用的每条命令及其输出记录到日志和 Amazon S3
实施步骤
-
在 Amazon EC2 实例上安装 AWS Systems Manager Agent(SSM Agent)。检查 SSM Agent 是否包含在基本 AMI 配置中并能够自动启动。
-
验证与 EC2 实例配置文件相关联的 IAM 角色是否包含
AmazonSSMManagedInstanceCore
托管 IAM 策略。 -
禁止在实例上运行 SSH、RDP 和其它远程访问服务。为此,您可以运行在启动模板的用户数据部分内配置的脚本,或者使用 EC2 Image Builder 等工具构建自定义 AMI。
-
确保适用于 EC2 实例的安全组入口规则不允许访问端口 22/tcp(SSH)或端口 3389/tcp(RDP)。使用 AWS Config 等服务对配置错误的安全组实施检测和提醒。
-
在 Systems Manager 中定义适当的自动化操作、运行手册和运行命令。使用 IAM 策略来定义谁可以执行这些操作以及允许执行这些操作的条件。请在非生产环境中彻底测试这些自动化操作。请尽可能调用这些自动化操作,而不是以交互方式访问实例。
-
必要时,使用 AWS Systems Manager Session Manager 提供对实例的交互式访问。启用会话活动日志记录,以便在 Amazon CloudWatch Logs 或 Amazon S3
中保留审计跟踪记录。
资源
相关最佳实践:
相关示例:
相关工具:
相关视频: