(快速入门)Session Manager 默认 IAM 策略 - AWS Systems Manager

(快速入门)Session Manager 默认 IAM 策略

使用此部分中的示例可帮助您创建 IAM 策略来提供访问 Session Manager 所需的最常用权限。

注意

您还可以使用 AWS KMS 密钥策略来控制哪些 IAM 用户、IAM 角色和 AWS 账户被授予访问您的 CMK 的权限。有关信息,请参阅 AWS Key Management Service Developer Guide 中的管理对您的 AWS KMS 资源的访问概述使用 AWS KMS 中的密钥策略

Session Manager 的快速入门最终用户策略

使用以下示例为 Session Manager 创建 IAM 最终用户策略。

可以创建一个策略,允许用户仅从 Session Manager 控制台和 AWS CLI、仅从 Amazon EC2 控制台或从这三项中启动会话。

这些策略为最终用户提供启动特定实例会话以及仅结束自己的会话的功能。有关可能需要对策略进行的自定义的示例,请参阅 Session Manager 的其他示例 IAM 策略

注意

在以下所有示例策略中,将 instance-id 替换为要授予其访问权限的实例的 ID,格式为 i-02573cafcfEXAMPLE。将 regionaccount-id 替换为您的 AWS 区域和 AWS 账户 ID,例如 us-east-2111122223333

从以下选项卡中进行选择,查看要提供的会话访问范围的示例策略。

Session Manager and CLI

使用该示例策略可向用户提供仅从 Session Manager 控制台和 AWS CLI 启动会话的功能。该策略不提供从 Amazon EC2 控制台启动会话所需的所有权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:*:*:instance/instance-id", "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } } }, { "Effect": "Allow", "Action": [ "ssm:DescribeSessions", "ssm:GetConnectionStatus", "ssm:DescribeInstanceProperties", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "key-name" } ] }
Amazon EC2

使用该示例策略可向用户提供仅从 Amazon EC2 控制台启动会话的功能。该策略不提供从 Session Manager 控制台和 AWS CLI 启动会话所需的所有权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:*:*:instance/instance-id" ] }, { "Effect": "Allow", "Action": [ "ssm:GetConnectionStatus", "ssm:DescribeInstanceInformation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }
Session Manager, CLI, and Amazon EC2

使用该示例策略可向用户提供从 Session Manager 控制台、AWS CLI 和 Amazon EC2 控制台启动会话的功能。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:*:*:instance/instance-id", "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } } }, { "Effect": "Allow", "Action": [ "ssm:DescribeSessions", "ssm:GetConnectionStatus", "ssm:DescribeInstanceInformation", "ssm:DescribeInstanceProperties", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "key-name" } ] }

1 SSM-SessionManagerRunShell 是 Session Manager 创建的用于存储会话配置首选项的 SSM 文档的默认名称。您可以改为创建自定义会话文档,并在此策略中指定它。您还可以为使用 SSH 启动会话的用户指定 AWS 提供的文档 AWS-StartSSHSession。有关使用 SSH 支持会话所需的配置步骤的信息,请参阅 (可选)通过 Session Manager 启用 SSH 连接

2 如果将条件元素 ssm:SessionDocumentAccessCheck 指定为 true,则系统会在建立会话之前检查用户是否具有对定义的会话文档(在本例中为 SSM-SessionManagerRunShell)的显式访问权限。有关更多信息,请参阅 对 AWS CLI 强制实施会话文档权限检查

3 kms:GenerateDataKey 权限可让您创建用于加密会话数据的数据加密密钥。如果您将为您的会话数据使用 AWS Key Management Service (AWS KMS) 加密,请将 key-name 替换为您要使用的客户主密钥 (CMK) 的 ARN,使用格式 arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE。如果您不为会话数据使用 AWS KMS 密钥加密,请从策略中删除以下内容:

, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "key-name" }

有关用于加密会话数据的 AWS KMS 和 CMK 的信息,请参阅 启用会话数据 AWS KMS 密钥加密(控制台)

4 如果用户尝试从 Amazon EC2 控制台启动会话,但必须发送命令以首先更新 SSM 代理,则需要 SendCommand 的权限。

(快速入门)Session Manager 管理员策略

使用以下示例可为 Session Manager 创建 IAM 管理员策略。

这些策略为管理员提供启动标记为 Key=Finance,Value=WebServers 的实例的会话的功能,创建、更新和删除首选项的权限,以及仅结束自己的会话的权限。有关可能需要对策略进行的自定义的示例,请参阅 Session Manager 的其他示例 IAM 策略

可以创建一个策略,允许管理员仅从 Session Manager 控制台和 AWS CLI、仅从 Amazon EC2 控制台或从这三项中执行这些任务。

注意

regionaccount-id 替换为您的 AWS 区域和 AWS 账户 ID,例如 us-east-2111122223333

从以下选项卡中进行选择,查看要支持的访问方案的示例策略。

Session Manager and CLI

使用该示例策略可向管理员提供仅从 Session Manager 控制台和 AWS CLI 执行会话相关任务的功能。该策略不提供从 Amazon EC2 控制台执行会话相关任务所需的所有权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/Finance": [ "WebServers" ] } } }, { "Effect": "Allow", "Action": [ "ssm:DescribeSessions", "ssm:GetConnectionStatus", "ssm:DescribeInstanceProperties", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:CreateDocument", "ssm:UpdateDocument", "ssm:GetDocument" ], "Resource": "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }
Amazon EC2

使用该示例策略可向管理员提供仅从 Amazon EC2 执行会话相关任务的功能。该策略不提供从 Session Manager 控制台和 AWS CLI 执行会话相关任务所需的所有权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/tag-key": [ "tag-value" ] } } }, { "Effect": "Allow", "Action": [ "ssm:GetConnectionStatus", "ssm:DescribeInstanceInformation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }
Session Manager, CLI, and Amazon EC2

使用该示例策略可向管理员提供从 Session Manager 控制台、AWS CLI 和 Amazon EC2 控制台执行会话相关任务的功能。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:*:*:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/tag-key": [ "tag-value" ] } } }, { "Effect": "Allow", "Action": [ "ssm:DescribeSessions", "ssm:GetConnectionStatus", "ssm:DescribeInstanceInformation", "ssm:DescribeInstanceProperties", "ec2:DescribeInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:CreateDocument", "ssm:UpdateDocument", "ssm:GetDocument" ], "Resource": "arn:aws:ssm:region:account-id:document/SSM-SessionManagerRunShell" }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }

1 如果用户尝试从 Amazon EC2 控制台启动会话,但必须发送命令以首先更新 SSM 代理,则需要 SendCommand 的权限。