通过在 IAM policy 中指定会话文档来启动与文档的会话 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

通过在 IAM policy 中指定会话文档来启动与文档的会话

如果使用默认会话文档的 start-session Amazon CLI 命令,则可以省略文档名称。系统会自动调用 SSM-SessionManagerRunShell 会话文档。

在所有其他情况下,您必须为 document-name 参数指定一个值。当用户在命令中指定会话文档的名称时,系统会检查其 IAM policy,以验证他们是否有权访问该文档。如果他们没有权限,连接请求就会失败。以下示例包括 AWS-StartPortForwardingSession 会话文档中的 document-name 参数。

aws ssm start-session \ --target i-02573cafcfEXAMPLE \ --document-name AWS-StartPortForwardingSession \ --parameters '{"portNumber":["80"], "localPortNumber":["56789"]}'

启动会话时强制执行会话文档权限检查

要限制对 AWS-StartPortForwardingSession 会话文档的访问,您可以向用户的 IAM policy 添加一个条件元素,用于验证用户是否具有对会话文档的显式访问权限。应用此条件时,用户必须指定 start-session 命令的 document-name 选项的值。将以下条件元素添加到 IAM policy 中的 ssm:StartSession 操作时,此元素将执行会话文档访问检查。

"Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } }

将此条件元素设置为 true 后,必须在 IAM policy 中授予对会话文档的显式访问权限,以便用户启动会话。为了确保强制执行条件元素,必须将其包括在所有允许 ssm:StartSession 操作的策略语句中。下面是一个例子。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableSSMSession", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:us-west-2::document/AWS-StartPortForwardingSession" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } } } ] }

有了此 IAM policy 后,如果 SessionDocumentAccessCheck 条件元素设置为 true,则用户在使用 Amazon CLI 启动会话时必须在其命令中输入 document-name 参数。document-name 的值必须是 IAM policy Resource 部分中指定的文档。如果用户输入了不同的文档名称或者他们没有指定 document-name 参数,则请求将失败。

如果 SessionDocumentAccessCheck 条件元素设置为 false,则不会影响 IAM policy 的评估。

有关在 IAM policy 中指定 Session Manager 会话文档的示例,请参阅 Session Manager 的快速入门最终用户策略

其他应用场景

要使用 SSH 启动会话,必须同时在目标托管式节点和用户的本地计算机上完成配置步骤。有关信息,请参阅(可选)通过 Session Manager 允许和控制 SSH 连接的权限