PostgreSQL 11 新特性解读 : 可通过GRNAT权限下放的四个系统函数

  • 时间:
  • 浏览:2

以上看出,将函数pg_ls_dir()的执行权限赋给普通用户后,普通用户依然这样权限执行。

pg_read_file()函数可不还要显示数据库服务端文本文件的内容,11版本前这样超级用户才有权限调用。

pg_ls_dir()函数可不还要列出数据库服务端数据目录的文件,11版本前这样超级用户才有权限调用。

将函数 pg_ls_dir()的可执行权限赋给普通用户 role11 。

以role11用户登录francs库测试,如下:

链接:https://item.jd.com/12405774.html

以上显示这样超级用户才有权限。

最后推荐和张文升同時 编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级形态、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,带有一定量实战用例!

涉及到数据库服务端文件读取的系统函数通常还要管理员权限,类似于 pg_ls_dir()等系统函数,PostgreSQL 11 版本支持一定量文件读取的系统函数权限下放,可通过 GRANT/REVOKE 将权限赋给普通用户,目前以下六个文件读取系统函数支持权限下放:

以上六个函数使用上差异不大,本文仅演示其中另六个 函数。

Allow access to file system functions to be controlled by GRANT/REVOKE permissions, rather than superuser checks (Stephen Frost)

将函数 pg_read_file()的可执行权限赋给普通用户 role11 。

10 版本测试如下:

这六个函数在11版本日后这样超级用户才有权限使用。

普通用户执行 pg_ls_dir('pg_wal') 函数成功,已查看多数据库服务端的 pg_wal 目录文件。

10 版本测试,如下:

Specifically, these functions were modified: pg_ls_dir(), pg_read_file(), pg_read_binary_file(), pg_stat_file().

赋权后,普通用户role11有权限执行 pg_read_file() 函数查看数据库服务端文件内容。

显示这样超级用户才有权限执行。

以 role11 用户登录 francs 库测试:

尝试将函数 pg_ls_dir()的可执行权限赋给普通用户 pguser。