对 Amazon CLI 强制实施会话文档权限检查
当您将 Session Manager 配置用于您的账户时,系统会创建会话类型的文档 SSM-SessionManagerRunShell
。此文档存储会话首选项,例如会话数据是保存在 Amazon Simple Storage Service (Amazon S3) 存储桶还是 Amazon CloudWatch Logs 日志组中,会话数据是否使用 Amazon Key Management Service (Amazon KMS) 进行加密,以及会话是否允许“运行身份”支持。以下是示例。
{ "schemaVersion": "1.0", "description": "Document to hold regional settings for Session Manager", "sessionType": "Standard_Stream", "inputs": { "s3BucketName": "doc-example-bucket", "s3KeyPrefix": "BucketPrefix", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "LogGroupName", "cloudWatchEncryptionEnabled": true, "kmsKeyId": "kms-key", "runAsEnabled": true, "runAsDefaultUser": "RunAsUser" } }
默认情况下,如果您账户中的用户已在其 Amazon Identity and Access Management (IAM) 用户策略中获得启动会话的权限,则该用户可以访问 SSM-SessionManagerRunShell
SSM 文档。这意味着,当他们使用 Amazon CLI 运行 start-session
命令但没有在 --document-name
选项中指定文档时,系统将使用 SSM-SessionManagerRunShell
并启动会话。即使用户的 IAM 策略未授予访问 SSM-SessionManagerRunShell
文档的显式权限,会话也会启动。
例如,以下命令不指定会话文档。
aws ssm start-session \ --target i-02573cafcfEXAMPLE
以下示例指定默认 Session Manager 会话文档。
aws ssm start-session \ --document-name SSM-SessionManagerRunShell \ --target i-02573cafcfEXAMPLE
要限制对默认文档或任何会话文档的访问,您可以向用户的 IAM 策略添加一个条件元素,用于验证用户是否具有对会话文档的显式访问权限。应用此条件时,用户必须指定 start-session
Amazon CLI 命令的 --document-name
选项的值。此值是默认 Session Manager 会话文档或您创建的自定义会话文档。将以下条件元素添加到 IAM 策略中的 ssm:StartSession
操作时,此元素将执行会话文档访问检查。
"Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } }
将此条件元素设置为 true
后,必须在 IAM 策略中授予对会话文档的显式访问权限,以便用户启动会话。为了确保强制执行条件元素,必须将其包括在所有允许 ssm:StartSession
操作的策略语句中。以下是示例。
{ "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:us-west-2:123456789012:document/SSM-SessionManagerRunShell" ] }
如果 SessionDocumentAccessCheck
条件元素设置为 false
,则不会影响 IAM 策略的评估。这意味着,如果 SessionDocumentAccessCheck
条件元素设置为 false
,并且您在 Resource
中指定文档名称,则在启动会话时必须提供指定的文档名称。如果在启动会话时提供其他文档名称,则请求将失败。
如果 SessionDocumentAccessCheck
条件元素设置为 false
,并且未在 Resource
中指定文档名称,则在启动会话时不需要提供文档名称。默认情况下,在请求中使用 SSM-SessionManagerRunShell
文档。
有关在 IAM 策略中指定 Session Manager 会话文档的示例,请参阅Session Manager 的快速入门最终用户策略。
其他 应用场景
使用默认的 SSM-SessionManagerRunShell
会话文档是可以从 start-session
CLI 命令中省略文档名称的唯一情况。在其他情况下,用户必须指定 start-session
Amazon CLI 命令的 --document-name
选项的值。系统会检查用户是否具有对他们指定的会话文档的显式访问权限。
例如,如果用户指定您创建的自定义会话文档的名称,则用户的 IAM 策略必须授予他们访问该文档的权限。
如果用户运行命令以使用 SSH 启动会话,则用户的策略必须授予他们访问 AWS-StartSSHSession
会话文档的权限。
要使用 SSH 启动会话,必须同时在目标托管式节点和用户的本地计算机上完成配置步骤。有关信息,请参阅(可选)通过 Session Manager 启用和控制 SSH 连接的权限。