设置运行命令 - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

设置运行命令

在使用 “运行命令” 管理实例之前,Amazon Web Services Systems Manager,您必须为将运行命令的用户配置 AWS Identity and Access Management (IAM) 用户策略。有关更多信息,请参阅 。为创建非管 Systems Manager 员 IAM 用户和组

您也必须为将处理命令的任何实例创建一个 IAM 实例配置文件角色并将该角色附加到这些实例。有关更多信息,请参阅 。为创建 IAM 实例配置文件将 IAM 实例配置文件附加到 EC2 实例

此外,我们强烈建议您完成以下可选设置任务,以帮助最大限度减少实例的安全状况和日常管理工作。

使用 Amazon EventBridge 监控命令执行情况

您可以使用 EventBridge 记录命令执行状态更改。您可以创建一个规则,只要状态发生变换或者在变换到一个或多个感兴趣的状态时,就运行该规则。您也可以将 Run Command 指定作为发生 EventBridge 事件时的目标操作。有关更多信息,请参阅 为 Systems Manager 事件配置 EventBridge

使用 Amazon CloudWatch Logs 监控命令执行情况

您可以将 Run Command 配置为定期将所有命令输出和错误日志发送到 Amazon CloudWatchand 日志组。您可以近乎实时地监控这些输出日志,搜索特定短语、值或模式,以及基于搜索创建警报。有关更多信息,请参阅 为运行命令配置 Amazon CloudWatch Logs

限制对特定实例的 Run Command 访问

您可以限制可在哪些托管实例上运行,方式是创建一个 IAM 用户策略,该策略包含一个条件,规定用户只能对使用特定 Amazon EC2 标签标记的实例运行命令。有关更多信息,请参阅以下主题:基于实例标签限制 Run Command 访问

基于实例标签限制 Run Command 访问

您可以通过创建一个 IAM 用户策略将命令执行限制为特定实例,该策略包含一个条件,规定用户只能对使用特定 Amazon EC2 标签标记的实例运行命令。在以下示例中,允许用户使用 “运行命令” (Effect: Allow, Action: ssm:SendCommand),通过使用任何 SSM 文档(Resource: arn:aws:ssm:*:*:document/*)上的任何实例(Resource: arn:aws:ec2:*:*:instance/*),条件是该实例是财务 WebServer(ssm:resourceTag/Finance: WebServer)。如果用户向未设置标签或具有除以外的任意标签的实例发送命令,或具有除Finance: WebServer,则执行结果显示AccessDenied

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:*:*:document/*" ] }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ec2:*:*:instance/*" ], "Condition":{ "StringLike":{ "ssm:resourceTag/Finance":[ "WebServers" ] } } } ] }

您可以创建 IAM 策略,使用户能够对使用多个标签进行标记的实例运行命令。以下策略支持用户对具有两个标签的实例运行命令。如果用户向未使用这两个标签标记的实例发送命令,则执行结果将显示AccessDenied

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ], "ssm:resourceTag/tag_key2":[ "tag_value2" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:us-west-1::document/AWS-*", "arn:aws:ssm:us-east-2::document/AWS-*" ] }, { "Effect":"Allow", "Action":[ "ssm:UpdateInstanceInformation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetDocument" ], "Resource":"*" } ] }

您也可以创建 IAM 策略,使用户能在多个标记的实例组上运行命令。以下策略支持用户对任一标记的实例组或两个标记的实例组运行命令。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key2":[ "tag_value2" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:us-west-1::document/AWS-*", "arn:aws:ssm:us-east-2::document/AWS-*" ] }, { "Effect":"Allow", "Action":[ "ssm:UpdateInstanceInformation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetDocument" ], "Resource":"*" } ] }

有关创建 IAM 用户策略的更多信息,请参阅托管策略与内联策略中的IAM 用户指南。有关标记实例的更多信息,请参阅标记 Amazon EC2 资源中的适用于 Linux 实例的 Amazon EC2 用户指南(内容适用于 Windows 和 Linux 实例)。