AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

快速入门第 3 步:使用委托管理来增强自动化安全性

当您执行 AWS Systems Manager 自动化时,默认情况下,自动化会在对执行进行初始化的 AWS Identity and Access Management (IAM) 用户环境中运行。也就是说,例如,如果您的 IAM 用户账户具有管理员权限,则自动化运行时也具有管理员权限,可完全访问针对自动化所配置的资源。作为最佳安全实践,我们建议您使用配置有 AmazonSSMAutomationRole 托管策略的 IAM 服务角色 (也称为代入角色) 执行自动化。使用 IAM 服务角色运行自动化称为委托管理

如果使用服务角色,则允许针对 AWS 资源运行自动化,但执行自动化的用户对这些资源的访问受限 (或无法访问)。例如,您可以配置一个服务角色,并用它自动重启一个或多个 Amazon EC2 实例。自动化会重启实例,但服务角色不会授予用户访问这些实例的权限。

可以在您执行自动化的运行时指定服务角色,也可以创建自定义自动化文档,直接在文档中指定服务角色。无论您是在运行时还是在自动化文档中指定了服务角色,服务都会在所指定服务角色的环境中执行。如果您未指定服务角色,系统会在用户环境中创建临时会话并执行自动化。

注意

对于预计运行时长超过 12 小时的自动化,必须指定服务角色。如果您在用户环境中启动了长时间运行的自动化,用户的临时会话会在 12 小时后过期。

委托管理可确保更高的安全性,还能更好地控制您的 AWS 资源。它还增强了审核体验,因为针对您的资源进行的操作是由集中的服务角色执行的,而不是由多个 IAM 账户执行。

为了恰当地说明委托管理在组织中的运作方式,本主题将带您演练以下任务,就好像这些任务是由组织中的三个人员执行的:

  • 创建测试 IAM 用户账户,名为 AutomationRestrictedOperator (管理员)

  • 创建进行自动化所用的 IAM 服务角色 (管理员)

  • 根据现有的自动化文档创建简单的自动化文档,用于指定服务角色 (SSM 文档作者)

  • 以测试用户的身份执行自动化 (受限操作员)

在某些组织中,所有的三项任务都是由同一人员执行的。但在本例中,确定不同的角色可帮助您了解委托管理如何在复杂的组织中增强安全性。

重要

作为最佳安全实践,我们建议您始终使用服务角色来执行自动化,即使您是一名管理员,将执行所有这些任务。

本节中的过程会链接到其他 AWS 指南中的主题或其他 Systems Manager 主题。我们建议您在 Web 浏览器的新标签页中打开指向其他主题的链接,这样就不会丢失本主题中的位置。

创建测试用户账户

本部分介绍如何创建具有受限权限的 IAM 测试用户账户。权限集允许用户执行自动化,但用户无法访问自动化的目标 AWS 资源。操作员也可以查看自动化的结果。首先,您需要创建自定义 IAM 权限策略,然后再创建用户账户并向它分配权限。

创建 IAM 测试用户

  1. 创建名为 OperatorRestrictedPermissions 的权限策略。有关如何新建 IAM 权限策略的信息,请参阅 IAM User Guide 中的创建 IAM 策略 (控制台)。在 JSON 选项卡上创建策略,并指定以下权限集。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:DescribeAutomationExecutions", "ssm:DescribeAutomationStepExecutions", "ssm:DescribeDocument", "ssm:GetAutomationExecution", "ssm:GetDocument", "ssm:ListDocuments", "ssm:ListDocumentVersions", "ssm:StartAutomationExecution" ], "Resource":"*" } ] }
  2. 新建名为 AutomationRestrictedOperator 的 IAM 用户账户。有关如何新建 IAM 用户的信息,请参阅 IAM User Guide 中的创建 IAM 用户 (控制台)。在提示时选择直接附加现有策略,然后选择刚创建的策略。

  3. 记下用户名、密码和控制台登录链接。在本主题的后面部分,您将登录此账户。

创建用于自动化的 IAM 服务角色

以下过程会链接到其他主题,可帮助您创建服务角色,并配置自动化以信任此角色。

创建服务角色,并使自动化信任它

  1. 创建自动化服务角色。有关信息,请参阅 任务 1:为 Automation 创建服务角色

  2. 记下服务角色的 Amazon 资源名称 (ARN)。您将在下一过程中指定此 ARN。

  3. 配置信任策略,使自动化信任此服务角色。有关更多信息,请参阅 任务 2:为 Automation 添加信任关系

创建自定义自动化文档

本部分介绍如何创建重启 Amazon EC2 实例的自定义自动化文档。AWS 提供用于重启实例的默认 SSM 文档,名为 AWS-RestartEC2Instance。以下过程会复制该文档的内容,演示如何在您自己创建的文档中输入服务角色。如果直接在文档中指定服务,则用户在执行文档时不需要 iam:PassRole 权限。如果没有 iam:PassRole 权限,用户无法在 AWS 中的其他位置使用此服务角色。

创建自定义自动化文档

  1. https://console.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

  2. 在导航窗格中,选择 Documents

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后在导航窗格中选择 Documents

  3. 选择创建文档

  4. 名称字段中键入文档名称,如 Restart-EC2InstanceDemo。

  5. 文档类型列表中,选择自动化文档

  6. 内容部分选择 JSON,然后粘贴以下内容。将 AssumeRoleARN 替换为您在上一过程中创建的服务角色的 ARN。

    { "description": "Restart EC2 instances(s)", "schemaVersion": "0.3", "assumeRole": "service role ARN", "parameters": { "InstanceId": { "type": "StringList", "description": "(Required) EC2 Instance to restart" } }, "mainSteps": [ { "name": "stopInstances", "action": "aws:changeInstanceState", "inputs": { "InstanceIds": "{{ InstanceId }}", "DesiredState": "stopped" } }, { "name": "startInstances", "action": "aws:changeInstanceState", "inputs": { "InstanceIds": "{{ InstanceId }}", "DesiredState": "running" } } ] }
  7. 选择创建文档

执行自定义自动化文档

以下过程介绍了如何以受限操作员的身份 (在本主题前面部分创建) 执行您刚刚创建的文档。用户可以执行您之前创建的文档,是因为他们的 IAM 账户权限使他们能够看到并执行该文档。但用户无法登录此自动化将要重启的实例。

  1. https://console.amazonaws.cn/ec2/ 中,复制您希望使用以下自动化重启的一个或多个实例的实例 ID。

  2. 从 AWS 管理控制台中注销,然后使用测试用户账户重新登录您之前复制的控制台登录链接

  3. https://console.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

  4. 在导航窗格中,选择 Automation

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后选择 Automation

  5. 选择执行自动化

  6. 选择您在本主题前面创建的自定义自动化文档。

  7. 文档详细信息部分,验证文档版本是否设置为 1 (默认)

  8. 执行模式部分中,选择一次执行整个自动化

  9. 保留目标和速率控制选项为禁用状态。

  10. 输入参数部分中,键入您要重启的一个或多个实例 ID,然后选择执行自动化

执行详细信息介绍了自动化的状态。步骤 1 会将实例停止。步骤 2 会重启它们。