Wil*_*zyr 13 postgresql permissions
以下是似乎可用于创建新用户(登录)并授予对 PostgreSQL 上指定表的只读访问权限的命令列表。
让我们假设这些命令是在具有足够权限的登录时执行的(即postgres
在默认安装中登录)。
CREATE ROLE user_name NOSUPERUSER NOCREATEDB
NOCREATEROLE NOINHERIT LOGIN PASSWORD 'pwd' VALID UNTIL 'infinity';
Run Code Online (Sandbox Code Playgroud)
现在我想在 database上授予select
表,所以在这里(通过 PgAdmin 或类似的方式将数据库选为当前数据库):tab_abc
db_xyz
db_xyz
grant select on tab_abc to user_name;
Run Code Online (Sandbox Code Playgroud)
问题是:这是否足够,还是应该有更多的资助(数据库connect
,usage
也许)?
这些命令似乎对我有用,但我的默认安装具有默认安全设置。如果服务器管理员配置了更强的安全性,我应该添加哪些额外的授权?
似乎我不需要授予connect
也usage
- 在授予时是隐含的select
吗?总是这样吗?
Dan*_*ité 17
问题是:这是否足够或者应该有更多的授权(数据库连接,可能使用)?
安全性可能主要在以下几点上从默认值得到加强:
该pg_hba.conf
文件。它在考虑任何数据库权限之前过滤连接。默认情况下,本地连接相对开放,但可能仅限于明确的数据库、用户名和网络来源列表。
public的权限,任何人都拥有的伪角色。仅当将连接权限授予 时,用户才能隐式连接PUBLIC
。请参阅创建的用户无需任何授权即可访问 PostgreSQL 中的所有数据库。一个数据库可能具有从公共撤销的所有权限。有关您正在使用的主要 PostgreSQL 版本,请参阅文档中的REVOKE。
public
模式的存在。为方便起见,默认情况下它是与数据库一起创建的,但这不是强制性的。public
DBA 可以public
在新用户根本没有隐式权限时删除架构,而不是从架构中删除公共权限。
在删除这些默认值的情况下,要读取一个表,应授予新用户:
GRANT CONNECT ON DATABASE dbname TO username;
Run Code Online (Sandbox Code Playgroud)
在数据库级别:
GRANT USAGE ON SCHEMA schemaname TO username;
GRANT SELECT ON schemaname.tablename TO username;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19616 次 |
最近记录: |