用户、策略与桶
对象存储的权限管理是三层叠加的结果:桶提供命名空间,用户与服务账号代表调用方身份,策略文档描述这个身份能对哪些桶和前缀做什么操作。把三者分开管理,就能做到「换人不改策略、换桶不改用户」。管理入口通常是命令行管理工具加上一套与 S3 策略语法兼容的 JSON 文档。
基本信息
| 身份类型 | 管理用户、普通用户、服务账号(供应用长期使用) |
|---|---|
| 策略形式 | JSON 文档,描述允许的资源与动作 |
| 常见动作 | 创建桶、设置配额与保留、配置生命周期、绑定策略 |
| 权限要求 | 管理操作需管理员身份,业务使用最小权限账号 |
典型使用场景
- 按业务建桶:每个应用一个桶或前缀,便于配额与成本归集
- 应用专用账号:为每个服务签发独立凭证,便于单独回收
- 只读分发:给前端账号只读权限,杜绝误删风险
- 多租户隔离:不同租户使用不同用户与桶,互不可见
- 临时授权:为外部合作方签发短期凭证或预签名链接
常用管理操作
常用管理操作
mc mb myminio/demo-bucket # 建桶
mc admin user add myminio app-reader READSECRET # 新增业务用户
mc admin policy create myminio read-only ./read.json # 自定义策略
mc admin policy attach myminio read-only --user app-reader # 绑定策略
mc admin user svcacct add myminio app-reader # 为应用签发服务账号
mc quota set myminio/demo-bucket --size 10Gi # 设置桶容量配额
mc version enable myminio/demo-bucket # 开启版本控制策略要素读法
| 要素 | 含义 | 常见错误 |
|---|---|---|
| Effect | 允许或拒绝 | 只写允许,忘了显式拒绝敏感前缀 |
| Action | 可执行的操作 | 用通配符覆盖删除等高风险动作 |
| Resource | 桶与对象前缀 | 桶级与对象级动作未分别授权 |
| 条件 | 来源、加密等约束 | 取值格式错误导致策略永不匹配 |
治理建议
- 一个应用一套凭证,禁止多个业务共用同一组密钥
- 策略按前缀细分,读权限与写权限分开授予
- 管理账号凭证不进业务配置,业务只用受限身份
- 为桶设置配额与生命周期,避免单业务吃满容量
- 定期导出账号与策略清单,核对是否存在长期未用的凭证
给应用的凭证应使用可单独撤销的服务账号,而不是直接用管理账号的密钥;这样在凭证泄露时可以只回收一个应用不影响全局。
把桶设为匿名可读前先确认数据不含个人信息与内部资料,并明确禁止列举,否则等价于把全部对象清单公开。