FEATURED · 精选文章

给 RustFS 拆多租户权限:IAM 用户、组与策略的实战

发布时间 / 2026/9/3 15:51:43
来源 / 创域科博编辑部
栏目 / 资讯中心
给 RustFS 拆多租户权限:IAM 用户、组与策略的实战 一次生产事故让我记住了权限模型的重要性有个团队把rustfsadmin这个根账号的 key 直接下发给了三个业务组结果其中一个组的脚本误删了另一个组的桶。根账号在 RustFS 里绕过所有策略检查出事根本拦不住。RustFS 内置了一套以 AWS IAM 策略语言为模型的身份与访问管理系统能让你像管 AWS 一样把权限拆到用户、组、服务账户甚至接外部 IdP 做单点登录。这篇文章把身份类型和策略评估讲透并给一条可落地的拆分路线。1. 问题背景根账号不是给你天天用的RustFS 启动时通过RUSTFS_ACCESS_KEY/RUSTFS_SECRET_KEY创建的是根凭证它拥有所有者语义绕过所有策略检查。文档原话是「根账户绕过策略检查」。这把钥匙只该用来引导部署——创建第一批 IAM 用户和服务账户然后日常操作全走这些受控身份。我习惯的做法是部署完第一件事就用根账号建一个consoleAdmin的管理员用户把根 key 收进密钥库不再日常使用。剩下的按业务线拆用户、按团队拆组。2. RustFS 的五类身份RustFS 区分的身份类型来源是官方 IAM 文档根凭证启动时环境变量创建仅用于初始设置和紧急管理。IAM 用户控制台或管理 APIadd-user创建面向人或应用的长期命名账户。组控制台或管理 APIupdate-group-members创建一次把一组策略挂到多个用户成员继承所属每个组的策略。服务账户访问密钥add-service-account创建属于某个父用户的派生凭证继承父用户权限可加嵌入式会话策略进一步收窄还能设过期时间——适合 CI、脚本这类非人操作。STS 临时凭证通过AssumeRole/AssumeRoleWithWebIdentity获取有效期15 分钟到 12 小时带访问密钥、秘密密钥和会话令牌。外部 OIDC 身份Keycloak、Authing 等标准 OIDC IdP 做控制台 SSOID 令牌里的groups/roles声明映射到 RustFS 策略名再签发 STS 凭证。3. 内置策略与自定义策略RustFS 自带五个内置canned策略覆盖大多数场景readwrite、readonly、writeonly、diagnostics、consoleAdmin。日常八成需求靠这几个就够了。需要更细的粒度时写一条 AWS IAM 兼容的 JSON 策略文档挂上去。比如只允许某个应用读写app-a桶{Version:2012-10-17,Statement:[{Effect:Allow,Action:[s3:GetObject,s3:PutObject,s3:ListBucket],Resource:[arn:aws:s3:::app-a,arn:aws:s3:::app-a/*]}]}策略是具名 JSON 文档存进 RustFS通过控制台或管理 APIset-user-or-group-policy绑定到用户或组。一个用户可挂多条策略组里的成员还会叠加组的策略。4. 策略评估语义显式拒绝优先理解评估顺序才能不写出「以为允许其实被拒」的策略。RustFS 合并一个身份的所有策略语句后按这个次序判显式拒绝优先只要有匹配的Deny语句不管有没有Allow一律拒绝。所有者快捷没有匹配显式拒绝时根所有者账户直接放行。必须显式允许其他身份至少要有匹配的Allow语句。默认拒绝没有任何语句匹配请求被拒。服务账户和带会话策略的 STS 会话有效权限取交集——父身份策略和会话策略都必须允许。这条对「临时给外包人员开一个只读、且只能访问某个前缀的凭证」特别好用父用户本来有全量权限但会话策略把它收窄到只读 单前缀。5. 一条可落地的拆分路线我建议按这四步把权限体系建起来用根账号创建一个consoleAdmin管理员用户收起根 key。按团队建组如team-data、team-ml挂readwrite或自定义策略。每个业务线建 IAM 用户加入对应组CI/脚本走服务账户并设过期时间。如果已经有 Keycloak / Authing 这类 IdP直接接 OIDC SSO让研发用公司账号登录控制台权限由 IdP 的groups声明驱动。一个中性提醒根凭证无法被策略限制所以千万不要把它当日常账号下发。另外服务账户没有自己的策略绑定它继承父用户——给服务账户收窄权限要靠创建时嵌入的会话策略而不是单独挂策略。6. 总结与下一步RustFS 的 IAM 是 AWS IAM 兼容模型意味着你现有的策略知识和工具链基本能直接搬。先把根账号收好再用「用户 组 内置策略」三件套把日常权限管起来需要跨系统统一身份就上 OIDC。下一步可以打开控制台试建一个readonly用户、用mc配它的 key 验证只能读不能写多集群场景再去看站点复制和跨桶复制的权限怎么配。以下是深入学习 RustFS 的推荐资源RustFS官方文档 RustFS 官方文档- 提供架构、安装指南和 API 参考。GitHub 仓库 GitHub 仓库 - 获取源代码、提交问题或贡献代码。社区支持 GitHub Discussions- 与开发者交流经验和解决方案。意见反馈GitHub Issues
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