What are AWS SSM and SSM Agent, how they work?

Table of Contents

AWS SSM 和 SSM Agent 是什么?

AWS Systems Manager (SSM)

AWS Systems Manager 是一项服务,提供了一个集中式界面,用于管理 AWS 资源(如 EC2 实例、RDS 数据库)和本地服务器。它可以帮助管理员自动化常见管理任务,例如软件更新、配置管理和系统监控。

SSM Agent

SSM Agent 是安装在 EC2 实例或本地服务器上的一个轻量级客户端软件,用于接收来自 AWS Systems Manager 的命令并执行它们,例如运行脚本、安装更新、收集日志等。


AWS SSM 的用途

  1. 远程管理:

    • 允许通过 AWS 控制台或 CLI 远程管理 EC2 实例或本地服务器,而无需手动登录。
  2. 自动化任务:

    • 自动化任务,如补丁管理、软件分发和定期备份。
  3. 运行命令:

    • 在多个实例上同时执行脚本或命令。
  4. 配置管理:

    • 使用参数存储管理配置数据和密钥。
  5. 合规性和审计:

    • 实现配置合规性检查和审计,确保系统配置符合安全标准。

SSM Agent 的用途

  1. 接收和执行命令:

    • 从 Systems Manager 服务接收命令,如“运行脚本”或“安装软件”,并在本地执行。
  2. 与 Systems Manager 集成:

    • 通过 Agent,SSM 服务可以与 EC2 实例或本地服务器无缝交互。
  3. 参数存储:

    • 支持从 AWS SSM 参数存储安全获取配置值和密钥。
  4. 日志收集:

    • 将实例日志推送到 AWS CloudWatch 或 S3 以供分析。

AWS SSM 和 SSM Agent 的工作原理

1. 安装和配置 SSM Agent

  • SSM Agent 默认预安装在 Amazon Linux、Ubuntu、Windows Server 和部分 AWS Marketplace AMI 中。
  • 对于其他操作系统,可以手动安装。

2. 实例与 SSM 服务的通信

  • 实例配置文件(IAM Role):

    • EC2 实例需要一个 IAM Role,其中包含 AmazonSSMManagedInstanceCore 权限,允许 SSM Agent 向 AWS Systems Manager 服务注册并发送请求。
  • 通信方式:

    • SSM Agent 使用 HTTPS 通信,确保安全传输。
    • Agent 会定期轮询 AWS Systems Manager 服务,检查是否有命令需要执行。

3. 命令执行流程

  • 管理员通过 AWS 控制台、CLI 或 SDK 发出命令。
  • SSM 服务将命令发送到目标实例的 SSM Agent。
  • SSM Agent 执行命令并返回结果给 SSM 服务。
  • 管理员可通过 SSM 控制台查看命令执行结果。

4. 参数存储的使用

  • 系统管理员可以在 AWS SSM 参数存储中存储配置数据或敏感信息(如数据库密码)。
  • SSM Agent 可以通过安全 API 获取这些参数,并在本地应用。

示例:AWS SSM 执行命令

场景:在多台 EC2 实例上安装 NGINX

  1. Step 1: 设置 IAM Role

    • 确保实例附加的 IAM Role 含有 AmazonSSMManagedInstanceCore 权限。
  2. Step 2: 发出命令
    使用 AWS CLI 发出命令:

    aws ssm send-command \
       --document-name "AWS-RunShellScript" \
       --targets "Key=tag:Environment,Values=Production" \
       --parameters 'commands=["sudo yum install -y nginx", "sudo systemctl start nginx"]' \
       --region us-east-1
  3. Step 3: 检查状态
    在 Systems Manager 控制台查看命令状态,确保所有实例都成功执行了命令。


示例:SSM 参数存储

场景:安全存储数据库密码

  1. Step 1: 存储密码
    使用 CLI 将密码存储到 SSM 参数存储:

    aws ssm put-parameter \
       --name "DBPassword" \
       --value "MySecurePassword123" \
       --type "SecureString"
  2. Step 2: 从实例访问密码
    在目标实例上,运行以下命令以获取密码:

    aws ssm get-parameter --name "DBPassword" --with-decryption

AWS SSM 和 SSM Agent 的优势

  1. 无需手动登录:

    • 不需要暴露 SSH/RDP 端口即可管理实例,减少安全风险。
  2. 集中化管理:

    • 管理分布在不同区域和账户中的实例。
  3. 自动化:

    • 自动执行重复性任务,节省时间。
  4. 高安全性:

    • 使用参数存储加密敏感信息。
    • 与 IAM Role 集成,提供最小权限访问。
  5. 跨平台支持:

    • 支持多种操作系统和本地数据中心服务器。

总结

AWS SSM 是一种强大的管理工具,用于简化 AWS 环境的操作、监控和配置,而 SSM Agent 是它的客户端组件,负责在实例或服务器上接收和执行命令。二者结合提供了灵活、自动化且安全的资源管理方式。

Comments |0|

Legend *) Required fields are marked
**) You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Category: 似水流年