暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss数据库安全

手机用户1297 2022-11-04
457


访问控制

管理用户对数据库的访问控制权限,涵盖数据库系统权限和对象权限。

支持基于角色的访问控制机制,将角色和权限关联起来,通过将权限赋予给对应的角色,再将角色授予给用户,可实现用户访问控制权限管理。其中登录访问控制通过用户标识和认证技术来共同实现,而对象访问控制则基于用户在对象上的权限,通过对象权限检查实现对象访问控制。用户为相关的数据库用户分配完成任务所需要的最小权限从而将数据库使用风险降到最低。

支持三权分立权限访问控制模型,数据库角色可分为系统管理员、安全管理员和审计管理员。其中安全管理员负责创建和管理用户,系统管理员负责授予和撤销用户权限,审计管理员负责审计所有用户的行为。

默认情况下,使用基于角色的访问控制模型。客户可通过设置参数来选择是否开启三权分立控制模型。

控制权和访问权分离

针对系统管理员用户,实现表对象的控制权和访问权分离,提高普通用户数据安全性,限制管理员对象访问权限。

该特性适用于如下场景,即对于有多个业务部门的企业,各部门间使用不同的数据库用户进行业务操作,同时存在同级别的数据库维护部门使用数据库管理员进行运维操作,业务部门希望在未经授权的情况下,管理员用户只能对各部门的数据进行控制操作(DROP、ALTER、TRUNCATE),但是不能进行访问操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即针对管理员用户,表对象的控制权和访问权分离,提高用户数据的安全性。

系统管理员可以在创建用户时指定INDEPENDENT属性,表示该用户为私有用户。针对该用户的对象,数据库管理员(包含初始用户和其他管理员用户)在未经其授权前,只能进行控制操作(DROP、ALTER、TRUNCATE),无权进行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTER OWNER操作。

数据库内置角色权限管理

openGauss提供了一组默认角色,以gs_role_开头命名。它们提供对特定的、通常需要高权限的操作的访问,可以将这些角色GRANT给数据库内的其他用户或角色,让这些用户能够使用特定的功能。在授予这些角色时应当非常小心,以确保它们被用在需要的地方。下表描述了内置角色允许的权限范围。

表 3 内置角色权限说明

角色

权限描述

gs_role_copy_files

具有执行copy … to/from filename 的权限,但需要先打开GUC参数enable_copy_server_files。

gs_role_signal_backend

具有调用函数pg_cancel_backend、pg_terminate_backend和pg_terminate_session来取消或终止其他会话的权限,但不能操作属于初始用户和PERSISTENCE用户的会话。

gs_role_tablespace

具有创建表空间(tablespace)的权限。

gs_role_replication

具有调用逻辑复制相关函数的权限,例如kill_snapshot、pg_create_logical_replication_slot、pg_create_physical_replication_slot、pg_drop_replication_slot、pg_replication_slot_advance、pg_create_physical_replication_slot_extern、pg_logical_slot_get_changes、pg_logical_slot_peek_changes,pg_logical_slot_get_binary_changes、pg_logical_slot_peek_binary_changes。

gs_role_account_lock

具有加解锁用户的权限,但不能加解锁初始用户和PERSISTENCE用户。

gs_role_directory_create

具有执行创建directory对象的权限,但需要先打开GUC参数enable_access_server_directory。

gs_role_directory_drop

具有执行删除directory对象的权限,但需要先打开GUC参数enable_access_server_directory。

数据库加密认证

采用基于RFC5802机制的口令加密认证方法。

加密认证过程中采用单向Hash不可逆加密算法PBKDF2,可有效防止彩虹攻击。

创建用户所设置的口令被加密存储在系统表中。整个认证过程中口令加密存储和传输,通过计算相应的hash值并与服务端存储的值比较来进行正确性校验。

统一加密认证过程中的消息处理流程,可有效防止攻击者通过抓取报文猜解用户名或者口令的正确性。

数据库审计

审计日志记录用户对数据库的启停、连接、DDL、DML、DCL等操作。审计日志机制主要增强数据库系统对非法操作的追溯及举证能力。

用户可以通过参数配置对哪些语句或操作记录审计日志。

审计日志记录事件的时间、类型、执行结果、用户名、数据库、连接信息、数据库对象、数据库实例名称和端口号以及详细信息。支持按起止时间段查询审计日志,并根据记录的字段进行筛选。

数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。

全密态数据库等值查询

密态数据库,顾名思义与大家所理解的流数据库、图数据库一样,就是专门处理密文数据的数据库系统。数据以加密形态存储在数据库服务器中,数据库支持对密文数据的检索与计算,而与查询任务相关的词法解析、语法解析、执行计划生成、事务一致性保证、存储都继承原有数据库能力。

密态数据库在客户端进行加密,需要在客户端进行大量的操作,包括管理数据密钥,加密敏感数据,解析并修改实际执行的SQL语句,并且识别返回到客户端的加密的数据信息。openGauss将这一系列的复杂操作,自动化的封装在前端解析中,对SQL查询中与敏感信息的加密替换,使得发送至数据库服务侧的查询任务也不会泄露用户查询意图,减少客户端的复杂安全管理及操作难度,实现用户应用开发无感知。

密态数据库通过技术手段实现数据库密文查询和计算,解决数据库云上隐私泄露问题及第三方信任问题。实现云上数据的全生命周期保护,实现数据拥有者与数据管理者读取能力分离。

网络通信安全特性

支持通过SSL加密客户端和服务器之间的通信数据,保证客户的客户端与服务器通信安全。

采用TLS 1.2协议标准,并使用安全强度较高的加密算法套件,支持的加密算法套件如表4所示。

表 4 加密算法套件

OpenSSL套件名

IANA套件名

安全程度

ECDHE-RSA-AES128-GCM-SHA256

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

HIGH

ECDHE-RSA-AES256-GCM-SHA384

TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

HIGH

ECDHE-ECDSA-AES128-GCM-SHA256

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

HIGH

ECDHE-ECDSA-AES256-GCM-SHA384

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

HIGH


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论