d33*_*tah 16 postgresql best-practices permissions access-control
我最近想与服务器的一个用户共享定期访问权限和我认识到,一个简单的CREATE USER
和GRANT ALL ON DATABASE
命令没有让他运行一个简单SELECT
的数据。
我想将给定数据库中所有表的权限授予指定用户,但我不确定授予他对整个架构的访问权限是否是最好的主意,public
因为我不知道这是否允许某种特权升级。有没有其他办法?
Erw*_*ter 22
权限DATABASE
仅授予对数据库的一般连接权限,仅此而已。仅具有该权限的用户只能看到允许公众看到的内容。
要授予对所有表的读取访问权限,您还需要对所有模式和表的权限:
GRANT USAGE ON SCHEMA public TO myuser; -- more schemas?
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
Run Code Online (Sandbox Code Playgroud)
您可能还想为未来的模式和表设置默认权限。为在您的数据库中创建对象的每个角色运行
ALTER DEFAULT PRIVILEGES FOR ROLE mycreating_user IN SCHEMA public
GRANT SELECT ON TABLES TO myuser;
Run Code Online (Sandbox Code Playgroud)
但你真的需要先了解整个概念。
并且在组角色中捆绑特权,然后向/从用户角色授予/撤销组角色几乎总是更好。有关的:
归档时间: |
|
查看次数: |
59117 次 |
最近记录: |