AWS Systems Manager
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

控制对 Maintenance Window 的访问权限

使用以下方法之一,通过配置安全角色和权限来控制对Maintenance Window的访问。

控制对 Maintenance Window (AWS 控制台) 的访问

以下过程介绍如何使用 AWS 控制台来创建 Maintenance Window 所需的角色和权限。

为 Systems Manager 创建 IAM 角色

使用以下过程创建角色,以便 Systems Manager 可以在Maintenance Window中代表您执行任务。

为Maintenance Window创建 IAM 角色

  1. Open the IAM console at https://console.amazonaws.cn/iam/.

  2. 在导航窗格中,选择 Roles,然后选择 Create Role

  3. Select type of trusted entity 下,选择 AWS service。在 Choose the service that will use this role 下,选择 EC2。在 Select your use case 下,选择 EC2,然后选择 Next: Permissions

  4. 在策略列表中,选中 AmazonSSMMaintenanceWindowRole 旁边的复选框,然后选择 Next: Review

  5. Role name 中,输入用于将此角色标识为 Maintenance Window 角色的名称。

  6. 选择 Create role。系统将让您返回到 Roles 页。

  7. 选择刚才创建的角色的名称。

  8. 选择 Trust relationships 选项卡,然后选择 Edit trust relationship

  9. 删除当前策略,然后将下面的策略复制并粘贴到 Policy Document 字段中:

    { "Version":"2012-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":[ "ec2.amazonaws.com", "ssm.amazonaws.com", "sns.amazonaws.com" ] }, "Action":"sts:AssumeRole" } ] }

    注意

    仅当要使用 Amazon SNS 发送与通过 Run Command 执行的 Maintenance Window 任务相关的通知时,才需要 "sns.amazonaws.com"。有关更多信息,请参阅步骤 11。

  10. 选择 Update Trust Policy,然后复制或记下 Summary 页面上的角色名称和 Role ARN 值。当您创建Maintenance Window时,将要指定此信息。

  11. 如果要将 Maintenance Window 配置为在通过 Run Command 命令任务执行时使用 Amazon SNS 发送有关命令状态的通知,请执行以下操作:

    1. 选择 Permissions 选项卡。

    2. 选择 Add inline policy,然后选择 JSON 选项卡。

    3. Policy Document 中,粘贴以下内容:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "sns-access-role-arn" } ] }

      sns-access-role-arn 表示用于发送与 Maintenance Window 相关的 SNS 通知的 IAM 角色的 ARN,格式为 arn:aws:iam::account-id:role/role-name.例如:arn:aws:iam::111222333444:role/SNS-Access-role

      注意

      在 Systems Manager 控制台中,可在 Register run command task 页面上的 IAM Role 列表中选择此 ARN。有关信息,请参阅 向Maintenance Window分配任务。在 Systems Manager API 中,在 请求中作为 的值输入此 ARN。

    4. 选择查看策略

    5. Name 框中键入名称,将其标识为允许发送 Amazon SNS 通知的策略。

  12. 选择 Create policy

将 IAM PassRole 策略分配给 IAM 用户账户

在向Maintenance Window注册任务时,需要指定在上一步中创建的角色。这是代表您运行任务时服务要代入的角色。要注册任务,您必须将 IAM PassRole 策略分配给 IAM 用户账户。以下过程中的策略提供了向Maintenance Window注册任务所需的最低权限。

将 IAM PassRole 策略分配给 IAM 用户账户

  1. 在 IAM 控制台导航窗格中,选择 Users,然后选择您要更新的用户账户。

  2. 在策略列表中,验证是否已列出 AmazonSSMFullAccess 策略或是否存在可向 IAM 用户授予调用 Systems Manager API 的权限的类似策略。

  3. 选择添加内联策略

  4. Set Permissions 页面上,选择 Policy Generator,然后选择 Select

  5. 验证 Effect 是否已设置为 Allow

  6. AWS Services 中选择 AWS Identity and Access Management

  7. 操作中,选择 PassRole

  8. Amazon 资源名称 (ARN) 字段中,粘贴您在之前步骤中所创建的角色 ARN。

  9. 选择 Add Statement,然后选择 Next Step

  10. Review Policy 页面上,选择 Apply Policy

控制对 Maintenance Window (AWS CLI) 的访问权限

通过以下过程使用 AWS CLI 创建Maintenance Window的 IAM 角色。

为Maintenance Window创建 IAM 角色

  1. 将以下信任策略复制并粘贴到文本文件中。使用以下名称和文件扩展名保存此文件:mw-role-trust-policy.json

    注意

    仅当要使用 Amazon SNS 发送与通过 API 或 AWS CLI 中的 send-command 执行的 Maintenance Window 任务相关的通知时,才需要 "sns.amazonaws.com"

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "ssm.amazonaws.com", "ec2.amazonaws.com", "sns.amazonaws.com" ] }, "Action":"sts:AssumeRole" } ] }
  2. 打开 AWS CLI 并执行以下命令以创建名为 mw-task-role 的Maintenance Window角色。此命令将上一步中创建的策略分配给该角色。

    aws iam create-role --role-name mw-task-role --assume-role-policy-document file://mw-role-trust-policy.json

    系统将返回类似于以下内容的信息。

    { "Role":{ "AssumeRolePolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Action":"sts:AssumeRole", "Effect":"Allow", "Principal":{ "Service":[ "ssm.amazonaws.com", "ec2.amazonaws.com", "sns.amazonaws.com" ] } } ] }, "RoleId":"AROAIIZKPBKS2LEXAMPLE", "CreateDate":"2017-04-04T03:40:17.373Z", "RoleName":"mw-task-role", "Path":"/", "Arn":"arn:aws:iam::123456789012:role/mw-task-role" } }

    注意

    记录 RoleNameArn。在您创建Maintenance Window时,将指定这些内容。

  3. 执行以下命令,将 AmazonSSMMaintenanceWindowRole 管理的策略附加到在步骤 2 中创建的角色。

    aws iam attach-role-policy --role-name mw-task-role --policy-arn arn:aws:iam::aws:policy/service-role/AmazonSSMMaintenanceWindowRole

