如何配置IAM用户仅拥有S3对象上传权限,禁止删除、列取操作
问题原因
你当前的配置仅做了最小权限允许,但没有显式禁止不需要的操作。如果该IAM用户继承了所属用户组、身份策略的其他S3允许权限,就会出现仍可执行删除、列取操作的问题。Wasabi完全兼容S3的IAM权限评估逻辑:显式拒绝 > 任意允许 > 隐式拒绝,只需按以下步骤配置即可解决。
配置步骤
- 清理多余权限
- 检查指定IAM用户及所属用户组附加的所有权限策略,删除包含
s3:DeleteObject、s3:ListBucket、s3:*这类通配或多余允许规则的策略,仅保留你之前配置的仅允许s3:PutObject的策略即可。
- 补充桶策略的显式拒绝规则
显式拒绝是避免多余权限生效的最可靠方案
替换你现有的桶策略为以下内容,注意替换所有占位符:
你的Wasabi账号ID:可在Wasabi控制台账号设置页查询指定IAM用户名:你要限制权限的IAM用户名称my_bucket:替换为你的实际存储桶名称
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicRead", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my_bucket/*" }, { "Sid": "DenyRestrictedActions", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::你的Wasabi账号ID:user/指定IAM用户名" }, "Action": [ "s3:DeleteObject", "s3:ListBucket", "s3:PutObjectAcl", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::my_bucket", "arn:aws:s3:::my_bucket/*" ] } ] }
补充说明:
- 额外添加
s3:PutObjectAcl的拒绝规则,避免用户上传对象时修改ACL绕开权限控制 s3:ListBucket作用于桶本身资源(不带/*后缀),因此Resource配置需要同时包含桶和对象的ARN
- 验证配置
使用该IAM用户的凭证调用列取、删除对象接口,会返回403权限错误,仅上传对象接口可正常调用。
内容的提问来源于stack exchange,提问作者Tsuchida Wataru
相关产品推荐
相关产品推荐

