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

如何为非根用户启用S3存储桶MFA Delete?及相关报错解决

解决S3 MFA Delete非根用户权限配置及InvalidAccessKeyId报错问题

首先得明确一个核心规则:S3的MFA Delete功能只能由根用户启用/禁用,非根用户根本没权限修改这个配置——你之前用根凭证开启MFADelete=Enabled的操作是完全正确的。非根用户能做的,是在MFA Delete启用后,拿到带MFA条件的权限,再配合自己的MFA验证码执行需要验证的操作(比如删除版本化对象)。

接下来咱们一步步解决你的问题:

先搞定InvalidAccessKeyId报错

你碰到的这个错误,十有八九是执行DeleteObject时用错了凭证:

  • 是不是你想切换到非根用户操作,但本地AWS CLI还在沿用根用户的凭证?或者你输入的非根用户Access Key ID压根不对?
  • 先检查当前CLI用的是谁的凭证:
    1. 运行aws configure list,看看输出里的access_key是不是目标非根用户的。
    2. 如果不是,用aws configure --profile <你的非根用户配置名>重新配置,输入正确的Access Key ID、Secret Access Key和区域。
    3. 执行删除命令时记得指定profile:aws s3api delete-object --bucket <你的桶名> --key <对象路径> --version-id <版本ID> --mfa "arn:aws:iam::<你的账号ID>:mfa/<非根用户名> <MFA验证码>" --profile <你的非根用户配置名>

给非根用户配置MFA Delete相关权限

要让非根用户能执行需要MFA的S3操作,得给它配置带MFA条件的IAM策略,步骤如下:

1. 先给非根用户启用MFA

首先得确保目标用户已经绑定了虚拟MFA设备:

  • 进入IAM控制台,找到这个用户,在「安全凭证」标签下点击「分配MFA设备」,跟着提示用Google Authenticator这类工具完成绑定。

2. 创建带MFA条件的IAM策略

创建一个自定义策略,只允许用户在提供有效MFA的情况下执行指定S3操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObject",
                "s3:DeleteObjectVersion"
            ],
            "Resource": "arn:aws:s3:::<你的桶名>/*",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::<你的桶名>",
            "Condition": {
                "Bool": {
                    "aws:MultiFactorAuthPresent": "true"
                }
            }
        }
    ]
}
  • 把<你的桶名>换成实际桶名即可;要是需要让用户上传时也验证MFA,就把s3:PutObject加到Action列表里。

3. 把策略附加给目标用户

回到IAM控制台的用户页面,在「权限」标签下点击「添加权限」→「附加现有策略直接」,选择你刚创建的自定义策略。

4. 验证操作是否正常

用非根用户的凭证执行删除命令试试:

aws s3api delete-object --bucket <你的桶名> --key test.txt --version-id <对象的版本ID> --mfa "arn:aws:iam:123456789012:mfa/john-doe 123456"
  • 注意--mfa的格式:MFA设备ARN + 空格 + 实时生成的MFA验证码,别漏了中间的空格。

几个容易踩的坑

  • 别试图让非根用户修改MFA Delete的配置(比如用put-bucket-versioning设置MFADelete=Enabled),这个操作只有根用户能做,哪怕非根用户有管理员权限也不行。
  • 确认非根用户的MFA设备绑定正确,验证码要实时获取(30秒有效期),别用过期的。
  • CLI执行命令时一定要确认用的是目标非根用户的凭证,别根用户和非根用户的配置混着用。

内容的提问来源于stack exchange,提问作者Rajat Shah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:43:02