会话管理器的其他示例 IAM 策略 - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

会话管理器的其他示例 IAM 策略

请参阅以下示例策略,以帮助您为要支持的任何会话管理器用户访问场景创建自定义 AWS Identity and Access Management (IAM) 策略。

示例 1:限制 对特定实例的访问权限

您可以通过创建包含实例 ID 的 IAM 用户策略来限制对特定实例的访问。在以下示例中,仅允许用户对三个特定实例进行访问,并且仅允许用户在这些实例上结束自己的会话。如果用户向任何其他实例发送命令或尝试结束任何其他会话,则命令结果将包括 AccessDenied

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890EXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-abcdefghijEXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-0e9d8c7b6aEXAMPLE" ] }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }

示例 2:基于实例标签限制访问

您可以根据特定的 Amazon EC2 标签限制对实例的访问。在以下示例中,允许用户启动和恢复会话 (Effect: Allow, Action: ssm:StartSession, ssm:ResumeSession)上的任何实例(Resource: arn:aws:ec2:region:987654321098:instance/*),条件是该实例是财务 WebServer(ssm:resourceTag/Finance: WebServer)。如果用户向未设置标签或具有除 Finance: WebServer 以外的任意标签的实例发送命令,则命令结果将包括 AccessDenied

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:region:987654321098:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/Finance": [ "WebServers" ] } } }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }

您可以创建 IAM 策略来允许用户启动到使用多个标签进行标记的实例的会话。以下策略允许用户启动到应用了指定标签的实例的会话。如果用户向未使用这两个标签标记的实例发送命令,则命令结果将包括 AccessDenied

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:StartSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag-key1":[ "tag-value1" ], "ssm:resourceTag/tag-key2":[ "tag-value2" ] } } } ] }

有关创建 IAM 用户策略的更多信息,请参阅托管策略与内联策略中的IAM 用户指南。有关标记实例的更多信息,请参阅 标记托管实例为 Amazon EC2 资源添加标签中的适用于 Linux 实例的 Amazon EC2 用户指南(内容适用于 Windows 和 Linux 实例)。有关在实例上提高针对未授权根级别命令的防御安全性的更多信息,请参阅通过 SSM 代理限制对根级别命令的访问

示例 3:允许用户仅结束自己启动的会话

会话管理器提供了两种方法来控制用户在您的Amazon Web Services 账户被允许结束。

  • 使用变量{aws:username}在 AWS Identity and Access Management (IAM) 权限策略中。用户只能结束自己启动的会话。此方法不适用于使用联合 ID 授予访问权限的账户。Amazon。联合 ID 使用变量 {aws:userid} 而不是 {aws:username}

  • 使用提供的标签Amazon标签。在策略中,您包含一个条件,该条件允许用户仅结束使用特定标记进行标记的会话,这些标记由Amazon。此方法适用于所有账户,包括那些使用联合 ID 授予访问权限的账户。Amazon。

方法 1:使用变量授予 TerminateSession 权限{aws:username}

以下 IAM 策略允许用户查看您账户中所有会话的 ID。但是,用户只能通过其启动的会话与实例交互。分配了以下策略的用户无法连接或结束其他用户的会话。此策略使用变量 {aws:username} 来实现这一目的。

注意

此方法不适用于授予访问权限的账户Amazon使用联合 ID。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:DescribeSessions" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "ssm:TerminateSession" ], "Effect": "Allow", "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }

方法 2:使用提供的标签授予 TerminateSession 权限Amazon

您可以通过在 IAM 用户策略中使用带有特定标签键变量的条件来控制用户可以结束哪些会话。该条件指定用户只能结束使用这些特定标记键变量和指定值之一或两者标记的会话。

当您的Amazon Web Services 账户启动会话时,会话管理器会将两个资源标签应用到会话。第一个资源标签是 aws:ssmmessages:target-id,用它可指定允许用户结束的目标的 ID。另一个资源标签是 aws:ssmmessages:session-id,值的格式为 role-id:caller-specified-role-name

注意

会话管理器不支持此 IAM 访问控制策略的自定义标签。您必须使用由提供的资源标签Amazon,如下所述。

aws:ssmmessages:target-id

使用此标签键,您可以在策略中包含实例 ID 作为值。在以下策略块中,条件语句允许用户仅结束实例 I-02573CafcfcfSimple。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "i-02573cafcfEXAMPLE" ] } } } ] }

如果用户尝试结束未获得此 TerminateSession 权限的会话,则会收到 AccessDeniedException 错误。

aws:ssmmessages:session-id

此标签键包含会话 ID 的变量作为请求中的值来启动会话。

以下示例演示了调用方类型为 User 的情况的策略。您为 aws:ssmmessages:session-id 提供的值是用户的 ID。在此示例中,AIDIODR4TAW7CSEXAMPLE表示您的用户的 ID。Amazon Web Services 账户。要检索您的用户的 ID,请在您的Amazon Web Services 账户,请使用 IAM 命令get-user。想要了解有关信息,请参阅get-user的 AWS Identity and Access Management 部分IAM 用户指南

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "AIDIODR4TAW7CSEXAMPLE" ] } } } ] }

以下示例演示了调用方类型为 AssumedRole 的情况的策略。针对您为 aws:ssmmessages:session-id 提供的值,您可以使用 {aws:userid} 变量。或者,您可以针对您为 aws:ssmmessages:session-id 提供的值硬编码角色 ID。如果您对角色 ID 进行硬编码,则必须采用以格式 role-id:caller-specified-role-name 提供值。例如:AIDIODR4TAW7CSEXAMPLE:MyRole

重要

要应用系统标签,您提供的角色 ID 只能包含以下字符:统一码字母,0-9,空格_.:/=+-@, 和\

检索您的角色中的角色的角色的角色的角色 IDAmazon Web Services 账户,请使用get-caller-identity命令。想要了解有关信息,请参阅get-caller-identity中的AmazonCLI 命令参考

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "${aws:userid}" ] } } } ] }

如果用户尝试结束未获得此 TerminateSession 权限的会话,则会收到 AccessDeniedException 错误。

aws:ssmmessages:target-idaws:ssmmessages:session-id

您还可以创建 IAM 策略,使用户能够结束使用两个系统标签标记的会话,如本示例所示。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:TerminateSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/aws:ssmmessages:target-id":[ "instance-id" ], "ssm:resourceTag/aws:ssmmessages:session-id":[ "${aws:username}-*" ] } } } ] }

示例 4:允许对所有会话进行完全(管理)访问

以下 IAM 策略允许用户与所有实例以及所有用户为所有实例创建的所有会话进行不受限制的交互。只应将其授予需要完全控制组织的会话管理器活动的管理员。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:StartSession", "ssm:TerminateSession", "ssm:ResumeSession", "ssm:DescribeSessions", "ssm:GetConnectionStatus" ], "Effect": "Allow", "Resource": [ "*" ] } ] }