无需分发SSH密钥的EC2访问授权:最佳实践及实现方案咨询
基于IAM的EC2细粒度访问控制实现
- 核心逻辑:用IAM策略锁定用户可访问的EC2实例范围,搭配无密钥登录方式替代SSH密钥,权限通过IAM资源的修改/移除即时生效。
- 操作步骤:
- 创建IAM身份实体:给需要访问EC2的人员创建IAM用户,或按权限维度划分用户组,便于批量管理。
- 编写实例级限制策略:通过指定资源ARN,限制用户仅能对目标EC2实例执行登录相关动作。示例策略(适配Session Manager):
把{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:区域ID:账号ID:instance/实例ID", "arn:aws:ssm:区域ID:账号ID:*" ] } ] }实例ID替换为目标EC2的实际ID,就能实现单实例访问限制。 - 启用无密钥登录:
- 选EC2 Instance Connect:确保实例预装对应插件(Amazon Linux 2、Ubuntu 16.04+默认自带),用户通过AWS控制台或CLI命令发起登录,无需本地存密钥。
- 选Session Manager:给EC2实例附加
AmazonSSMManagedInstanceCore角色,用户直接通过控制台或aws ssm start-session命令连接,无需开放SSH端口。
- 权限撤销:直接删除用户关联的策略、移除用户组,或修改策略缩小资源范围,权限立即生效,无需回收密钥。
基于AWS Directory Service的EC2访问控制实现
- 核心逻辑:将EC2实例接入AWS托管的AD域,用域账号统一管理登录权限,权限管控和撤销完全通过AD完成,适配习惯AD架构的企业。
- 操作步骤:
- 创建托管AD目录:在AWS控制台创建AWS Managed Microsoft AD,设置域名、管理员账号等基础信息。
- EC2实例加入域:
- Windows实例:通过EC2控制台的“加入域”功能,输入AD域名和管理员凭证完成配置。
- Linux实例:安装SSSD等域客户端工具,配置AD认证集成,让实例识别域账号。
- 配置AD权限规则:在AD中创建用户/用户组,通过组策略(GPO)设置“允许本地登录”权限仅对指定EC2实例生效,实现实例级访问限制。
- 权限撤销:在AD中禁用用户账号、移除用户组,或修改组策略,用户即刻无法登录对应实例,无需操作EC2端资源。
其他推荐服务
- AWS Systems Manager Session Manager:最推荐的替代方案,完全摒弃SSH密钥,所有连接通过SSM中转:
- 细粒度控制:IAM策略可精确到单个EC2实例;
- 即时权限回收:修改/删除IAM策略后,用户无法发起新连接,已建立的会话也可强制终止;
- 审计溯源:所有会话操作记录到CloudTrail,便于合规检查。
- AWS IAM Identity Center(原SSO):适合多AWS账号/多服务的企业,统一管理用户身份,给用户分配指定EC2实例的权限集,权限集中管控,撤销只需移除用户的权限分配即可。
内容的提问来源于stack exchange,提问作者Ajit Kumar
相关产品推荐
相关产品推荐

