AWS Systems Manager 基于身份的策略示例 - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

AWS Systems Manager 基于身份的策略示例

默认情况下,AWS Identity and Access Management (IAM) 用户和角色无权创建或修改 AWS Systems Manager 资源。它们也无法使用 Systems Manager 控制台、AWS Command Line Interface (AWS CLI) 或 AWS API 执行任务。IAM 管理员必须创建 IAM 策略,以便为用户和角色授予权限以对所需的指定资源执行特定的 API 操作。然后,管理员必须将这些策略附加到需要这些权限的 IAM 用户或组。

下面是一个权限策略示例,它允许用户删除名称以开头的文档。MyDocument-中的us-west-2AWS 区域。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:DeleteDocument" ], "Resource" : [ "arn:aws:ssm:us-west-2:aws-account-ID:document/MyDocument-*" ] } ] }

要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略,请参阅在“JSON”选项卡上创建策略中的IAM 用户指南

策略最佳实践

基于身份的策略非常强大。它们确定某个人是否可以创建、访问或删除您账户中的 Systems Manager 资源。这些操作可能会在您的 AWS 账户中产生费用。创建或编辑基于身份的策略时,请遵循以下准则和建议:

  • 入门 AWS 托管策略— 要快速开始使用 Systems Manager,请使用 AWS 托管策略为您的员工提供所需的权限。已在您的账户中提供这些策略,并由 AWS 进行维护和更新。有关更多信息,请参阅 。通过 AWS 托管策略开始使用权限中的IAM 用户指南

  • 授予最低权限 – 创建自定义策略时,仅授予执行任务所需的许可。最开始只授予最低权限,然后根据需要授予其他权限。这样做比起一开始就授予过于宽松的权限而后再尝试收紧权限来说更为安全。有关更多信息,请参阅 。授予最低权限中的IAM 用户指南

  • 为敏感操作启用 MFA – 为了提高安全性,要求 IAM 用户使用多重验证 (MFA) 访问敏感资源或 API 操作。有关更多信息,请参阅 。在 AWS 中使用多重身份验证 (MFA)中的IAM 用户指南

  • 使用策略条件来增强安全性 – 在切实可行的范围内,定义基于身份的策略在哪些情况下允许访问资源。例如,您可编写条件来指定请求必须来自允许的 IP 地址范围。您也可以编写条件,以便仅允许指定日期或时间范围内的请求,或者要求使用 SSL 或 MFA。有关更多信息,请参阅 。IAM JSON 策略元素:Condition中的IAM 用户指南

使用 Systems Manager 控制台

要访问 Systems Manager 控制台,您必须具有一组最低的权限。这些权限必须允许您列出和查看有关您的 AWS 账户中的 Systems Manager 资源和其他资源的详细信息。

要充分使用 Systems Manager 控制台中的 Systems Manager,您必须拥有来自以下服务的权限:

  • AWS Systems Manager

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • AWS Identity and Access Management (IAM)

您可以使用以下策略声明授予所需权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:*", "ec2:describeInstances", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "ssm.amazonaws.com" } } } ] }

如果您创建的基于身份的策略比所需的最低权限更严格,则无法为具有该策略的实体(IAM 用户或角色)正常运行控制台。

对于仅调用 AWS CLI 或 AWS API 的用户,您无需为其提供最低控制台权限。相反,只允许访问与您尝试执行的 API 操作相匹配的操作。

允许用户查看他们自己的权限

该示例说明了您如何创建策略,以允许 IAM 用户查看附加到其用户身份的内联和托管策略。该策略包括在控制台上或以编程方式使用 AWS CLI 或 AWS API 完成该操作所需的权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }

客户管理的策略示例

您可以创建在自己的 AWS 账户中管理的独立策略。我们将它们称作客户托管策略。您可以将这些策略附加到 AWS 账户中的多个委托人实体。将策略附加到委托人实体时,便向实体授予了策略中定义的权限。有关更多信息,请参阅 。客户管理的策略IAM 用户指南

以下用户策略示例授予执行各种 Systems Manager 操作的权限。可以使用它们限制 IAM 用户和角色的 Systems Manager 访问。当在 Systems Manager API、AWS 开发工具包或 AWS CLI 中执行操作时,可以使用这些策略。对于使用控制台的用户,需要授予特定于控制台的其他权限。有关更多信息,请参阅 使用 Systems Manager 控制台

注意

