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

如何让IAM用户通过CyberDuck访问指定S3 Bucket?权限策略问题排查

解决IAM用户通过CyberDuck访问S3 Bucket的问题

嗨,我看你已经折腾了权限策略但还是没法用CyberDuck访问S3桶,咱们一步步来排查和解决这个问题:

1. 先理清策略类型的问题

你提供的策略里带有Principal字段,这其实是Bucket Policy的写法——用来控制外部身份访问桶的权限。但如果是给你自己账号下的IAM用户授权,更直接清晰的方式是给该用户附加专属的IAM权限策略,当然也可以修正Bucket Policy,下面两种方案任选:

方案一:给IAM用户附加专属权限策略

先删掉你当前的Bucket Policy,然后给目标IAM用户创建并附加以下策略(记得替换占位符为你的实际信息):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::YOUR_BUCKET_NAME",
                "arn:aws:s3:::YOUR_BUCKET_NAME/*"
            ]
        }
    ]
}
  • 为啥要加ListAllMyBuckets和GetBucketLocation?因为CyberDuck这类客户端需要先列出你的桶才能显示,很多人只加了桶内对象的权限,结果连桶列表都看不到,自然没法访问内容。
  • 必须同时包含桶本身(arn:aws:s3:::YOUR_BUCKET_NAME)和桶内对象(arn:aws:s3:::YOUR_BUCKET_NAME/*)的权限,缺一个都不行。

方案二:修正Bucket Policy(如果坚持用这种方式)

如果你想用Bucket Policy来授权,得确保资源包含桶本身,并且Principal的ARN完全正确,修正后的策略如下:

{
    "Version": "2012-10-17",
    "Id": "PolicyXXXXXXXXXXX",
    "Statement": [
        {
            "Sid": "xxxxxxxxxx",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::YOUR_ROOT_ACCOUNT_ID:user/IAM_USER_NAME"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::YOUR_BUCKET_NAME",
                "arn:aws:s3:::YOUR_BUCKET_NAME/*"
            ]
        }
    ]
}

2. 检查IAM用户的访问密钥

别忘记给这个IAM用户生成Access Key ID和Secret Access Key——CyberDuck这类客户端完全依赖这两个密钥做身份认证。如果还没生成,去IAM控制台找到该用户,进入「安全凭证」标签,点击「创建访问密钥」,一定要保存好这两个值(Secret Access Key只能查看一次)。

3. 检查Bucket的公有访问设置

有时候权限策略没问题,但S3的公有访问阻止设置会干扰。去S3控制台找到你的桶,进入「权限」标签查看「阻止公有访问」:

  • 如果你开启了「阻止所有公有访问」,对于本账号的IAM用户来说一般不会受影响,但如果还是访问失败,可以临时关闭测试(测试完记得重新开启,保证桶的安全)。

4. CyberDuck的配置细节要注意

在CyberDuck里添加S3连接时:

  • 服务器地址填s3.amazonaws.com(如果是AWS中国区,要填对应区域的地址,比如s3.cn-north-1.amazonaws.com.cn)
  • 用户名填你的Access Key ID,密码填Secret Access Key
  • 可以在「更多选项」里直接指定桶名,这样就能直接进入目标桶,避免因列表权限问题导致的访问失败。

5. 快速排查权限问题的小技巧

如果还是不行,你可以用AWS CLI测试:用该IAM用户的密钥配置CLI,然后执行aws s3 ls s3://YOUR_BUCKET_NAME命令。如果能列出桶内对象,说明权限没问题,大概率是CyberDuck的配置问题;如果命令也报错,那就是权限策略还没配置对,再回头检查策略的ARN和资源范围。

内容的提问来源于stack exchange,提问作者Karim N Gorjux

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:32:25