在Debian系统上,PostgreSQL的权限管理主要通过角色和权限系统来实现。以下是Debian PostgreSQL权限管理策略的详细说明:
1. 角色和用户管理
-
创建角色和用户:
- 使用
CREATE ROLE
命令创建角色(用户)。例如,创建一个可登录角色:CREATE ROLE readonly1 WITH LOGIN PASSWORD 'your_secure_password';
- 使用
CREATE USER
命令创建用户,并可以指定角色:CREATE USER user1 WITH PASSWORD 'secret_pass'; GRANT readonly1 TO user1;
- 使用
-
删除角色和用户:
- 删除角色及其所有权限:
DROP ROLE user1;
- 删除角色及其所有权限:
2. 权限分配
-
数据库级别权限:
- 授予用户访问特定数据库的权限:
GRANT ALL PRIVILEGES ON DATABASE db1 TO user1;
- 撤销用户对特定数据库的权限:
REVOKE ALL PRIVILEGES ON DATABASE db1 FROM user1;
- 授予用户访问特定数据库的权限:
-
模式级别权限:
- 授予用户访问特定模式的权限:
GRANT USAGE ON SCHEMA public TO user1;
- 授予用户访问特定模式的权限:
-
表级别权限:
- 授予用户访问特定表的权限:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO user1;
- 授予用户访问特定表的权限:
-
序列级别权限:
- 授予用户访问特定序列的权限:
GRANT SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA public TO user1;
- 授予用户访问特定序列的权限:
3. 默认权限设置
- 修改未来创建对象的默认权限:
- 使用
ALTER DEFAULT PRIVILEGES
命令设置未来创建对象的默认权限:ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO user1;
- 使用
4. 权限审计和查看
-
查看用户权限:
- 使用
\du
命令查看用户和角色的权限:\du
- 使用
-
查看表级权限明细:
- 查询表级权限明细:
SELECT table_catalog, table_schema, table_name, privilege_type FROM information_schema.table_privileges WHERE grantee = 'user1';
- 查询表级权限明细:
5. 高级权限管理
-
用户关联角色:
- 创建用户并绑定角色:
CREATE USER user2 WITH PASSWORD 'new_secure_password'; GRANT readonly1 TO user2;
- 创建用户并绑定角色:
-
密码维护:
- 修改用户密码:
ALTER USER user2 WITH PASSWORD 'new_secure_password';
- 修改用户密码:
-
权限回收:
- 撤销现有表权限:
REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM user2;
- 撤销现有表权限:
-
角色删除:
- 安全删除角色(需逐库执行):
REASSIGN OWNED BY user2 TO new_role; DROP OWNED BY user2;
- 安全删除角色(需逐库执行):
通过上述策略,Debian系统上的PostgreSQL可以实现细粒度的权限管理,确保数据库的安全性、完整性和操作的高效性。