所有示例都使用美国西部(俄勒冈)区域 (us-west-2) 并且包含虚构的账户 ID。账户 ID 不应在 AWS 公有文档(以 AWS-* 开头的文档)的亚马逊资源名称 (ARN) 中指定。

示例

示例 1:允许用户在单个区域中执行 Systems Manager 操作

以下示例授予仅在us-west-2区域。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:*" ], "Resource" : [ "arn:aws:ssm:us-west-2:aws-account-ID:*" ] } ] }

示例 2:允许用户列出某个区域的文档

以下示例授予列出所有以开头的文档名称的权限Update中的us-west-2区域。

{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:ListDocuments" ], "Resource" : [ "arn:aws:ssm:us-west-2:aws-account-ID:document/Update*" ] } ] }

示例 3:允许用户使用特定 SSM 文档在特定实例上运行命令

以下示例 IAM 策略允许用户执行以下操作:

  • 列出 Systems Manager 文档(SSM 文档)和文档版本。

  • 查看有关文档的详细信息。

  • 使用策略中指定的文档发送命令。文档名称由以下条目确定。

    arn:aws:ssm:us-east-2:aws-account-ID:document/Systems-Manager-document-name
  • 发送命令到三个实例。实例由第二个Resource部分。

    "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-02573cafcfEXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-0471e04240EXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-07782c72faEXAMPLE"
  • 发送命令后查看有关命令的详细信息。

  • 在 AWS Systems Manager 的功能自动化中启动和停止工作流。

  • 获取有关 Automation 工作流的信息。

如果您要授予用户权限以使用本文档向该用户目前有权访问 (取决于其 AWS 用户账户) 的任何实例发送命令,您可以在 Resource 部分指定以下条目并删除其他实例条目。

"arn:aws:ec2:us-east-2:*:instance/*"
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:ListDocuments", "ssm:ListDocumentVersions", "ssm:DescribeDocument", "ssm:GetDocument", "ssm:DescribeInstanceInformation", "ssm:DescribeDocumentParameters", "ssm:DescribeInstanceProperties" ], "Effect": "Allow", "Resource": "*" }, { "Action": "ssm:SendCommand", "Effect": "Allow", "Resource": [ "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-02573cafcfEXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-0471e04240EXAMPLE", "arn:aws:ec2:us-east-2:aws-account-ID:instance/i-07782c72faEXAMPLE", "arn:aws:ssm:us-east-2:aws-account-ID:document/Systems-Manager-document-name" ] }, { "Action": [ "ssm:CancelCommand", "ssm:ListCommands", "ssm:ListCommandInvocations" ], "Effect": "Allow", "Resource": "*" }, { "Action": "ec2:DescribeInstanceStatus", "Effect": "Allow", "Resource": "*" }, { "Action": "ssm:StartAutomationExecution", "Effect": "Allow", "Resource": [ "arn:aws:ssm:us-east-2:aws-account-ID:automation-definition/" ] }, { "Action": "ssm:DescribeAutomationExecutions", "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "ssm:StopAutomationExecution", "ssm:GetAutomationExecution" ], "Effect": "Allow", "Resource": [ "arn:aws:ssm:us-east-2:aws-account-ID:automation-execution/" ] } ] }

基于标签查看 Systems Manager 文档

您可以在基于身份的策略中使用条件,以根据标签控制对 Systems Manager 资源的访问。此示例显示如何创建策略以允许查看 SSM 文档。但是,仅当文档标签 Owner 的值为该用户的用户名时,才能授予此权限。此策略还授予在控制台上完成此操作的必要权限。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListDocumentsInConsole", "Effect": "Allow", "Action": "ssm:ListDocuments", "Resource": "*" }, { "Sid": "ViewDocumentIfOwner", "Effect": "Allow", "Action": "ssm:GetDocument", "Resource": "arn:aws:ssm:*:*:document/*", "Condition": { "StringEquals": {"ssm:ResourceTag/Owner": "${aws:username}"} } } ] }

您可以将该策略附加到您账户中的 IAM 用户。如果名为richard-roe尝试查看系统 Manager 文档时,必须将该文档标记为Owner=richard-roe或者owner=richard-roe。否则,他会被拒绝访问。条件标签键 Owner 匹配 Ownerowner,因为条件键名称不区分大小写。有关更多信息,请参阅 。IAM JSON 策略元素:Condition中的IAM 用户指南