使用控制台控制对维护时段的访问权限 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用控制台控制对维护时段的访问权限

以下过程介绍如何使用 Amazon Systems Manager 控制台为维护时段创建所需的权限和角色。

任务 1:使用控制台为维护时段服务角色创建自定义策略

维护时段任务需要一个 IAM 角色才能提供在目标资源上运行所需的权限。通过附加到角色的 IAM 策略提供权限。您运行的任务类型和其他操作要求决定了此策略的内容。我们提供了一个基本策略,您可以根据需要进行调整。根据维护时段运行的任务和任务类型,您可能不需要此策略中的所有权限,并且可能需要包含额外的权限。您需要将此策略附加到您稍后在任务 2:使用控制台为维护时段创建自定义服务角色中创建的角色。

要使用控制台创建自定义策略
  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中,选择 Policies (策略),然后选择 Create policy (创建策略)

  3. 策略编辑器区域中,选择 JSON

  4. 将默认内容替换为以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:SendCommand", "ssm:CancelCommand", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetCommandInvocation", "ssm:GetAutomationExecution", "ssm:StartAutomationExecution", "ssm:ListTagsForResource", "ssm:GetParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StartExecution" ], "Resource": [ "arn:aws:states:*:*:execution:*:*", "arn:aws:states:*:*:stateMachine:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*" ] }, { "Effect": "Allow", "Action": [ "resource-groups:ListGroups", "resource-groups:ListGroupResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ssm.amazonaws.com" ] } } } ] }
  5. 根据需要为您在账户中运行的维护任务修改 JSON 内容。您做出的更改是特定于所计划操作的。

    例如:

    • 您可以提供特定功能和状态机的 Amazon 资源名称(ARN),而不是使用通配符(*)。

    • 如果您不计划运行 Amazon Step Functions 任务,则可以移除 states 权限和 ARN。

    • 如果您不计划运行 Amazon Lambda 任务,则可以移除 lambda 权限和 ARN。

    • 如果您不计划运行自动化任务,则可以移除 ssm:GetAutomationExecutionssm:StartAutomationExecution 权限。

    • 添加要运行的任务可能需要的其他权限。例如,一些 自动化 操作使用 Amazon CloudFormation 堆栈。因此,权限 cloudformation:CreateStackcloudformation:DescribeStackscloudformation:DeleteStack 是必需的。

      另一个示例:自动化运行手册 AWS-CopySnapshot 需要权限来创建 Amazon Elastic Block Store(Amazon EBS)快照,因此,服务角色需要权限 ec2:CreateSnapshot

      有关自动化运行手册所需角色权限的信息,请参阅Amazon Systems Manager 自动化运行手册参考中的运行手册描述。

  6. 完成策略修订后,选择下一步

  7. 对于策略名称,输入一个名称以将此标识为您创建的服务角色所附加的策略。例如:my-maintenance-window-role-policy

  8. (可选)在添加标签区域中,添加一个或多个标签键值对,以组织、跟踪或控制此策略的访问权限。

  9. 选择创建策略

    记下为此策略指定的名称。您将在下一过程任务 2:使用控制台为维护时段创建自定义服务角色中引用它。

任务 2:使用控制台为维护时段创建自定义服务角色

您在上一个任务中创建的策略将附加到您在此任务中创建的维护时段服务角色。当用户注册维护时段任务时,他们需要在任务配置中指定此 IAM 角色。此角色中的权限将允许 Systems Manager 代表您运行维护时段中的任务。

重要

以前,Systems Manager 控制台允许您选择 Amazon 托管式 IAM 服务相关角色 AWSServiceRoleForAmazonSSM,以用作任务的维护角色。现在不再建议将此角色及其相关策略 AmazonSSMServiceRolePolicy 用于维护时段任务。如果您目前在将此角色用于维护时段任务,我们建议您停止使用它。而应创建您自己的 IAM 角色,以便您的维护时段任务运行时在 Systems Manager 与其他 Amazon Web Services 服务之间进行通信。

使用以下过程为 Maintenance Windows 创建自定义服务角色,以便 Systems Manager 可以代表您运行 Maintenance Windows 任务。您会将您在上一任务中创建的策略附加到您创建的自定义服务角色。

