为 Session Manager 创建自定义 IAM 角色
您可以创建一个 AWS Identity and Access Management(IAM)角色来授予 Session Manager 对您的 Amazon EC2 托管实例执行操作的权限。您还可以在其中包含一个策略,以授予将会话日志发送到 Amazon Simple Storage Service(Amazon S3)和 Amazon CloudWatch Logs 所需的权限。
创建 IAM 角色后,如需关于如何将角色附加到实例的信息,请参阅 AWS re:Post 网站上的附加或替换实例配置文件
主题
创建具有最小 Session Manager 权限的 IAM 角色(控制台)
使用以下过程可创建一个自定义 IAM 角色,其策略仅提供在实例上执行 Session Manager 操作的权限。
创建具有最小 Session Manager 权限的实例配置文件(控制台)
登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中选择策略,然后选择创建策略。(如果显示 Get Started (入门) 按钮,请选择此按钮,然后选择 Create Policy (创建策略)。)
-
选择 JSON 选项卡。
-
将原定设置内容替换为以下策略。要使用 AWS Key Management Service(AWS KMS)加密会话数据,请将
key-name
替换为您要使用的 AWS KMS key 的 Amazon 资源名称(ARN)。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceInformation", "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "
key-name
" } ] }有关使用 KMS 密钥加密会话数据的信息,请参阅 启用会话数据的 KMS 密钥加密(控制台)。
如果您不为会话数据使用 AWS KMS 加密,可以从策略中删除以下内容。
, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "
key-name
" } -
选择下一步:标签。
-
(可选)通过选择 Add tag(添加标签)并输入策略的首选标签来添加标签。
-
选择 下一步: 审核。
-
在查看策略页面上,对于名称,输入内联策略的名称,例如
SessionManagerPermissions
。 -
(可选)对于 Description (描述),输入策略的描述。
-
选择 Create policy (创建策略)。
-
在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
-
在 Create role(创建角色)页面上,选择 AWS service( 服务),对于 Use case(使用案例),选择 EC2。
-
选择下一步。
-
在 Add permissions(添加权限)页面上,选中刚刚创建的策略名称左侧的复选框,例如
SessionManagerPermissions
。 -
选择下一步。
-
在 Name, review, and create(名称、审核和创建)页面中,对于 Role name(角色名称),输入 IAM 角色的名称,例如
MySessionManagerRole
。 -
(可选)对于角色描述,输入实例配置文件的描述。
-
(可选)通过选择 Add tag(添加标签)并输入角色的首选标签来添加标签。
选择 Create role(创建角色)。
有关 ssmmessages
操作的信息,请参阅 参考:ec2messages、ssmmessages 和其他 API 操作。
创建具有 Session Manager、Amazon S3 和 CloudWatch Logs 权限的 IAM 角色(控制台)
使用以下过程创建一个自定义 IAM 角色,其策略提供在实例上执行 Session Manager 操作的权限。此策略还提供了将会话日志存储在 Amazon Simple Storage Service (Amazon S3) 存储桶和 Amazon CloudWatch Logs 日志组中所需的权限。
重要
要将会话日志输出到其他 AWS 账户 拥有的 Amazon S3 存储桶,您必须将 s3:PutObjectAcl
权限添加到 IAM 角色策略。此外,您必须确保存储桶策略授予对拥有账户使用的 IAM 角色的跨账户存取权限,来授予 Systems Manager 托管实例的权限。如果存储桶使用密钥管理服务(KMS)加密,则存储桶的 KMS 策略还必须授予此跨账户存取权限。有关在 Amazon S3 中配置跨账户存储桶权限的信息,请参阅《Amazon Simple Storage Service 用户指南》中的授予跨账户存储桶权限。如果跨账户权限未添加,则拥有 Amazon S3 存储桶的账户将无法访问会话输出日志。
有关指定存储会话日志的首选项的信息,请参阅 启用和禁用会话日志记录。
要创建具有 Session Manager、Amazon S3 和 CloudWatch Logs 权限的 IAM 角色(控制台),请执行以下步骤
登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中选择策略,然后选择创建策略。(如果显示 Get Started (入门) 按钮,请选择此按钮,然后选择 Create Policy (创建策略)。)
-
选择 JSON 选项卡。
-
将原定设置内容替换为以下策略。将每个
示例资源占位符
替换为您自己的信息。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel", "ssm:UpdateInstanceInformation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/
s3-prefix
/*" }, { "Effect": "Allow", "Action": [ "s3:GetEncryptionConfiguration" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "key-name
" }, { "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "*" } ] } -
选择下一步:标签。
-
(可选)通过选择 Add tag(添加标签)并输入策略的首选标签来添加标签。
-
选择 下一步: 审核。
-
在查看策略页面上,对于名称,输入内联策略的名称,例如
SessionManagerPermissions
。 -
(可选)对于 Description (描述),输入策略的描述。
-
选择 Create policy (创建策略)。
-
在导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
-
在 Create role(创建角色)页面上,选择 AWS service( 服务),对于 Use case(使用案例),选择 EC2。
-
选择下一步。
-
在 Add permissions(添加权限)页面上,选中刚刚创建的策略名称左侧的复选框,例如
SessionManagerPermissions
。 -
选择下一步。
-
在 Name, review, and create(名称、审核和创建)页面中,对于 Role name(角色名称),输入 IAM 角色的名称,例如
MySessionManagerRole
。 -
(可选)对于 Role description(角色描述),输入角色的描述。
-
(可选)通过选择 Add tag(添加标签)并输入角色的首选标签来添加标签。
-
选择 Create role(创建角色)。