Amazon Systems Manager 基于身份的策略示例
预设情况下,Amazon Identity and Access Management (IAM) 用户和角色没有创建或修改 Amazon Systems Manager 资源的权限。他们还无法使用 Systems Manager 控制台、Amazon Command Line Interface (Amazon CLI) 或 Amazon API 执行任务。IAM 管理员必须创建 IAM 策略,以便为用户和角色授予权限以对所需的指定资源执行特定的 API 操作。然后,管理员必须将这些策略附加到需要这些权限的 IAM 用户或组。
以下示例权限策略允许用户删除位于美国东部(俄亥俄)(us-east-2)Amazon Web Services 区域的名称以 MyDocument-
开头的文档。
{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:DeleteDocument" ], "Resource" : [ "arn:aws:ssm:us-east-2:111122223333:document/MyDocument-*" ] } ] }
要了解如何使用这些示例 JSON 策略文档创建基于 IAM 身份的策略,请参阅 IAM 用户指南中的创建 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 用户指南》中的 IAM JSON 策略元素:条件。
使用 Systems Manager 控制台
要访问 Systems Manager 控制台,您必须具有一组最低的权限。这些权限必须允许您列出和查看有关您 Amazon Web Services 账户中的 Systems Manager 资源和其他资源的详细信息。
要在 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 操作的权限。您可以使用它们限制 IAM 用户和角色对 Systems Manager 的访问权限。在 Systems Manager API、Amazon 开发工具包或 Amazon CLI 中执行操作时,这些策略将会发挥作用。对于使用控制台的用户,需要授予特定于控制台的其他权限。有关更多信息,请参阅使用 Systems Manager 控制台。
所有示例都使用 美国西部(俄勒冈)区域 (us-west-2) 和虚构的账户 ID。不应在 Amazon 公有文档(以 AWS-*
开头的文档)的 Amazon Resource Name (ARN) 中指定账户 ID。
示例
示例 1:允许用户在单个区域中执行 Systems Manager 操作
以下示例授予在美国东部(俄亥俄)区域(us-east-2)中执行 Systems Manager 操作的权限。
{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:*" ], "Resource" : [ "arn:aws:ssm:us-east-2:
aws-account-ID
:*" ] } ] }
示例 2:允许用户列出某个区域的文档
以下示例授予列出美国东部(俄亥俄)区域(us-east-2)中所有以 Update
开头的文档名称的权限。
{ "Version": "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "ssm:ListDocuments" ], "Resource" : [ "arn:aws:ssm:us-east-2:
aws-account-ID
:document/Update*" ] } ] }
示例 3:允许用户使用特定 SSM 文档在特定节点上运行命令
以下示例 IAM 策略允许用户在美国东部(俄亥俄)区域(us-east-2)执行以下操作:
-
列出 Systems Manager 文档(SSM 文档)和文档版本。
-
查看有关文档的详细信息。
-
使用策略中指定的文档发送命令。文档名称由以下条目确定。
arn:aws:ssm:us-east-2:
aws-account-ID
:document/Systems-Manager-document-name
-
将命令发送到三个节点。节点由第二个
Resource
部分中的以下条目确定。"arn:aws:ssm:us-east-2:
aws-account-ID
:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:us-east-2:aws-account-ID
:instance/i-0471e04240EXAMPLE", "arn:aws:ssm:us-east-2:aws-account-ID
:instance/i-07782c72faEXAMPLE" -
发送命令后查看有关命令的详细信息。
-
在自动化(Amazon Systems Manager 的一项功能)中启动和停止工作流。
-
获取有关自动化工作流的信息。
如果您要授予某个用户使用此文档向该用户有权访问(取决于其用户账户)的任何节点发送命令的权限,则可以在 Resource
部分指定与以下类似的条目并删除其他节点条目。以下示例使用美国东部(俄亥俄)区域(us-east-2)。
"arn:aws:ssm: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:ssm:us-east-2:
aws-account-ID
:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:us-east-2:aws-account-ID
:instance/i-0471e04240EXAMPLE", "arn:aws:ssm: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": [ "*" ] } ] }
基于标签查看 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-roe
或 owner=richard-roe
。否则,他们将被拒绝访问。条件标签密钥 Owner
与 Owner
和 owner
匹配,因为条件密钥名称不区分大小写。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素:条件。