You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制SSH用户不获取EC2实例绑定的IAM角色权限?

解决EC2实例SSH用户滥用IAM角色权限的方案

问题背景

  • Context:EC2实例绑定的IAM角色权限被SSH登录用户意外获取,需要限制SSH用户登录时不自动继承该角色权限。
  • Issue:A、B团队仅能访问各自对应的AWS服务,但某EC2实例绑定的IAM角色拥有部分服务的Get:*权限(供应用运行),任意团队用户登录实例后可通过该角色访问受限资源,违反权限规则。
  • Expectation:实现SSH登录用户无法访问其他团队AWS资源的安全限制。

可行解决方案

1. 剥离实例IAM角色,为应用单独分配权限

移除EC2实例绑定的IAM角色,改为给应用单独配置专用凭证:

  • 创建仅授予应用所需Get:*权限的IAM角色/用户,将凭证通过AWS Secrets Manager或Systems Manager参数存储进行安全管理。
  • 应用启动时从上述存储中加载凭证,不再依赖实例元数据获取权限。这样SSH登录用户默认无任何实例关联的IAM权限,只能使用自身的IAM凭证操作。

2. 用SSM会话管理器替代SSH登录

禁用EC2的直接SSH访问,改用AWS Systems Manager会话管理器:

  • 关闭EC2安全组的SSH端口(22),配置用户的IAM权限仅允许通过SSM登录实例。
  • 强制用户登录时使用自身团队的IAM角色,而非继承实例角色。同时通过IAM策略限制用户无法访问实例元数据服务(IMDS)的凭证接口,彻底阻断获取实例角色权限的路径。

3. 限制实例元数据的访问范围

通过配置EC2实例元数据服务(IMDS),仅允许应用进程访问实例角色凭证:

  • 启用IMDSv2,要求访问元数据时必须携带会话令牌,增加访问门槛。
  • 在实例IAM角色的信任策略中添加条件,限制只有应用运行的系统用户(例如appuser)能获取角色临时凭证。SSH登录的普通用户因不符合条件,无法调用元数据服务获取权限。

4. 团队访问隔离优化

如果业务允许,对实例或应用进行隔离:

  • 拆分实例:为A、B团队分别部署独立的EC2实例,各自绑定仅对应团队权限的角色,避免跨团队访问同一实例。
  • 容器化隔离:将应用部署到Docker或Kubernetes容器中,每个团队的应用运行在独立容器内,用户仅能进入自身团队的容器环境,无法接触到实例级别的IAM角色权限。

内容的提问来源于stack exchange,提问作者Nitin G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:15:09