对 Amazon CLI 强制实施会话文档权限检查 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

对 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 连接的权限