Systems Manager 的安全最佳实践 - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Systems Manager 的安全最佳实践

Systems Manager 提供了您在开发和实施自己的安全策略时需要考虑的许多安全功能。以下最佳实践是一般准则,并不代表完整的安全解决方案。由于这些最佳实践可能不适合您的环境或不满足您的环境要求,因此将其视为有用的考虑因素而不是惯例。

Systems Manager 预防性安全最佳实践

Systems Manager 的以下最佳实践可以帮助防止安全事故。

实施最低权限访问

在授予权限时,您可以决定谁获得哪些 Systems Manager 资源的哪些权限。您可以对这些资源启用希望允许的特定操作。因此,您应仅授予执行任务所需的权限。实施最低权限访问对于减小安全风险以及可能由错误或恶意意图造成的影响至关重要。

为实现最低权限访问,可以使用以下工具:

使用 SecureString 参数加密和保护密钥数据

SecureString 参数是需要以安全的方式存储和引用的任何敏感数据。如果您有不希望用户更改或以明文形式引用的数据(例如密码或许可证密钥),则应使用 SecureString 数据类型创建这些参数。Parameter Store 使用 AWS Key Management Service (AWS KMS) 客户主密钥 (CMK) 加密参数值。在加密参数值时,AWS KMS 使用客户托管 CMK 或 AWS 托管 CMK。为了获得最大的安全性,我们建议您使用自己的 CMK。如果您使用默认 AWS 托管 CMK 密钥,则有权在您的账户中运行 GetParameterGetParameters 操作的任何用户均可以查看或检索所有 SecureString 参数的内容。如果您使用客户托管的 CMKs 加密安全 SecureString 值,则可以使用 IAM 策略和密钥策略来管理加密和解密参数的权限。使用默认 AWS 托管 CMK 时,您无法为这些操作建立访问控制策略。

有关更多信息,请参阅 使用 IAM 策略限制对 Systems Manager 参数的访问 中的和 AWS Systems Manager Parameter Store 如何使用 AWS KMSAWS Key Management Service Developer Guide

为文档参数定义 allowedValues 和allowedPattern

您可以通过定义 SSM 和 allowedValues 来验证 allowedPattern 文档参数的用户输入。 对于 allowedValues,您可以定义参数允许的值数组。如果用户输入了不允许的值,则执行将无法启动。对于 allowedPattern,需要定义一个正则表达式,用于验证用户输入是否与参数的定义模式匹配。如果用户输入与允许的模式不匹配,则执行无法启动。

有关 allowedValuesallowedPattern 的更多信息,请参阅SSM 文档语法

使用 Amazon Virtual Private Cloud (Amazon VPC) 和 VPC 终端节点

您可以使用 Amazon VPC 在已定义的虚拟网络内启动 AWS 资源。这个虚拟网络与您在数据中心中运行的传统网络极其相似,并会为您提供使用 AWS 的可扩展基础设施的优势。

通过实施 VPC 终端节点,您可以将 VPC 私密地连接到支持的 AWS 服务和 VPC 终端节点服务(由 AWS PrivateLink 提供支持),而无需 Internet 网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。VPC 中的实例无需公有 IP 地址便可与服务中的资源通信。VPC 和其他服务之间的通信不会离开 Amazon 网络。

有关 Amazon VPC 安全性的更多信息,请参阅 中的 (可选)创建 Virtual Private Cloud 终端节点https://docs.amazonaws.cn/AmazonVPC/latest/UserGuide/VPC_Security.htmlSecurityAmazon VPC 用户指南。

使用交互式命令限制 Session Manager 用户访问会话

AWS Systems Manager Session Manager 向您的托管实例提供了多种方法来启动会话。为了实现最安全的连接,您可以要求用户使用交互式命令 方法进行连接,以将用户的交互限制为特定命令或命令序列。这有助于管理用户可以执行的交互操作。有关更多信息,请参阅启动会话(交互式命令)

为 Automation 执行提供临时实例权限

在 Automation 执行期间,您的实例可以只需要该执行所需的权限,而无需其他 Systems Manager 操作的权限。例如,Automation 工作流可能需要实例在工作流期间调用特定 API 操作或访问特定 AWS 资源。如果您希望限制访问这些调用或资源,则可以在 Automation 文档本身中为您的实例提供临时补充权限,而不是将权限添加到您的 IAM 实例配置文件中。在 Automation 执行结束时,临时权限删除。有关更多信息,请参阅 http://amazonaws-china.com/blogs/mt/providing-temporary-instance-permissions-with-aws-systems-manager-automations/ 管理和监管博客 上的AWS使用 AWS Systems Manager Automations 提供临时实例权限

使 AWS 和 Systems Manager 工具保持最新状态

