

# SEC06-BP03 减少人工管理工作和交互式访问
<a name="sec_protect_compute_reduce_manual_management"></a>

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

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

 **常见反模式：**
+  使用 SSH 或 RDP 等协议对 Amazon EC2 实例进行交互式访问。
+  维护个人用户登录信息，例如 `/etc/passwd` 或 Windows 本地用户。
+  多个用户共用一个密码或私钥来访问实例。
+  手动安装软件，手动创建或更新配置文件。
+  手动更新或修补软件。
+  登录实例来解决问题。

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

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

## 实施指导
<a name="implementation-guidance"></a>

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

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

 为了降低这些风险，您可以实施基于代理的远程访问解决方案，例如 [AWS Systems Manager](https://aws.amazon.com/systems-manager/)。AWS Systems ManagerAgent（SSM Agent）会启动一个加密通道，因此它不依赖于监听外部发起的请求。考虑配置 SSM Agent 以便[通过 VPC 端点建立此通道](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html)。

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

### 实施步骤
<a name="implementation-steps"></a>

1.  在 Amazon EC2 实例上[安装 AWS Systems Manager Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html)（SSM Agent）。检查 SSM Agent 是否包含在基本 AMI 配置中并能够自动启动。

1.  验证与 EC2 实例配置文件相关联的 IAM 角色是否包含 `AmazonSSMManagedInstanceCore` [托管 IAM 策略](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSSMManagedInstanceCore.html)。

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

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

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

1.  必要时，使用 [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) 提供对实例的交互式访问。启用会话活动日志记录，以便在 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 或 [Amazon S3](https://aws.amazon.com/s3/) 中保留审计跟踪记录。  

## 资源
<a name="resources"></a>

 **相关最佳实践：**
+  [REL08-BP04 使用不可变基础设施进行部署](https://docs.aws.amazon.com/wellarchitected/latest/framework/rel_tracking_change_management_immutable_infrastructure.html) 

 **相关示例：**
+  [Replacing SSH access to reduce management and security overhead with AWS Systems Manager](https://aws.amazon.com/blogs/mt/vr-beneficios-session-manager/) 

 **相关工具：**
+  [AWS Systems Manager](https://aws.amazon.com/systems-manager/) 

 **相关视频：**
+  [Controlling User Session Access to Instances in AWS Systems Manager Session Manager](https://www.youtube.com/watch?v=nzjTIjFLiow) 