使用委托管理运行自动化 - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用委托管理运行自动化

运行自动化时,默认情况下,Automation 在启动自动化的 AWS Identity and Access Management (IAM) 用户的上下文中运行。也就是说,例如,如果您的 IAM 用户账户具有管理员权限,则自动化运行时也具有管理员权限,可完全访问针对自动化所配置的资源。作为最佳安全实践,建议使用 IAM 服务角色(也称为假定角色),该角色是使用 AmazonSSMAutomationRole 托管策略配置的。使用 IAM 服务角色运行自动化称为委派管理

当您使用服务角色时,允许自动化针对Amazon资源,但运行自动化的用户对这些资源的访问受限(或无法访问)。例如,您可以配置一个服务角色,并用它自动重启一个或多个 Amazon Elastic Compute Cloud (Amazon EC2) 实例。自动化是Amazon Web Services Systems Manager。自动化会重启实例,但服务角色不会授予用户访问这些实例的权限。

可以在您运行自动化的运行时中指定服务角色,也可以创建自定义 Runbook 并直接在 Runbook 中指定服务角色。如果您在运行时或在 runbook 中指定了服务角色,服务将在指定服务角色的上下文中运行。如果您不指定服务角色,系统会在用户环境中创建临时会话并运行自动化。

注意

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

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

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

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

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

  • 根据现有的 Runbook 创建简单的 Runbook(基于现有的 Runbook),用于指定服务角色(Runbook 作者)。

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

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

重要

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

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

创建测试用户账户

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

创建 IAM 测试用户

  1. 创建名为 OperatorRestrictedPermissions 的权限策略。有关如何创建新 IAM 权限策略的更多信息,请参阅创建 IAM 策略(控制台)(在 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 用户(控制台)(在 IAM 用户指南中)。在提示时选择直接附加现有策略,然后选择刚创建的策略。

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

为 Automation 创建 IAM 服务角色

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

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

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

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

创建自定义运行手册

本部分介绍如何创建重启 EC2 实例的自定义运行手册。Amazon提供了一个用于重新启动名为AWS-RestartEC2Instance。以下过程会复制该 Runbook 的内容,以说明如何在您自己创建的 Runbook 中输入服务角色。通过直接在 Runbook 中指定服务角色,用户在使用 Runbook 时不需要 iAm: PassRole 权限。如果没有 iam:PassRole 权限,用户无法在 Amazon 中的其他位置使用此服务角色。

创建自定义运行簿

  1. 打开Amazon Web Services Systems Manager控制台https://console.aws.amazon.com/systems-manager/

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

    -或者-

    如果Amazon Web Services Systems Manager首先打开主页,选择菜单图标( ) 以打开导航窗格中的,然后选择。文档在导航窗格中。

  3. 选择创建文档

  4. 名称字段中,输入运行手册的名称,如 Restart-EC2InstanceDemo。

  5. 文档类型列表中,选择 Automation 文档

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

    { "description": "Restart EC2 instances(s)", "schemaVersion": "0.3", "assumeRole": "AssumeRoleARN", "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. 选择创建文档

运行自定义运行簿

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

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

  2. 从 Amazon Web Services Management Console 注销,然后使用您之前复制的测试用户账户控制台登录链接重新登录。

  3. 打开Amazon Web Services Systems Manager控制台https://console.aws.amazon.com/systems-manager/

  4. 在导航窗格中,选择自动化

    -或者-

    如果Amazon Web Services Systems Manager首先打开主页,选择菜单图标( ) 以打开导航窗格中的,然后选择。自动化

  5. 选择执行自动化

  6. 选择您在本主题前面创建的自定义 Runbook。

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

  8. 选择 Next

  9. 执行模式部分中,选择简单执行

  10. 输入参数部分中,输入您要重新启动的一个或多个实例 ID,然后选择Execute

执行详细信息描述了 Automation 的状态。步骤 1 会将实例停止。步骤 2 会启动实例。