SEC06-BP03 减少人工管理工作和交互式访问 - AWS Well-Architected 框架

SEC06-BP03 减少人工管理工作和交互式访问

尽可能使用自动化方式来执行部署、配置、维护和调查任务。在紧急程序或安全(沙盒)环境中,如果自动化不可用,可以考虑手动访问计算资源。

期望结果:程序化脚本和自动化文档(运行手册)可捕获计算资源上的授权操作。这些运行手册可以通过变更检测系统自动启动,也可以在需要人工判断时手动启动。只有在无法实现自动化的紧急情况下,才允许直接访问计算资源。所有手动活动都会被记录下来并纳入审查流程,以便不断提高自动化能力。

常见反模式:

  • 使用 SSH 或 RDP 等协议对 Amazon EC2 实例进行交互式访问。

  • 维护个人用户登录信息,例如 /etc/passwd 或 Windows 本地用户。

  • 多个用户共用一个密码或私钥来访问实例。

  • 手动安装软件,手动创建或更新配置文件。

  • 手动更新或修补软件。

  • 登录实例来解决问题。

建立此最佳实践的好处:自动执行操作有助于降低意外更改和错误配置的操作风险。避免使用 Secure Shell(SSH)和远程桌面协议(RDP,Remote Desktop Protocol)进行交互式访问,可缩小计算资源的访问范围。这样可以消除一种执行未经授权操作的常见方式。可以在自动化文档和程序化脚本中捕获计算资源管理任务,这种机制以细粒度的方式定义和审计授权活动的全部范围。

在未建立这种最佳实践的情况下暴露的风险等级:

实施指导

登录到实例上是一种传统的系统管理方法。安装服务器操作系统后,用户通常会手动登录,以便配置系统并安装所需的软件。在服务器的生命周期内,用户可能会登录服务器来更新软件、应用补丁、更改配置和解决问题。

然而,手动访问会带来一些风险。这需要一个能监听请求(如 SSH 或 RDP 服务)的服务器,这就可能为未经授权的访问提供潜在的路径。这还增加了与执行手动措施相关的人为出错风险。这些操作可能导致工作负载事件、数据损坏或毁坏或者其它安全问题。人工访问还需要防止共享凭证,从而增加了管理开销。 

为了降低这些风险,您可以实施基于代理的远程访问解决方案,例如 AWS Systems Manager。AWS Systems ManagerAgent(SSM Agent)会启动一个加密通道,因此它不依赖于监听外部发起的请求。考虑配置 SSM Agent 以便通过 VPC 端点建立此通道

利用 Systems Manager 可以精细控制您与托管实例进行交互的方式。您可以定义要运行的自动化操作、谁可以运行以及何时运行。Systems Manager 可以打补丁、安装软件和更改配置,而无需与实例进行交互式访问。Systems Manager 还可提供对远程 Shell 的访问,并将会话期间调用的每条命令及其输出记录到日志和 Amazon S3 中。AWS CloudTrail 会记录对 Systems Manager API 的调用,以供检查之用。

实施步骤

  1. 在 Amazon EC2 实例上安装 AWS Systems Manager Agent(SSM Agent)。检查 SSM Agent 是否包含在基本 AMI 配置中并能够自动启动。

  2. 验证与 EC2 实例配置文件相关联的 IAM 角色是否包含 AmazonSSMManagedInstanceCore 托管 IAM 策略

  3. 禁止在实例上运行 SSH、RDP 和其它远程访问服务。为此,您可以运行在启动模板的用户数据部分内配置的脚本,或者使用 EC2 Image Builder 等工具构建自定义 AMI。

  4. 确保适用于 EC2 实例的安全组入口规则不允许访问端口 22/tcp(SSH)或端口 3389/tcp(RDP)。使用 AWS Config 等服务对配置错误的安全组实施检测和提醒。

  5. 在 Systems Manager 中定义适当的自动化操作、运行手册和运行命令。使用 IAM 策略来定义谁可以执行这些操作以及允许执行这些操作的条件。请在非生产环境中彻底测试这些自动化操作。请尽可能调用这些自动化操作,而不是以交互方式访问实例。

  6. 必要时,使用 AWS Systems Manager Session Manager 提供对实例的交互式访问。启用会话活动日志记录,以便在 Amazon CloudWatch LogsAmazon S3 中保留审计跟踪记录。 

资源

相关最佳实践:

相关示例:

相关工具:

相关视频: