使用控制台控制对维护时段的访问权限
以下过程介绍如何使用 AWS Systems Manager 控制台为维护时段创建所需的权限和角色。
主题
任务 1:使用控制台为维护时段服务角色创建自定义策略
维护时段任务需要一个 IAM 角色才能提供在目标资源上运行所需的权限。通过附加到角色的 IAM 策略提供权限。您运行的任务类型和其他操作要求决定了此策略的内容。我们提供了一个基本策略,您可以根据需要进行调整。根据维护时段运行的任务和任务类型,您可能不需要此策略中的所有权限,并且可能需要包含额外的权限。您需要将此策略附加到您稍后在任务 2:使用控制台为维护时段创建自定义服务角色中创建的角色。
要使用控制台创建自定义策略
访问:https://console.aws.amazon.com/iam/
,打开 IAM 控制台。 -
在导航窗格中,选择 Policies (策略),然后选择 Create policy (创建策略)。
-
在策略编辑器区域中,选择 JSON。
-
将默认内容替换为以下内容:
{ "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" ] } } } ] }
-
根据需要为您在账户中运行的维护任务修改 JSON 内容。您做出的更改是特定于所计划操作的。
例如:
-
您可以提供特定功能和状态机的 Amazon 资源名称(ARN),而不是使用通配符(*)。
-
如果您不计划运行 AWS Step Functions 任务,则可以移除
states
权限和 ARN。 -
如果您不计划运行 AWS Lambda 任务,则可以移除
lambda
权限和 ARN。 -
如果您不计划运行自动化任务,则可以移除
ssm:GetAutomationExecution
和ssm:StartAutomationExecution
权限。 -
添加要运行的任务可能需要的其他权限。例如,一些 自动化 操作使用 AWS CloudFormation 堆栈。因此,权限
cloudformation:CreateStack
、cloudformation:DescribeStacks
和cloudformation:DeleteStack
是必需的。另一个示例:自动化运行手册
AWS-CopySnapshot
需要权限来创建 Amazon Elastic Block Store(Amazon EBS)快照,因此,服务角色需要权限ec2:CreateSnapshot
。有关自动化运行手册所需角色权限的信息,请参阅AWS Systems Manager 自动化运行手册参考中的运行手册描述。
-
-
完成策略修订后,选择下一步。
-
对于策略名称,输入一个名称以将此标识为您创建的服务角色所附加的策略。例如:
my-maintenance-window-role-policy
。 -
(可选)在添加标签区域中,添加一个或多个标签键值对,以组织、跟踪或控制此策略的访问权限。
-
选择 创建策略。
记下为此策略指定的名称。您将在下一过程任务 2:使用控制台为维护时段创建自定义服务角色中引用它。
任务 2:使用控制台为维护时段创建自定义服务角色
您在上一个任务中创建的策略将附加到您在此任务中创建的维护时段服务角色。当用户注册维护时段任务时,他们需要在任务配置中指定此 IAM 角色。此角色中的权限将允许 Systems Manager 代表您运行维护时段中的任务。
重要
以前,Systems Manager 控制台允许您选择 AWS 托管式 IAM 服务相关角色 AWSServiceRoleForAmazonSSM
,以用作任务的维护角色。现在不再建议将此角色及其相关策略 AmazonSSMServiceRolePolicy
用于维护时段任务。如果您目前在将此角色用于维护时段任务,我们建议您停止使用它。而应创建您自己的 IAM 角色,以便您的维护时段任务运行时在 Systems Manager 与其他 AWS 服务之间进行通信。
使用以下过程为 Maintenance Windows 创建自定义服务角色,以便 Systems Manager 可以代表您运行 Maintenance Windows 任务。您会将您在上一任务中创建的策略附加到您创建的自定义服务角色。
要使用控制台为维护时段创建自定义服务角色
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在导航窗格中,选择角色,然后选择创建角色。
-
对于 Select trusted entity(选择可信实体),完成以下选择:
-
在可信实体类型中选择 AWS 服务。
-
对于应用场景,选择 Systems Manager
-
选择 Systems Manager。
下图突出显示了 Systems Manager 选项的位置。
-
-
选择下一步。
-
在权限策略区域中的搜索框中,输入您在 任务 1:使用控制台为维护时段服务角色创建自定义策略 中创建的策略的名称,选中其名称旁边的复选框,然后选择下一步。
-
对于 Role name(角色名称),输入用于将此角色标识为 Maintenance Windows 角色的名称。例如:
my-maintenance-window-role
。 -
(可选)更改默认角色描述,以反映此角色的用途。例如:
Performs maintenance window tasks on your behalf
。 -
对于步骤 1:选择可信实体,请确认可信策略框中显示了以下策略。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
对于步骤 2:添加权限,请验证您在 任务 1:使用控制台为维护时段服务角色创建自定义策略 中创建的策略是否已存在。
-
(可选)在步骤 3:添加标签中,添加一个或多个标签键值对,以组织、跟踪或控制此角色的访问权限。
-
选择 Create role (创建角色)。系统将让您返回到 角色 页面。
-
选择刚才创建的 IAM 角色的名称。
-
复制或记下在 Summary(摘要)区域显示的角色名称和 ARN 值。您账户中的用户在创建维护时段时需要指定此信息。
任务 3:使用控制台向注册维护时段任务的特定用户授予权限
为用户提供访问自定义维护时段服务角色的权限,使他们可以将该角色用于维护时段任务。这是对已授予权限的补充,以便与适用于 Maintenance Windows 工具的 Systems Manager API 命令结合使用。此 IAM 角色传递了运行维护时段任务所需的权限。因此,如果无法传递这些 IAM 权限,用户将无法使用您的自定义服务角色向维护时段注册任务。
在将任务注册到维护时段时,您可以指定服务角色来运行实际任务操作。这是代表您运行任务时服务要代入的角色。在此之前,要注册任务本身,请将 IAM PassRole
策略分配给 IAM 实体(如用户或组)。这将允许 IAM 实体指定运行任务时应使用的角色,作为将这些任务注册到维护时段的一部分。有关更多信息,请参阅《IAM 用户指南》中的向用户授予将角色传递给 AWS 服务 的权限。
要配置权限以允许用户注册维护时段任务
如果将 IAM 实体(用户、角色或组)设置为拥有管理员权限,则 IAM 用户或角色将有权访问维护时段。对于没有管理员权限的 IAM 实体,管理员必须向 IAM 实体授予以下权限。以下是将任务注册到维护时段所需的最低权限:
-
AmazonSSMFullAccess
托管策略,或提供类似权限的策略。 -
以下
iam:PassRole
和iam: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
表示 AWS 账户 的 ID。为资源arn:aws:iam::
添加此权限允许用户在创建维护时段任务时在控制台中查看和选择客户角色。为account-id
:role/arn:aws:iam::
添加此权限允许用户在创建维护时段任务时在控制台中选择 Systems Manager 服务相关角色。account-id
:role/aws-service-role/ssm.amazonaws.com/要提供访问权限,请为您的用户、组或角色添加权限:
-
AWS IAM Identity Center 中的用户和群组:
创建权限集合。按照《AWS IAM Identity Center 用户指南》中创建权限集的说明进行操作。
-
通过身份提供商在 IAM 中托管的用户:
创建适用于身份联合验证的角色。按照《IAM 用户指南》中针对第三方身份提供商创建角色(联合身份验证)的说明进行操作。
-
IAM 用户:
-
创建您的用户可以担任的角色。按照《IAM 用户指南》中为 IAM 用户创建角色的说明进行操作。
-
(不推荐使用)将策略直接附加到用户或将用户添加到用户组。按照《IAM 用户指南》中向用户添加权限(控制台)中的说明进行操作。
-
-
要使用控制台为已获允许注册维护时段任务的组配置权限
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在导航窗格中,选择用户组。
-
在组列表中,选择要将
iam:PassRole
权限分配到的组的名称,或在需要时先创建一个新组 -
在 Permissions(权限)选项卡上,请选择 Add permissions, Create inline policy(添加权限、创建内联策略)。
-
在策略编辑器区域中,选择 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
表示 AWS 账户 的 ID。为资源arn:aws:iam::
添加此权限允许用户在创建维护时段任务时在控制台中查看和选择客户角色。为account-id
:role/arn:aws:iam::
添加此权限允许用户在创建维护时段任务时在控制台中选择 Systems Manager 服务相关角色。account-id
:role/aws-service-role/ssm.amazonaws.com/ -
选择下一步。
-
在查看和创建页面上的策略名称框中,输入名称以标识此
PassRole
策略,例如my-group-iam-passrole-policy
,然后选择创建策略。
任务 4:使用控制台阻止指定用户注册维护时段任务
对于您的 AWS 账户中您不希望其将任务注册到维护时段的用户,您可以拒绝向其授予 ssm:RegisterTaskWithMaintenanceWindow
权限。这将提供额外的防护,从而阻止不应注册维护时段任务的用户。
要使用控制台为不允许注册维护时段任务的组配置权限
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在导航窗格中,选择用户组。
-
在组列表中,选择要从中拒绝
ssm:RegisterTaskWithMaintenanceWindow
权限的组的名称,或在需要时先创建一个新组。 -
在 Permissions(权限)选项卡上,请选择 Add permissions, Create inline policy(添加权限、创建内联策略)。
-
在策略编辑器区域中,选择 JSON,然后将方框的默认内容替换为以下内容。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
-
选择下一步。
-
在查看和创建页面上,对于策略名称,输入名称以标识此策略,例如
my-groups-deny-mw-tasks-policy
,然后选择创建策略。