要使用控制台为维护时段创建自定义服务角色
  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择角色,然后选择创建角色

  3. 对于 Select trusted entity(选择可信实体),完成以下选择:

    1. 可信实体类型中选择 Amazon 服务

    2. 对于应用场景,选择 Systems Manager

    3. 选择 Systems Manager

  4. 选择下一步

  5. 权限策略区域中的搜索框中,输入您在 任务 1:使用控制台为维护时段服务角色创建自定义策略 中创建的策略的名称,选中其名称旁边的复选框,然后选择下一步

  6. 对于 Role name(角色名称),输入用于将此角色标识为 Maintenance Windows 角色的名称。例如:my-maintenance-window-role

  7. (可选)更改默认角色描述,以反映此角色的用途。例如:Performs maintenance window tasks on your behalf

  8. 对于步骤 1:选择可信实体,请确认可信策略框中显示了以下策略。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  9. 对于步骤 2:添加权限,请验证您在 任务 1:使用控制台为维护时段服务角色创建自定义策略 中创建的策略是否已存在。

  10. (可选)在步骤 3:添加标签中,添加一个或多个标签键值对,以组织、跟踪或控制此角色的访问权限。

  11. 选择 Create role (创建角色)。系统将让您返回到 角色 页面。

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

  13. 复制或记下在 Summary(摘要)区域显示的角色名称和 ARN 值。您账户中的用户在创建维护时段时需要指定此信息。

任务 3:使用控制台向注册维护时段任务的特定用户授予权限

为用户提供访问自定义维护时段服务角色的权限,使他们可以将该角色用于维护时段任务。这是您已经向他们授予的权限的补充,以便与适用于 Maintenance Windows 功能的 Systems Manager API 命令结合使用。此 IAM 角色传递了运行维护时段任务所需的权限。因此,如果无法传递这些 IAM 权限,用户将无法使用您的自定义服务角色向维护时段注册任务。

在将任务注册到维护时段时,您可以指定服务角色来运行实际任务操作。这是代表您运行任务时服务要代入的角色。在此之前,要注册任务本身,请将 IAM PassRole 策略分配给 IAM 实体(如用户或组)。这将允许 IAM 实体指定运行任务时应使用的角色,作为将这些任务注册到维护时段的一部分。有关更多信息,请参阅《IAM 用户指南》中的向用户授予将角色传递给 Amazon Web Services 服务 的权限

要配置权限以允许用户注册维护时段任务

如果将 IAM 实体(用户、角色或组)设置为拥有管理员权限,则 IAM 用户或角色将有权访问维护时段。对于没有管理员权限的 IAM 实体,管理员必须向 IAM 实体授予以下权限。以下是将任务注册到维护时段所需的最低权限:

  • AmazonSSMFullAccess 托管策略,或提供类似权限的策略。

  • 以下 iam:PassRoleiam:ListRoles 权限。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/my-maintenance-window-role" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/" } ] }

    my-maintenance-window-role 表示您之前创建的自定义维护时段服务角色的名称。

    account-id 表示 Amazon Web Services 账户 的 ID。为资源 arn:aws:iam::account-id:role/ 添加此权限允许用户在创建维护时段任务时在控制台中查看和选择客户角色。为 arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/ 添加此权限允许用户在创建维护时段任务时在控制台中选择 Systems Manager 服务相关角色。

    要提供访问权限,请为您的用户、组或角色添加权限:

要使用控制台为已获允许注册维护时段任务的组配置权限
  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择用户组

  3. 在组列表中,选择要将 iam:PassRole 权限分配到的组的名称,或在需要时先创建一个新组

  4. Permissions(权限)选项卡上,请选择 Add permissions, Create inline policy(添加权限、创建内联策略)。

  5. 策略编辑器区域中,选择 JSON,然后将方框的默认内容替换为以下内容。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/my-maintenance-window-role" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/" } ] }

    my-maintenance-window-role 表示您之前创建的自定义维护时段角色的名称。

    account-id 表示 Amazon Web Services 账户 的 ID。为资源 arn:aws:iam::account-id:role/ 添加此权限允许用户在创建维护时段任务时在控制台中查看和选择客户角色。为 arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/ 添加此权限允许用户在创建维护时段任务时在控制台中选择 Systems Manager 服务相关角色。

  6. 选择下一步

  7. 查看和创建页面上的策略名称框中,输入名称以标识此 PassRole 策略,例如 my-group-iam-passrole-policy,然后选择创建策略

任务 4:使用控制台阻止指定用户注册维护时段任务

对于您的 Amazon Web Services 账户中您不希望其将任务注册到维护时段的用户,您可以拒绝向其授予 ssm:RegisterTaskWithMaintenanceWindow 权限。这将提供额外的防护,从而阻止不应注册维护时段任务的用户。

要使用控制台为不允许注册维护时段任务的组配置权限
  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择用户组

  3. 在组列表中,选择要从中拒绝 ssm:RegisterTaskWithMaintenanceWindow 权限的组的名称,或在需要时先创建一个新组。

  4. Permissions(权限)选项卡上,请选择 Add permissions, Create inline policy(添加权限、创建内联策略)。

  5. 策略编辑器区域中,选择 JSON,然后将方框的默认内容替换为以下内容。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
  6. 选择下一步

  7. 查看和创建页面上,对于策略名称,输入名称以标识此策略,例如 my-groups-deny-mw-tasks-policy,然后选择创建策略