通过在 IAM policy 中指定会话文档来启动与文档的会话
如果使用默认会话文档的 start-session AWS 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
,则用户在使用 AWS CLI 启动会话时必须在其命令中输入 document-name
参数。document-name
的值必须是 IAM policy Resource
部分中指定的文档。如果用户输入了不同的文档名称或者他们没有指定 document-name
参数,则请求将失败。
如果 SessionDocumentAccessCheck
条件元素设置为 false
,则不会影响 IAM policy 的评估。
有关在 IAM policy 中指定 Session Manager 会话文档的示例,请参阅 Session Manager 的快速入门最终用户策略。
其他应用场景
要使用 SSH 启动会话,必须同时在目标托管式节点和用户的本地计算机上完成配置步骤。有关信息,请参阅(可选)通过 Session Manager 允许和控制 SSH 连接的权限。