本文介绍了高权限账号和普通账号对应的权限。
简介
为了保证云数据库的安全性,需要对用户的权限进行管理和限制。用户的权限应该仅限于其需要的操作,而不应该有任何超出权限范围的操作。因此,云数据库采用了基于角色的访问控制模型来管理普通用户的权限。在这个模型中,不同的用户被分配不同的角色,每个角色拥有一定的权限,而用户则根据其需要的操作被分配到相应的角色中。这种方式可以有效地控制用户的权限,保证数据库的安全性。
目前,数据库提供了两种角色供用户使用:高权限用户和普通用户。
高权限用户主要用于管理任务,例如,创建数据库、授权基本权限和创建发布订阅等。
普通用户是基本角色,用于执行各种业务逻辑操作。
PolarDB利用这种权限体系来构建数据库操作类型,实现了访问控制模型,并更有效地保障了云数据库的权限安全。
高权限用户拥有如下权限:
账号类型 | 权限 |
高权限账号 | 创建数据库。详情请参见创建数据库。 |
创建插件。详情请参见插件。 | |
创建权限不高于自身的用户。详情请参见创建用户。 | |
创建和使用事件触发器。详情请参见创建触发器。 | |
创建、修改类型。详情请参见创建对象类型。 | |
调用垃圾回收指令。详情请参见垃圾回收机制 | |
创建、修改外部数据FDW。详情请参见使用oss_fdw读写外部数据文本文件。 | |
修改ROWID使用到的sequence。详情请参见ALTER SEQUENCE。 | |
创建发布和订阅。示例如下:
| |
创建系统上下文。示例如下:
| |
使用两阶段事务。示例如下:
| |
发送信号。示例如下:
| |
查看后台进程状态。示例如下:
| |
修改对象名称。示例如下:
|
高权限用户和普通用户都不具有如下权限:
由于某些权限对于数据库有安全风险,因此目前禁止了用户的下列权限。
账号类型 | 权限 |
高权限账号/普通账号 | 创建文件夹。 |
修改系统参数。 | |
创建表空间。 | |
杀死超级用户进程。 | |
执行不受信任的语言。 说明 plsql是受信任的语言,除此之外的语言均属于不受信任的语言,无法执行。 |
用户组权限介绍
云原生数据库PolarDB PostgreSQL版(兼容Oracle)是在PostgreSQL数据库的基础上构建的,沿用了PostgreSQL数据库的某些群组权限。以下内容将详细介绍这些群组权限的继承机制。这些权限与上面所述的高权限用户所拥有的权限具有并集的关系,即最终的权限集合是这两类权限的总和。
权限名称 | 权限情况 | 说明 |
pg_read_all_stats & pg_stat_scan_tables | 完全 | 统计信息相关权限,完全拥有。 |
pg_signal_backend | 完全 | 向其他进程发送信号,完全拥有。 |
pg_polar_superuser | 完全 | 高权限用户组,包含了一系列高权限用户的权限,完全拥有。 |
pg_polar_replication | 完全 | 提供用户使用流复制的权限,完全拥有。 |
pg_monitor | 完全 | 监控权限,屏蔽了本地文件的读写权限。 |
pg_read_all_data & pg_write_all_data | 受限 | 读写任意表的权限,可读写任意用户表和可读大部分系统表,安全原因屏蔽部分系统表。 |
pg_read_all_settings | 受限 | 读任意参数权限,可读权限范围内的参数,安全原因屏蔽部分参数。 |
pg_read_server_files & pg_write_server_files | 屏蔽 | 不支持提供读写本地文件的权限。 |
pg_execute_server_program | 屏蔽 | 不支持提供执行二进制命令的权限。 |