如何限制MinIO存储桶文件删除?权限配置疑问及异常排查
为什么用户仍能获取存储桶对象?
MinIO默认情况下,存储桶策略仅对匿名请求生效,经过身份验证的用户(比如你配置了IAM策略的这个用户)会忽略存储桶策略的规则。你的用户已经通过IAM策略获得了s3:*的全局允许权限,而存储桶的Deny策略因为默认不作用于认证用户,所以无法覆盖用户的Allow权限。
要让存储桶策略对认证用户生效,需要在MinIO配置中开启policy_enforce参数(可通过启动参数--policy-enforce或配置文件设置)。
如何拒绝存储桶的读取/删除操作?
有两种可靠方式:
- 修改用户的IAM策略:直接在用户策略中添加Deny语句,限制特定存储桶的读取/删除操作,示例如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Effect": "Deny", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:DeleteBucket" ], "Resource": [ "arn:aws:s3:::images/*", "arn:aws:s3:::images" ] } ] }
这种方式无需额外配置,直接作用于用户,优先级最高。
- 启用存储桶策略对认证用户生效:先开启
policy_enforce配置,再修改存储桶策略(建议指定具体用户ARN而非*,避免影响其他用户),示例如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/your-readwrite-user" ] }, "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:DeleteBucket" ], "Resource": [ "arn:aws:s3:::images/*", "arn:aws:s3:::images" ] } ] }
是否可以对minioadmin进行此类权限限制?
默认情况下,minioadmin是MinIO的根管理员用户,拥有所有资源的完全权限,无法通过普通IAM策略或存储桶策略限制其权限。但可通过以下方式实现类似限制:
- 使用
mc admin policy attach命令为minioadmin附加自定义策略,覆盖其默认权限(操作需谨慎,避免锁死管理员权限); - 创建新的管理员用户并分配受限权限,之后禁用
minioadmin用户(通过修改MinIO根凭证配置)。
内容的提问来源于stack exchange,提问作者Nazar Kalytiuk
相关产品推荐
相关产品推荐