将 IAM PassRole 策略分配给 IAM 用户账户 (AWS CLI)

在向Maintenance Window注册任务时,需要指定在上一步中创建的角色。这是代表您运行任务时服务要代入的角色。要注册任务,您必须将 IAM PassRole 策略分配给 IAM 用户账户。以下过程中的策略提供了向Maintenance Window注册任务所需的最低权限。

将 IAM PassRole 策略分配给 IAM 用户账户

  1. 将以下 IAM 策略复制并粘贴到文本编辑器中,并使用 .json 文件扩展名保存文件。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"Stmt1491345526000", "Effect":"Allow", "Action":[ "iam:GetRole", "iam:PassRole", "ssm:RegisterTaskWithMaintenanceWindow" ], "Resource":[ "*" ] } ] }
  2. 打开 AWS CLI。

  3. 执行下面的命令。对于 user-name,指定将向Maintenance Window分配任务的 IAM 用户。对于 policy-document,指定您在步骤 1 中保存的文件的路径。

    aws iam put-user-policy --user-name name of user --policy-name a name for the policy --policy-document path to document, for example: file://C:\Temp\passrole.json

    注意

    如果您计划使用 AWS Systems Manager 控制台注册 Maintenance Window 的任务,则还必须将 AmazonSSMReadOnlyAccess 策略分配给您的用户账户。执行以下命令将此策略分配给您的账户。

    aws iam attach-user-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess --user-name IAM account name
  4. 执行以下命令验证策略是否已分配给该用户。

    aws iam list-user-policies --user-name name of user

控制对 Maintenance Window (Tools for Windows PowerShell) 的访问权限

通过以下过程使用 Tools for Windows PowerShell 创建Maintenance Window的 IAM 角色。

为Maintenance Window创建 IAM 角色

  1. 将以下信任策略复制并粘贴到文本文件中。使用以下名称和文件扩展名保存此文件:mw-role-trust-policy.json

    注意

    仅当要使用 Amazon SNS 发送与通过 API 执行的 Maintenance Window 任务相关的通知时,才需要 "sns.amazonaws.com"

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "ssm.amazonaws.com", "ec2.amazonaws.com", "sns.amazonaws.com" ] }, "Action":"sts:AssumeRole" } ] }
  2. 打开 Tools for Windows PowerShell 并执行以下命令以创建名为 mw-task-role 的角色。该角色使用前一步中创建的策略。

    New-IAMRole -RoleName "mw-task-role" -AssumeRolePolicyDocument (Get-Content -raw .\mw-role-trust-policy.json)

    系统将返回类似于以下内容的信息。

    Arn : arn:aws:iam::123456789012:role/mw-task-role AssumeRolePolicyDocument : ExampleDoc12345678 CreateDate : 4/4/2017 11:24:43 Path : / RoleId : AROAIIZKPBKS2LEXAMPLE RoleName : mw-task-role
  3. 执行以下命令将 AmazonSSMMaintenanceWindowRole 管理的策略附加到上一步中创建的角色。

    Register-IAMRolePolicy -RoleName mw-task-role -PolicyArn arn:aws:iam::aws:policy/service-role/AmazonSSMMaintenanceWindowRole

将 IAM PassRole 策略分配给 IAM 用户账户 (Tools for Windows PowerShell)

在向Maintenance Window注册任务时,需要指定在上一步中创建的角色。这是代表您运行任务时服务要代入的角色。要注册任务,您必须将 IAM PassRole 策略分配给 IAM 用户账户。以下过程中的策略提供了向Maintenance Window注册任务所需的最低权限。

将 IAM PassRole 策略分配给 IAM 用户账户

  1. 将以下 IAM 策略复制并粘贴到文本编辑器中,并使用 .json 文件扩展名保存文件。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"Stmt1491345526000", "Effect":"Allow", "Action":[ "iam:GetRole", "iam:PassRole", "ssm:RegisterTaskWithMaintenanceWindow" ], "Resource":[ "*" ] } ] }
  2. 打开 Tools for Windows PowerShell。

  3. 执行下面的命令。对于 user-name,指定将向Maintenance Window分配任务的 IAM 用户。对于 policy-document,指定您在步骤 1 中保存的文件的路径。

    Write-IAMUserPolicy -UserName name of IAM user -PolicyDocument (Get-Content -raw path to document, for example: C:\temp\passrole-policy.json) -PolicyName a name for the policy

    注意

    如果您计划使用 AWS Systems Manager 控制台注册 Maintenance Window 的任务,则还必须将 AmazonSSMReadOnlyAccess 策略分配给您的用户账户。执行以下命令将此策略分配给您的账户。

    Register-IAMUserPolicy -UserName IAM account name -PolicyArn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess
  4. 执行以下命令验证策略是否已分配给该用户。

    Get-IAMUserPolicies -UserName name of user