SQL 存储后端的权限管理
本文件旨在为用户提供在使用 SQL 存储后端时设置和管理权限的指南。
简介
为了处理权限,舵机利用了 Kubernetes 的 RBAC 功能。在使用 SQL 存储后端时,Kubernetes 的角色不能用于确定用户是否可以访问给定资源。本文档说明了如何创建和管理这些权限。
初始化
舵机 CLI 第一次连接到数据库时,客户端将确保它已先前初始化。如果未初始化,它将自动完成必要的设置。此初始化需要在公共模式上具有管理员权限,或者至少能够
- 创建表
- 授予公共模式上的权限
在数据库上运行迁移后,所有其他角色都可以使用客户端。
授予 PostgreSQL 中的非管理员用户权限
为了管理权限,SQL 后端驱动利用了 PostgreSQL 的 RLS(行级安全) 功能。RLS 允许所有用户能够从同一张表读写,但如果未明确授权,则不能操纵相同的行。默认情况下,任何未明确授予权限的角色在运行 helm list
时总是返回空列表,并且不能检索或修改集群中的任何资源。
让我们看看如何授予给定角色对特定命名空间的访问权限
CREATE POLICY <name> ON releases_v1 FOR ALL TO <role> USING (namespace = 'default');
此命令将授予角色 role
读取和写入满足 namespace = 'default'
条件的所有资源的权限。创建此策略后,以角色 role
身份连接到数据库的用户将能够在运行 helm list
时看到驻留在 default
命名空间中的所有版本,并能够修改和删除它们。
可以使用 RLS 以细粒度方式管理权限,并且可能需要根据表中的不同列来限制访问权限
- 键
- 类型
- 主体
- 名称
- 命名空间
- 版本
- 状态
- 所有者
- 创建时间
- 修改时间