通过使用委托管理运行自动化
运行自动化时,自动化默认在启动的 Amazon Identity and Access Management (IAM) 用户的上下文中运行。也就是说,例如,如果您的 IAM 用户账户具有管理员权限,则自动化运行时也具有管理员权限,可完全访问针对自动化所配置的资源。作为最佳安全实践,建议使用配置有 AmazonSSMAutomationRole 托管式策略的 IAM 服务角色(也称为担任角色)运行自动化。使用 IAM 服务角色运行自动化称为委托管理。
如果使用服务角色,则允许对 Amazon 资源运行自动化,但运行自动化的用户对这些资源的访问受限(或无法访问)。例如,您可以配置一个服务角色,并将其与自动化配合使用以自动重启一个或多个 Amazon Elastic Compute Cloud (Amazon EC2) 实例。自动化是 Amazon Systems Manager 的一项功能。自动化会重启实例,但服务角色不会授予用户访问这些实例的权限。
可以在您运行自动化的运行时中指定服务角色,也可以创建自定义自动化运行手册,并直接在运行手册中指定服务角色。无论您是在运行时还是在运行手册中指定了服务角色,服务都会在所指定服务角色的上下文中运行。如果您未指定服务角色,则系统会在用户上下文中创建临时会话并运行自动化。
对于预计运行时长超过 12 小时的自动化,必须指定服务角色。如果您在用户环境中启动了长时间运行的自动化,用户的临时会话会在 12 小时后过期。
委托管理可确保更高的安全性,还能更好地控制您的 Amazon 资源。它还能够增强审核体验,因为针对您的资源进行的操作是由集中服务角色执行的,而不是由多个 IAM 账户执行。
为了恰当地说明委托管理在组织中的运作方式,本主题将介绍以下任务,就好像这些任务是由组织中的三个人员执行的:
-
创建测试 IAM 用户账户,名为 AutomationRestrictedOperator (管理员)
-
创建进行自动化所用的 IAM 服务角色 (管理员)
-
创建简单的运行手册(基于现有的运行手册),用于指定服务角色(运行手册作者)。
-
以测试用户的身份运行自动化 (受限操作员)。
在某些组织中,所有的三项任务都是由同一人员执行的。但在本例中,确定不同的角色将演示委托管理如何在复杂的组织中增强安全性。
作为最佳安全实践,我们建议您始终使用服务角色来运行自动化,即使您是一名执行所有这些任务的管理员。
本节中的过程会链接到其他 Amazon 指南中的主题或其他 Systems Manager 主题。我们建议您在 Web 浏览器的新标签页中打开指向其他主题的链接,这样就不会丢失本主题中的位置。
创建测试用户账户
本部分介绍如何创建具有受限权限的 IAM 测试用户账户。权限集允许用户运行自动化,但用户无法访问由自动化设置为目标的 Amazon 资源。操作员也可以查看自动化的结果。首先,您需要创建自定义 IAM 权限策略,然后再创建用户账户并向它分配权限。
创建 IAM 测试用户
-
创建名为 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":"*" } ] }
-
新建名为 AutomationRestrictedOperator 的 IAM 用户账户。有关如何新建 IAM 用户的信息,请参阅《IAM 用户指南》中的创建 IAM 用户(控制台)。在提示时选择直接附加现有策略,然后选择刚创建的策略。
-
记下用户名、密码和控制台登录链接。在本主题的后面部分,您将登录此账户。
创建用于自动化的 IAM 服务角色
以下过程会链接到其他主题,可帮助您创建服务角色,并配置自动化以信任此角色。
创建服务角色,并允许自动化信任此角色。
-
创建自动化服务角色。有关信息,请参阅 任务 1:为自动化创建服务角色。
-
记下服务角色的 Amazon Resource Name (ARN)。您将在下一过程中指定此 ARN。
创建自定义运行手册
本部分介绍如何创建重启 EC2 实例的自定义运行手册。Amazon 提供了一个用于名为 AWS-RestartEC2Instance
的重新启动实例的运行手册。以下过程会复制该运行手册的内容,以说明如何在您自己创建的运行手册中输入服务角色。如果直接在运行手册中指定服务角色,则用户在使用运行手册时不需要 iam:PassRole 权限。如果没有 iam:PassRole 权限,用户无法在 Amazon 中的其他位置使用此服务角色。
创建自定义运行手册
访问 https://console.aws.amazon.com/systems-manager/
,打开 Amazon Systems Manager 控制台。 在导航窗格中,选择 文档。
-或者-
如果首先打开 Amazon Systems Manager 主页,选择菜单图标 (
) 以打开导航窗格,然后在导航窗格中选择 Documents(文档)。
-
选择创建文档。
-
在名称字段中键入运行手册名称,如 Restart-EC2InstanceDemo。
-
在文档类型列表中,选择自动化文档。
-
在内容部分选择 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" } } ] } -
选择创建文档。
运行自定义运行手册
以下过程介绍了如何使用在本主题前面部分创建的受限操作员角色运行您刚刚创建的运行手册。用户可以运行您之前创建的运行手册,是因为他们的 IAM 账户权限使他们能够看到并运行该运行手册。但用户无法登录此自动化将要重启的实例。
-
在 https://console.aws.amazon.com/ec2/
中,复制您希望使用以下自动化重启的一个或多个实例的实例 ID。 -
从 Amazon Web Services Management Console 注销,然后使用您之前复制的测试用户账户控制台登录链接重新登录。
访问 https://console.aws.amazon.com/systems-manager/
,打开 Amazon Systems Manager 控制台。 在左侧导航窗格中,选择自动化。
–或者–
如果首先打开 Amazon Systems Manager 主页,选择菜单图标 (
) 以打开导航窗格,然后选择自动化。
-
选择执行自动化。
-
选择您在本主题前面创建的自定义运行手册。
-
在文档详细信息部分,验证文档版本是否设置为 1(默认)。
-
选择 Next (下一步)。
-
在执行模式部分中,选择简单执行。
-
在输入参数部分,键入您要重启的一个或多个实例 ID,然后选择执行。
执行详细信息介绍了自动化的状态。步骤 1 会停止实例。步骤 2 会启动实例。