两类风险要分开看
MinIO 是对象存储服务,控制台默认 9001,S3 兼容 API 默认 9000。老版本提供固定的默认根凭据,新版本则要求通过环境变量显式设置根账号口令。因此要分开看两类风险:一是根凭据未修改或强度不足,二是桶策略配置错误造成的匿名读写——后者往往是业务为图方便打开的,与版本新旧无关。
基本信息
| 组件 | MinIO 对象存储与 S3 兼容 API |
|---|---|
| 默认端口 | 9000 S3 API,9001 控制台 |
| 根凭据 | 老版本存在固定默认值,新版本需显式设置 |
| 主要风险 | 默认或弱根口令、桶匿名读写策略、控制台公网暴露 |
| 直接影响 | 对象数据被下载或篡改、策略被修改、按量计费资源被滥用 |
| 检查工具 | mc 客户端的 alias、admin user、anonymous 子命令 |
| 收敛方向 | 强随机根口令、IAM 子账号、逐桶核查匿名策略、限制来源 |
核查项与期望
| 核查项 | mc 命令 | 期望状态 |
|---|---|---|
| 别名配置 | mc alias set | 使用专用管理凭据,不共用根账号 |
| 用户清单 | mc admin user list | 只有必要账号,无遗留测试账号 |
| 桶匿名策略 | mc anonymous get | 无匿名读与匿名写 |
| 桶列表 | mc ls | 无多余的公开测试桶 |
| 策略绑定 | mc admin policy | 按最小权限授予 |
| 访问日志 | 控制台审计与网关日志 | 匿名请求与异常下载量可发现 |
策略与账号核查(mc 客户端)
策略与账号核查(mc 客户端)
mc alias set local https://minio.example.com ACCESS_KEY SECRET_KEY
mc admin user list local
mc ls local
mc anonymous get local/<bucket> # 核查桶匿名策略
# 期望无匿名读写策略,业务访问通过 IAM 账号授权收敛要点
收敛要点
1. 根账号口令强随机并妥善保管,日常操作使用 IAM 子账号
2. 控制台 9001 不对公网开放,S3 API 9000 按业务需要限制来源
3. 新桶默认私有,逐桶核查匿名策略与桶策略
4. 关注 MinIO 安全公告并跟随版本升级
5. 审计访问日志:关注匿名请求与异常下载量典型使用场景
- 对象存储上线前的凭据与策略核查
- 季度巡检中的公开桶排查
- 渗透测试报告里数据公开可下载问题的整改
- 备份与日志归档桶的访问控制复核
- 应急时确认是否有桶被改为公开
- 审计举证:给出桶策略清单与授权关系
对象存储的公开读经常是业务为图方便打开的。核查时按桶逐一确认,比按实例确认更可靠,也更容易定位到对应的业务方。
只改根口令不核查桶策略,历史遗留的公开读桶仍允许对象被匿名下载。数据泄露风险不会因为换了口令而消失。