达梦数据库基础----用户与权限

为了保证数据库系统的安全性,达梦数据库采用分权的安全机制,系统内置四种系统管理员,包括数据库管理员、数据库安全员、数据库审计员和数据库对象操作员。它们各司其职,互相制约,有效地避免了将所有权限集中于一人的风险,保证了系统的安全性。

下面由小编向大家讲讲这四个系统管理员的作用:

1. 数据库管理员(DBA)

每个 DM 数据库至少需要一个数据库管理员来管理,最初的数据库管理员负责评估数据库运行所需的软、硬件环境、安装和升级 DM 数据库、配置 DM 数据库参数、创建主要的数据库存储结构(表空间)和对象(如表、视图、索引、角色、用户等)、监控和优化数据库性能、数据导入导出以及数据库的备份和恢复等。数据库管理员既可进行系统管理和维护工作,也可对数据内容进行增删查改动作。
后来根据国产数据库安全使用要求,数据库管理员只能进行系统管理和维护工作,不能对数据内容进行增删查改,数据库应用人员则可操作数据内容,而不能管理和维护系统,只具有DBA 角色预设的一部分与数据库管理相关的明确的数据库权限,如数据库创 建、备份、还原和校验等。

2. 数据库安全员(SSO)

对于很多对安全性要求不高的系统来说,C2 级安全特性已经能够工作得很好,此时不需要考虑通过数据库安全员来进一步加强系统的安全机制。但是在很多大型的系统中,安全性 还是至关重要的,有必要由安全员来制定安全策略,强化系统安全机制,此时数据库安全员 的主要任务就是制定安全策略,定义新的数据库安全员,设置系统的安全等级、范围和组, 并为主、客体定义安全标记,从而全面提升系统安全性。

3. 数据库审计员(AUDITOR)

DM 系统管理员数据库审计员可以设置要审计的对象和操作、定义新的数据库审计员、查看和分析审计 记录。通过设置审计,几乎可以跟踪任何人在系统内执行的任何操作,为事后追查提供便利。

4. 数据库对象操作员(DBO)

数据库对象操作员是达梦最新增加的一类用户,可以创建数据库对象,并对自己 拥有的数据库对象(表、视图、存储过程、序列、包、外部链接)具有所有的对象权限并可以授出与回收,但其无法管理与维护数据库对象。

单独拿达梦的数据库用户向大家说明,可能体会不到达梦的权限到底规划的如何,是否安全等,在此我就向大家介绍小编会的另一个数据库—MSSQL 来进行一个小小的横向对比,

Sql server众所周知是一个在数据库市场上占比较大的数据库,在最新的一版数据库排名中仍然占据前三,虽然有些颓势,但三巨头的地位还是不可动摇的,遥遥领先其他数据库。
达梦数据库基础----用户与权限

由于达梦与sql server的架构不同,我们不能以数据库层面对数据库层面的权限进行对比,因为一个是达梦,是单实例单数据库,即“一对一”的模式,一个是mssql ,是单实例对多数据库,即一对多的模式的架构。
我们就以数据库安全问题进行比较,与dm的分权模式相对的,sql server将用户的权限划分为以下这几种:

bulkadmin 固定服务器角色的成员可以运行 BULK INSERT 语句。
dbcreator 固定服务器角色的成员可以创建、更改、删除和还原任何数据库。
diskadmin 固定服务器角色的成员可以管理磁盘文件。
processadmin固定服务器角色的成员可以终止在 数据库引擎 实例中运行的进程。
public 默认情况下,所有 SQL Server 用户、组和角色都属于 public 固定服务器角色。
securityadmin 固定服务器角色的成员可以管理登录名及其属性。 他们可以 GRANT、DENY 和 REVOKE 服务器级别的权限。 他们还可以 GRANT、DENY 和 REVOKE 数据库级别的权限。 此外,他们还可以重置 SQL Server 登录名的密码。
serveradmin 固定服务器角色的成员可以更改服务器范围的配置选项和关闭服务器。
setupadmin 固定服务器角色成员可以添加和删除链接服务器,并可以执行某些系统存储过程。
sysadmin 固定服务器角色的成员可以在数据库引擎中执行任何活动。

大家可以显著的看到,虽然sql server将各个权限都划分的较细,但是sysadmin 这个用户仍然是在服务器里无所不能的“大魔王”,他可以可以在数据库引擎中执行任何活动。这是一个很大的安全隐患,即使可以通过细分权限来限制,但是sql server本地的windows登陆是一个摆脱不掉的”大权限”用户(为sysadmin),该怎么办呢?

也看到过客户将权限细分的很好,把sql server数据库的windows登陆验证用户删除,防止安全隐患,但因为频繁的更换数据库sa的密码,客户最后忘记了sa的密码,导致丢失了唯一一个sysadmin权限的用户,最后不得不求助运维进行处理。所以达梦的权限管理相对于mssql在安全的层面小编感觉有很好的考量。
当然,用户与权限的划分,仅仅依靠数据库系统自己本身永远是不可靠的,还需要众多运维工程师们一起悉心呵护。