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

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

Systems Manager 的安全最佳实践

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

Systems Manager 预防性安全最佳实践

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

实施最低权限访问

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

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

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

在 Parameter Store(Amazon Systems Manager 的一项功能)中,SecureString 参数是需要以安全的方式存储和引用的任何敏感数据。如果您有不希望用户更改或以明文形式引用的数据(例如密码或许可证密钥),则应使用 SecureString 数据类型创建这些参数。Parameter Store 使用 Amazon Key Management Service (Amazon KMS) 中的 Amazon KMS key加密参数值。在加密参数值时,Amazon KMS 使用客户托管密钥或 Amazon 托管式密钥。为了获得最大的安全性,我们建议您使用自己的 KMS 密钥。如果您使用 Amazon 托管式密钥,则有权在您的账户中运行 GetParameterGetParameters 操作的任何用户均有权查看或检索所有 SecureString 参数的内容。如果您使用客户托管密钥加密 SecureString 值,则可使用 IAM policy 和密钥策略来管理加密和解密参数的权限。当您使用客户管理的密钥时,为这些操作建立访问控制策略更加困难。例如,如果您使用 Amazon 托管式密钥 来加密 SecureString 参数,并且不希望用户使用 SecureString 参数,那么其 IAM policy 必须明确拒绝对默认密钥的访问权限。

有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的使用 IAM policy 限制对 Systems Manager 参数的访问Amazon Systems ManagerParameter Store 如何使用 Amazon KMS

为文档参数定义 allowedValues 和 allowedPattern

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

有关 allowedValuesallowedPattern 的更多信息,请参阅 数据元素和参数

阻止文档公开分享

除非您的应用场景需要允许公开共享,否则我们建议在 Systems Manager 文档控制台的 Preferences(首选项)部分,为您的 SSM 文档启用阻止公开共享设置。

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

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

通过实施 VPC 端点,您可以通过私有方式将 VPC 连接到支持的 Amazon Web Services和 VPC 端点服务(由 Amazon PrivateLink 提供支持),而无需互联网网关、NAT 设备、VPN 连接或 Amazon Direct Connect 连接。VPC 中的实例无需公有 IP 地址便可与服务中的资源进行通信。VPC 和其他服务之间的流量不会脱离 Amazon 网络。

有关 Amazon VPC 安全性的更多信息,请参阅 Amazon VPC 用户指南中的创建 VPC 端点Amazon VPC 中的互联网络流量隐私

使用交互式命令和特定的 SSM 会话文档限制 Session Manager 用户访问会话

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

为了提高安全性,您可以限制 Session Manager 对特定 Amazon EC2 实例和特定 Session Manager 会话文档的访问权限。您可以使用 Amazon Identity and Access Management(IAM)policy 以这种方式授予或撤消 Session Manager 访问权限。有关更多信息,请参阅步骤 3:控制会话对托管式节点的访问

为自动化工作流提供临时节点权限

在执行自动化(Amazon Systems Manager 的一项功能)中的工作流期间,您的节点可能只需要执行该工作流所需的权限,而无需其他 Systems Manager 操作的权限。例如,Automation 工作流可能需要节点在工作流期间调用特定 API 操作或访问特定 Amazon 资源。如果您希望限制访问这些调用或资源,则可以在自动化运行手册本身中为您的节点提供临时补充权限,而不是将权限添加到您的 IAM 实例配置文件中。在自动化工作流结束时,临时权限将删除。有关更多信息,请参阅《Amazon 管理和治理博客》中的为 Amazon Systems Manager 自动化提供临时实例权限

使 Amazon 和 Systems Manager 工具保持最新

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

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

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

  • Amazon Tools for Windows PowerShell – Tools for Windows PowerShell 是一组 PowerShell 模块,根据适用于 .NET 的 Amazon SDK 公开的功能构建。Amazon Tools for Windows PowerShell 使您可以从 PowerShell 命令行在 Amazon 资源上为操作编写脚本。随着 Tools for Windows PowerShell 的更新版本定期发布,您应更新在本地运行的版本。有关信息,请参阅《IAM policy simulator 用户指南》中的在 Windows 上更新 Amazon Tools for Windows PowerShell在 Linux 或 macOS 上更新 Amazon Tools for Windows PowerShell

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

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

Systems Manager 监控和审计最佳实践

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

识别和审计您的所有 Systems Manager 资源

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

使用标签编辑器确定安全性敏感或审计敏感资源,然后在您需要搜索这些资源时使用这些标签。有关更多信息,请参阅 Amazon Resource Groups 用户指南中的查找要标记的资源

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

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

监控是保持 Systems Manager 和您的 Amazon 解决方案的可靠性、安全性、可用性和性能的重要环节。Amazon CloudWatch 提供了多种工具和服务来帮助您监控 Systems Manager 和其他 Amazon Web Services。有关更多信息,请参阅 将节点日志发送到统一 CloudWatch 日志(CloudWatch 代理)使用 Amazon EventBridge 监控 Systems Manager 事件

使用 CloudTrail

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

启用 Amazon Config。

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

监控 Amazon 安全公告

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

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

具有广泛影响的 Amazon 操作性问题将在 Amazon Service Health Dashboard 上发布。操作性问题也会通过 Personal Health Dashboard 发布给个人账户。有关更多信息,请参阅 Amazon Health 文档