2023-02-28 · 5

AWS SSM(Systems Manager)— Session Manager

cloudawsssm

这篇文章发布已超过两年,内容可能已过时。

什么是 AWS Systems Manager?

Systems Manager 的工作方式

  1. 访问 Systems Manager — 使用 Systems Manager 访问方式(console、CLI、SDK)中可用选项之一。
  2. 选择 Systems Manager 功能 — 确认能帮助你对资源执行目标操作的功能。此图只展示了 IT 开发者和 DevOps 人员用于配置和管理资源的部分功能。
  3. 验证与处理 — Systems Manager 会验证 AWS Identity and Access Management(IAM)用户、组(OU)或角色是否有权执行指定操作。若操作对象是托管节点,则由节点上运行的 Systems Manager Agent(SSM Agent)执行操作。对其他类型的资源,Systems Manager 会自行执行指定操作,或与其他 AWS 服务通信、代表 Systems Manager 执行操作。
  4. 报告 — 报告 Systems Manager、SSM Agent 以及代表 Systems Manager 执行操作的其他 AWS 服务的状态。Systems Manager 还可以把状态详情发送给其他 AWS 服务。
  5. Systems Manager 运维管理功能 — 启用后,运维管理功能(Explorer、OpsCenter)和 Incident Manager 会针对资源的事件或错误聚合运维数据或生成工件。这些工件包括运维工作项(OpsItems)和事件(incident)。运维管理功能提供对应用和资源的运维洞察及自动化问题解决方案,帮助解决问题。

总结:有比现有更好的东西就换!

用 AWS SSM 访问 EC2 实例(替代 SSH)— Session Manager

以下操作假设已创建一个用户、签发 Access Key 并连接到 AWS CLI。

先在 IAM 里创建要绑定到 EC2 的角色。

按上图设置后点 Next。这里必须选择 EC2 Role for AWS Systems Manager。

如果一路跟下来,无需额外设置就能看到已添加了 AmazonSSMManagedInstanceCore 权限。有这个权限就够了。点 Next,填好 Role name 后点 Create Role。

现在去 EC2 创建一台私有实例。

EC2 设置如上:单独创建了 Key-pair,建好 VPC 并放到 private-a 区,security groups 只开放 22、3306、80、443 这些与 Web、DB、SSH 相关的基础端口。

然后点击创建好的 EC2 进入设置,点 Modify IAM role。

可以看到刚才创建的 IAM 角色。选中它后点 Update IAM Role。

之后试着 SSH 连接测试——因为没有公网 IP 当然连不上。也没有堡垒 EC2,所以无法连接。

但如果一路跟到这里,输入 "aws ssm start-session --target <instances ID>" 就能顺利连上。

+)追加设置 (2023-02-17) 发布:在账户所有 EC2 实例上默认启用 AWS Systems Manager

链接

发布:在账户所有 EC2 实例上默认启用 AWS Systems Manager 的功能 AWS Systems Manager 客户现在可以使用默认主机管理配置(DHMC)代理,通过一次操作启用 Systems Manager,并为账户中所有 EC2 实例配置权限。 — aws.amazon.com

本次更新(2023-02-17)为 AWS Systems Manager 新增了名为 Default Host Management Configuration(DHMC)的设置。

DHMC 通过在 SSM 的 Fleet Manager 中指定权限(IAM 角色)来配置。之后 SSM Agent 不再依赖实例配置文件,而是从 DHMC 设置的角色获取凭证,实现 SSM 的各项功能。

  • 原有工作方式
    • 为使用 SSM 的 EC2 实例设置预定义的实例配置文件
    • SSM Agent 以上述实例配置文件的权限运行,实现 SSM 的各项功能。
  • 使用 DHMC 时的行为
    • 使用 SSM 的 EC2 实例不再需要实例配置文件。
    • 若 EC2 实例配置了实例配置文件,SSM Agent 以实例配置文件的权限运行,实现 SSM 的各项功能。
    • 若 EC2 实例未设置实例配置文件,SSM Agent 从 DHMC 中设置的角色(IAM role)获取凭证,实现 SSM 的各项功能。

简单来说,就是“EC2 没有配置文件时回退(fallback)的默认规则”。

※ 注意)SSM Agent 必须是 Ver.3.2.582.0 以上。更早的 SSM Agent 不支持 DHMC。

动手实践

先创建要在 DHMC 中配置的 IAM 角色。

用 AWS 的 AmazonSSMManagedEC2InstanceDefaultPolicy 策略创建。此策略与 AmazonSSMManagedInstanceCore 大致相同,但不允许 ssm:getParameter(s) 这两项。

如果还想让 EC2 实例读取 SSM Parameter Store,最好基于 AmazonSSMManagedInstanceCore 创建策略。

命名为 SSMManagedEC2InstanceDefaultRole。一路点 Next 创建,然后点击创建好的角色进入。

点 SSMManagedEC2InstanceDefaultRole -> Trust relationships -> Edit trust policy。

把 ec2.amazonaws.com 改为 ssm.amazonaws.com,点 Update policy。现在去做 DHMC 设置。

如上图修改 IAM Role 后点 Configure,DHMC 设置就完成了。接下来创建 EC2。

创建 EC2 时可以不设置 profile。实例元数据设置为同时使用 V1 和 V2。然后在 User-data 中放入以下代码。

#!/bin/bash
cd /tmp
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

官方文档

在 EC2 Linux 实例上安装 Systems Manager Agent 启动 Amazon EC2 Linux 实例时如何安装 AWS Systems Manager Agent(SSM Agent)?最后更新日期:2023 年 1 月 31 日。启动 Amazon Elastic Compute Cloud(Amazon EC2)Linux 实例 — aws.amazon.com

可以确认此时未设置 IAM Role。

启用 DHMC 后,即使在这种状态下 SSM Host Manager 也会将其识别为托管节点。

之后进入 Session Manager 点 Connect,就能确认连接成功。也可以像上面那样用 CLI。

输入 yum info amazon-ssm-agent 时,可以看到显示了正确的版本。


原文(韩语): tistory — 发布于 2023-02-28,已迁移至本博客。本翻译由 AI 协助完成。

评论

删除这条评论?

相关文章

AWS SSM(Systems Manager)— Session Manager · 나봄하랑