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

如何为IAM用户分配角色?解决S3接口权限拒绝问题

解决IAM用户David假定角色并执行S3操作的问题

核心问题

你直接用David的访问密钥执行aws s3 ls时触发权限错误,原因有两个:一是David本身没有S3操作权限,二是David未被授权调用sts:AssumeRole来获取目标角色的临时凭证——只有拿到角色的临时凭证,才能用角色的权限执行S3操作。

具体解决步骤

1. 给David添加假定角色的权限

给IAM用户David附加一条策略,允许他调用sts:AssumeRole到目标角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::你的实际账号ID:role/你的目标角色名称"
        }
    ]
}

替换其中的你的实际账号ID和你的目标角色名称为真实值。

2. 通过CLI获取角色临时凭证

用David的访问密钥执行以下命令,获取目标角色的临时身份凭证:

aws sts assume-role --role-arn "arn:aws:iam::你的实际账号ID:role/你的目标角色名称" --role-session-name "David-S3-Session"

执行后会返回包含AccessKeyId、SecretAccessKey、SessionToken的临时凭证数据。

3. 使用临时凭证执行S3操作

有两种便捷方式使用临时凭证:

  • 方式一:设置环境变量

    export AWS_ACCESS_KEY_ID="返回的临时AccessKeyId"
    export AWS_SECRET_ACCESS_KEY="返回的临时SecretAccessKey"
    export AWS_SESSION_TOKEN="返回的临时SessionToken"
    

    之后直接执行aws s3 ls即可。

  • 方式二:CLI命令直接指定凭证

    aws s3 ls --access-key "返回的临时AccessKeyId" --secret-key "返回的临时SecretAccessKey" --session-token "返回的临时SessionToken"
    

4. 可选:配置CLI角色快捷配置文件

为了避免每次手动输入临时凭证,可在~/.aws/config(Linux/macOS)或C:\Users\你的用户名\.aws\config(Windows)中添加如下配置:

[profile david-s3-role]
role_arn = arn:aws:iam::你的实际账号ID:role/你的目标角色名称
source_profile = david

其中source_profile是你之前用aws configure配置的David的配置文件名称。之后直接用以下命令执行操作:

aws s3 ls --profile david-s3-role

关键验证点

  • 确认角色信任策略中Principal的ARN已替换Account-ID为真实AWS账号ID
  • 确认David的权限策略中Resource指向的角色ARN完全正确
  • 假定角色时的role-arn必须和信任策略中的角色ARN完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:01:24