AWS 定期发布您可在 AWS 和 Systems Manager 操作中使用的工具和插件的更新版本。确保这些资源为最新可确保您账户中的用户和实例能够访问这些工具中的最新功能和安全功能。

  • SSM 代理 – AWS Systems Manager 代理(SSM 代理)是一个 Amazon 软件,可以在 EC2 实例、本地服务器或虚拟机 (VM) 上安装和配置。SSM 代理 让 Systems Manager 可以更新、管理和配置这些资源。我们建议至少每两周检查一次新版本,或者应用对代理的自动更新。有关信息,请参阅 自动执行对 SSM 代理 的更新

  • AWS CLI – AWS Command Line Interface (AWS CLI) 是一种开源工具,让您能够在命令行 Shell 中使用命令与 AWS 服务进行交互。若要更新 AWS CLI,请运行安装 AWS CLI 时使用的相同命令。我们建议您在本地计算机上创建计划任务,根据您的操作系统来相应运行命令,至少每两周一次。有关安装命令的信息,请参阅 AWS Command Line Interface 中的安装 。AWS Command Line Interface 用户指南

  • 适用于 Windows PowerShell 的 AWS 工具 – 是根据适用于 .NET 的 AWS 开发工具包公开的功能构建的一组 Windows PowerShell 工具 模块。PowerShell使您可以从 适用于 Windows PowerShell 的 AWS 工具 命令行在 AWS 资源上为操作编写脚本。PowerShell随着适用于 Windows PowerShell 的 AWS 工具的更新版本定期发布,您应更新在本地运行的版本。有关信息,请参阅在 Windows 上更新 适用于 Windows PowerShell 的 AWS 工具 或在 Linux 或 上更新 适用于 Windows PowerShell 的 AWS 工具。macOS

  • Session Manager plugin – 如果组织中具有使用 Session Manager 权限的用户想要使用 AWS CLI 连接到实例,则必须首先在其本地计算机上安装 Session Manager plugin。若要更新插件,请运行安装插件时使用的相同命令。我们建议您在本地计算机上创建计划任务,根据您的操作系统来相应运行命令,至少每两周一次。有关信息,请参阅 (可选)为 AWS CLI 安装 Session Manager plugin

  • CloudWatch 代理 – 您可以配置和使用 CloudWatch 代理,从 EC2 实例、本地实例和虚拟机 (VM) 收集指标和日志。这些日志可以发送到 Amazon CloudWatch Logs 以进行监控和分析。我们建议至少每两周检查一次新版本,或者应用对代理的自动更新。对于最简单的更新,请使用 AWS Systems Manager 快速设置。有关信息,请参阅 AWS Systems Manager 快速设置

Systems Manager 监控和审计最佳实践

Systems Manager 的以下实践可以帮助检测潜在的安全弱点和事故。

确定和审计您的所有 Systems Manager 资源

确定您的 IT 资产是监管和安全性的一个至关重要的方面。您需要标识所有 Systems Manager 资源,以评估它们的安全态势并对潜在的薄弱领域采取措施。

使用标签编辑器确定安全性敏感或审计敏感资源,然后在您需要搜索这些资源时使用这些标签。有关更多信息,请参阅 https://docs.amazonaws.cn/ARG/latest/userguide/tag-editor.html 用户指南 中的AWS 资源组搜索要标记的资源

为您的 Systems Manager 资源创建资源组。有关更多信息,请参阅什么是 AWS 资源组?

使用 Amazon CloudWatch 监控工具实施监控

监控是保持 Systems Manager 和您的 AWS 解决方案的可靠性、安全性、可用性和性能的重要部分。CloudWatch 为您提供了一些可以用来监控 Systems Manager 和您的其他 AWS 服务的工具。有关更多信息,请参阅 将实例日志发送到 CloudWatch Logs (CloudWatch 代理)使用 Amazon EventBridge 监控 Systems Manager 事件

使用 AWS CloudTrail

AWS CloudTrail 提供了用户、角色或 AWS 服务在 Systems Manager 中所执行操作的记录。通过使用 AWS CloudTrail 收集的信息,您可以确定向 Systems Manager 发出了什么请求、发出请求的 IP 地址、何人发出的请求、请求的发出时间以及其他详细信息。有关更多信息,请参阅使用 AWS CloudTrail 记录 AWS Systems Manager API 调用

启用 AWS Config

AWS Config 让您能够评估、审计和评价您的 AWS 资源的配置。AWS Config 监控资源配置,让您能够针对需要的安全配置评估所记录的配置。使用 AWS Config,您可以查看配置更改以及 AWS 资源之间的关系,调查详细的资源配置历史记录,并判断您的配置在整体上是否符合内部指南中所指定的配置要求。这可以帮助您简化合规性审核、安全性分析、变更管理和操作故障排除。有关更多信息,请参阅 开发人员指南AWS Config 中的使用控制台设置 。AWS Config当指定要记录的资源类型时,确保您包括了 Systems Manager 资源。

监控 AWS 安全公告

您应该经常为您的 AWS 账户检查在 Trusted Advisor 中发布的安全公告。您可以使用 describe-trusted-advisor-checks 以编程方式完成此操作。

再者,积极地监控向您的每一个 AWS 账户注册的原始邮件地址。AWS 将就可能影响您的紧急安全事件使用该邮箱地址与您联系。

具有广泛影响的 AWS 操作性问题将在 AWS 服务运行状况控制面板上发布。操作性问题也会通过 Personal Health Dashboard 发布给个人账户。有关更多信息,请参阅 AWS Health 文档