基于角色的访问控制(RBAC)
API7 网关使用基于角色的访问控制(RBAC)来管理用户可在控制面中执行的操作。用户的访问权限由分配给他们的角色以及挂载到这些角色的权限策略决定。此模型确保用户只获得履行特定职责所需的权限,从而降低未经授权更改配置的风险。
角色与策略如何协同工作
- 角色将用户组织成具有特定访问级别的组。一个角色可以挂载多个权限策略。
- 权限策略精确定义允许或拒绝对哪些资源执行哪些操作。一个策略可以挂载到多个角色,也可以作为权限边界直接应用于单个用户。
用户的有效权限由分配给用户的角色和所有权限边界共同决定。有关策略编写的完整说明,请参阅权限策略和权限边界。
内置角色:Super Admin
API7 网关提供一个预定义角色:Super Admin。
- Super Admin 绑定到内置
super-admin-permission-policy,该策略授予对所有资源执行所有操作的完整权限。 - 为保护系统完整性,Super Admin 及其关联的内置策略不可编辑。
- 安装期间创建的初始管理员账户会永久绑定到 Super Admin 角色,不能降低其权限。
其他所有角色都必须创建为自定义角色,系统没有其他内置角色。
自定义角色
你可以创建自定义角色,实现细粒度访问控制。常见模式包括:
- 环境隔离——为开发、测试、预发布和生产网关组分别设置角色,使工程师可以修改非生产环境而不影响生产环境。
- 按团队授权——创建一个“支付团队”角色,使其能够管理特定网关组中的服务和路由,但不能查看或修改其他团队拥有的服务。
- 按职能授权——创建一个“安全审计员”角色,使其对所有网关组中的审计日志、消费者和凭证具有只读权限。
- 委派管理——创建一个“角色管理员”角色,使其可以管理用户和角色,但不能修改网关流量配置。
创建自定义角色
- 在 API7 控制台中,转到 Organization > Roles。
- 点击 Create Role。
- 提供角色名称和说明。
- 为角色挂载一个或多个权限策略。有关策略定义方式,请参阅权限策略和权限边界。
- 保存角色。
包含策略示例、角色分配和验证的完整操作流程,请参阅创建自定义角色。
自定义角色可以更新或删除。当前已分配给用户的角色不能直接删除;请先解除该角色与所有用户的关联,再删除角色。
为用户分配角色
角色创建后,可以将其分配给一个或多个用户。
- 转到 Organization > Users。
- 选择现有用户或邀请新用户。
- 为用户挂载一个或多个角色。
- 如果启用了单点登录,可以把 IdP 组或属性映射到 API7 角色,而不必手动分配。有关角色映射规则,请参阅控制台单点登录(SSO)。
授权模型
用户执行操作时,API7 会根据用户所有角色挂载的每项策略以及直接应用于用户的权限边界评估请求。只有同时满足以下所有条件,才会授予访问权限:
- 至少一个已分配角色允许该操作。
- 用户设置的所有权限边界(如果有)也允许该操作。
- 没有角色或边界明确拒绝该操作。
只要有一条拒绝语句,即使其他策略允许该操作,也会阻止访问。“拒绝优先于允许”是安全委派的基本原则。
最佳实践
- 最小权限——只授予用户完成工作所需的最低权限。使用网关组 ID、服务 ID 或标签缩小资源范围,避免使用通配符。
- 分离策略管理与策略使用——只允许少数可信管理员创建和更新角色及策略,大多数用户仅获得预先批准的角色。
- 使用标签实现规模化管理——管理大量网关组或服务时, 在权限策略中使用基于标签的条件,不要逐个列举资源 ID。
- 定期审查分配——定期审计角色分配和权限策略,不再需要的权限应立即移除。