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

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

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

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

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

{ "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 资源。这些操作可能会使 Amazon Web Services 账户 产生成本。创建或编辑基于身份的策略时,请遵循以下准则和建议:

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

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

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

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

使用 Systems Manager 控制台

要访问 Systems Manager 控制台,您必须具有一组最低的权限。这些权限必须允许您列出和查看有关Systems Manager资源和其他资源 Amazon Web Services 账户 .

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

  • Amazon Systems Manager

  • Amazon Elastic Compute Cloud (Amazon EC2)

  • Amazon 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 用户或角色)正常运行控制台。

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

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

该示例说明了您如何创建策略,以允许 IAM 用户查看附加到其用户身份的内联和托管策略。此策略包括在控制台上完成此操作或者以编程方式使用 Amazon CLI 或 Amazon 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": "*" } ] }

客户管理的策略示例

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

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

注意

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

示例

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

以下示例授予执行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"
  • 发送命令后查看有关命令的详细信息。

  • 在 “自动化” 中启动和停止工作流,这是Amazon Systems Manager.

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

如果您要授予用户权限以使用本文档向该用户有权访问 (取决于其用户帐户) 的任何实例发送命令,您可以在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 的用户尝试查看 Systems Manager 文档,则必须将该文档标记为 Owner=richard-roeowner=richard-roe。否则,他们会被拒绝访问。条件标签键Owner与两者匹配Ownerowner因为条件键名称不区分大小写。有关更多信息,请参阅 。IAM JSON 策略元素:Condition中的IAM 用户指南.