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

如何限制EC2服务器上Linux用户的特定AWS CLI命令执行权限

限制EC2 Linux用户执行特定AWS CLI命令的方法

针对EC2服务器上Linux用户的AWS CLI命令限制需求,以下是几种实用方案:

方案1:Shell别名拦截(快速实现)

通过给用户的shell配置添加别名,直接拦截禁止的命令:

  1. 编辑用户的~/.bashrc(或~/.profile,依shell类型而定),添加以下内容:
alias aws='function _aws_restrict() {
    if [[ "$1" == "secretsmanager" ]]; then
        echo "错误:该命令已被限制执行"
        return 1
    else
        command aws "$@"
    fi
}; _aws_restrict'
  1. 让配置生效:source ~/.bashrc

注意:此方法简单易操作,但用户可通过直接调用AWS CLI的绝对路径(如/usr/bin/aws secretsmanager ...)绕过限制,适合对权限要求不极高的场景。

方案2:自定义脚本替换AWS CLI调用(较难绕过)

通过修改用户PATH优先级,用自定义脚本替代默认AWS CLI调用:

  1. 创建自定义脚本/usr/local/bin/aws,内容如下:
#!/bin/bash
# 拦截禁止的命令
if [[ "$1" == "secretsmanager" ]]; then
    echo "错误:该命令已被限制执行"
    exit 1
fi
# 调用真实的AWS CLI
exec /usr/bin/aws "$@"
  1. 给脚本添加执行权限:chmod +x /usr/local/bin/aws
  2. 确保用户的PATH环境变量中/usr/local/bin在/usr/bin之前(默认通常满足)

此方法拦截更彻底,除非用户知晓真实CLI路径并直接调用,否则无法执行禁止命令。

方案3:IAM权限边界+用户层面限制(双重保障)

从IAM根源限制权限,配合用户层面拦截实现双重防护:

  1. 给EC2关联的IAM角色添加权限边界,仅允许s3和iam相关操作,示例策略:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:*",
                "iam:*"
            ],
            "Resource": "*"
        }
    ]
}
  1. 同时搭配上述任意一种用户层面的命令拦截方法

此方案最安全,即使用户绕过shell限制,IAM权限也会直接拒绝secretsmanager相关请求,从根源解决权限过大问题。

内容的提问来源于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.16 09:52:27