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

BigInsights高安全特性概要

原创 Calvin 2023-12-06
273

引言

数据安全是数据库管理系统的重要组成部分,它可通过访问控制和数据加密技术来保证数据的机密性和完整性。贝格迈思明睿智能数据库系统BigInsights实施了一个多层次的数据安全机制,主要包括访问控制策略和加密技术。访问控制策略主要包括身份认证、授权、网络访问限制、防在线暴力破解口令和审计等机制来防止未授权用户的访问。加密技术基于传输层安全协议和数据加密算法实现对数据的保护。BigInsights支持为分布式集群节点间的传输数据提供安全的通道,防止数据在网络通信过程中被窃听或篡改。同时,BigInsights使用加密算法实现静态数据的加密存储,确保数据即使在未授权访问的情况下仍保持加密的状态。

随着国家对数据安全和个人敏感信息的加强监管,传输加密和静态数据加密并不能满足复杂环境的安全需求,特别是在公有云环境下的数据库相关的应用场景,为此,BigInsights提供了一种数据处理时的加密方案,通过使用先进的保序加密算法对数据实施加密,支持在加密数据上直接进行检索和计算操作。处理时加密方案的数据在传输过程、处理过程和静态存储等环节均以密文的形式存在,从而为用户的数据提供了极高的安全性。

明睿智能数据库系统BigInsights于2023年12月通过中国信通院全密态数据库能力测试, 满足T/BDC 135-2022《全密态数据库技术要求》规范,是高安全数据库的最佳选择。

图1.1 数据安全机制

身份认证

身份认证是数据库服务端鉴别客户端身份的过程,用于验证客户端程序是否被允许连接到数据库。因此,只有具备适当凭证的客户端才允许访问数据库。

BigInsights提供了一系列不同的客户端身份认证方法,可根据客户端的主机地址、连接的数据库和用户凭证等字段选择用于认证特定客户端的方法,并支持对接第三方目录服务实现集中式的身份信息管理和认证。

认证方法

认证方法主要包括:口令、轻量级目录访问协议(LDAP)和信任等方式。

口令认证

对于生产场景的数据库集群,口令认证是保证数据库安全性的基本手段。

BigInsights支持三种口令认证方法:password、MD5和SCRAM-SHA-256。其中,MD5和SCRAM-SHA-256属于哈希摘要算法。

password

用户口令直接以明文形式发送到服务端进行身份认证。主要用于本机地址的认证,可能存在用户密码泄露的风险。

MD5

MD5哈希算法是BigInsights集群中的默认口令认证方式,可防止口令嗅探和避免在数据库服务器上以明文形式存储用户口令。但它存在一些安全风险,例如攻击者可根据窃取的口令哈希值进行攻击。

SCRAM-SHA-256

SCRAM-SHA-256哈希算法是属于SASL(Simple Authentication and Security Layer)身份认证框架的一种机制,它基于挑战-响应机制来实现身份认证。

该算法内部使用的是SHA-256哈希函数,认证服务端实施4096次哈希迭代,该算法具有更高的安全性。

BigInsights开启SCRAM-SHA-256口令认证方式是通过在存储节点BM-Server的配置文件中使用如下配置参数:

--bsql_pg_conf_csv=password_encryption=scram-sha-256

在重新启动数据库服务后,任何新用户的密码将使用SCRAM-SHA-256算法进行加密保护。

LDAP认证

Lightweight Directory Access Protocol(LDAP)是一种在网络中存储和检索分布式目录信息服务的协议。它提供了访问一系列丰富的安全功能的方法,主要用于集中管理组织中的用户信息,例如用户名和密码等。

BMDB支持使用LDAP服务器验证用户的用户名和口令,它支持两种方式:简单绑定和搜索+绑定。

简单绑定模式

在简单绑定模式中,BM-Server节点通过使用由“前缀+用户名+后缀”格式构建的唯一识别名(DN)和用户提供的口令直接执行LDAP绑定操作以进行明文身份认证。

如下是一个具体的配置用法:

--bsql_hba_conf_csv=host all bigmath 127.0.0.1/0 md5,"host all all 0.0.0.0/0 ldap ldapserver=ldap.bigmath.com ldapprefix=""cn="" ldapsuffix="", dc=bigmath, dc=com"" ldapport=389"

其中,ldapserver表示LDAP服务器的名称或IP地址,ldapprefix表示前缀等。

第一个配置表示本机的管理员用户bigmath以md5方式连接认证,然后建立LDAP身份认证方式的规则;第二个配置表示其他用户执行LDAP简单绑定模式进行身份认证。

简单绑定模式的身份认证过程如下:

图2.1 简单绑定模式

例如,当客户端以其他角色role_1访问数据库时,LDAP服务器将使用由cn=role_1,dc=bigmath,dc=com构成的唯一识别名和客户端用户提供的口令执行绑定操作以完成身份认证。当该用户身份认证成功后,数据库客户端可正常访问数据库的服务。

简单绑定模式是一种简单且较高效的认证方法,适合在客户端已知要绑定用户的完整DN时场景的使用。

搜索+绑定模式

相对于简单绑定模式,这是一种更灵活的身份认证模式。

在搜索+绑定模式中,LDAP身份认证过程如下:

  1. BM-Server节点首先使用由参数ldapbinddn和ldapbindpasswd分别指定的用户名和口令绑定到LDAP目录服务器进行身份认证,以获得在LDAP上进行搜索的授权;
  2. 以用户登录时使用的用户名和口令作为属性在LDAP服务器上执行搜索操作。如果搜索成功,则LDAP断开与第1步中指定用户的绑定操作;
  3. 使用第2步搜索到的DN和用户登录时的密码重新执行与LDAP的绑定操作;

例如以下配置是一个具体的用法:

--bsql_hba_conf_csv=host all bigmath 127.0.0.1/0 md5,"host all all 0.0.0.0/0 ldap ldapserver=ldap.bigmath.com ldapbasedn=""dc=bigmath, dc=com"" ldapbinddn=""cn=xxx, dc=bigmath, dc=com"" ldapbindpasswd=""xxx"" ldapsearchattribute=cn"

其中,ldapbasedn表示进行搜索用户名的根目录,ldapsearchattribute表示在搜索过程中用于匹配用户名的属性。

搜索+绑定模式的身份认证过程如下:

图2.2 搜索+绑定模式

搜索+绑定适用于客户端需要先查找DN的场景。

信任认证

信任认证目前是安全级别最低的身份认证方式,对于来自指定主机的连接,它不验证用户口令。在BMDB中不推荐使用信任认证方式。

如下配置是一个具体的用法:

--bsql_hba_conf_csv='host all bigmath 127.0.0.1/0 trust, host all bigmath ::1/128 trust'

它表示允许用户bigmath在本机登录访问数据库时,不验证口令。

基于主机配置认证方法

BigInsights的认证方法需要基于主机来进行配置,支持基于IP地址、认证方法等组合来定义客户端主机的访问规则。通过这种方法,支持不同主机、网段使用不同安全级别的认证方法来访问数据库。

该配置方法通过在BM-Server节点上使用配置项bsql_hba_conf_csv指定具体的访问规则。这个规则将记录连接类型、用户、IP地址和认证方法等信息。它们会自动写入到服务端的bsql_hba.conf配置文件中,记录格式如下:

hba

host: 连接类型;

database: 要连接的数据库名,all表示匹配所有数据库;

user: 用户名;

address:连接地址,可以是主机名或IP地址范围等;

auth-method: 认证方式,例如,password、MD5或SCRAM-SHA-256等。

授权

未经授权的数据访问会导致系统敏感信息的泄露。BigInsights提供了基于角色访问的控制模型(RBAC)实现对数据库对象的权限管理。该模型围绕角色和数据库对象进行权限配置和判定,其中数据库对象包括数据库、表、列、函数和模式等。

该系统支持在数据库对象上指定哪些角色允许执行的操作以及允许在角色间构建层级结构来委派权限的管理,使得系统的权限控制更加简洁和灵活。

角色

在BMDB中,角色指单个用户或一组用户,它封装了可分配给其他用户的一系列权限。用户基于角色获得对系统资源的访问权限。

  • 拥有登录权限的角色称为用户;
  • 角色间通过授权组成层级结构,表示角色与子角色之间的关系,从而实现权限继承和职责分离约束。

为了引导数据库系统的正常启动,新初始化的系统总是包括一个预定义的超级用户,它具备所有权限,用于创建或管理其他角色,并授予这些角色不同的数据库访问权限。

如下是权限、角色和用户三者之间的关系:

role&user

图3.1 RBAC模型(补充授权)

权限

在BMDB中,授权操作主要分为两种类型:

  • 角色级授权: 通过授予角色权限的方式形成以角色为主体的权限继承关系;
  • 数据库对象授权: 授予角色在数据库对象上的某些操作权限。

一个角色可以继承另一个角色的所有权限,且数据对象的所有者可以指定角色在该数据对象上的访问模式,例如在指定表上执行SELECT和INSERT等权限。

行级访问控制

BMDB在数据库对象上提供了非常细粒度的权限控制机制,通过行级安全策略(RLS)来控制角色可访问的数据内容,即支持在数据表上定义谓词对数据进行过滤,以实现对行数据的DML操作权限控制,对应角色只能访问对它可见的数据。

创建和开启一个RLS规则的步骤如下:

  • 使用CREATE POLICY命令在数据表上创建一个RLS表达式规则;
  • 使用ALTER TABLE table_name ENABLE ROW LEVEL SECURITY开启RLS功能。

列级访问控制

BMDB支持对表中单列或一组列数据进行访问控制,通过使用视图对列级数据进行权限管理。

列级访问的具体操作步骤如下:

  • 创建视图,包括表中的一列或多列的访问权限:CREATE VIEW view_name as SELECT colname FROM tablename;
  • 将列级数据权限通过视图授权给角色:GRANT SELECT ON view_name TO rolname。

加密

BigInsights既支持对传输过程中的数据进行加密,也支持对数据库中的数据进行静态加密,同时还支持数据处理时的加密操作。

传输加密

传输加密分为两种类型:

  • 加密服务端节点之间的数据,即对BM-Master和BM-Server节点之间的通信数据加密;
  • 加密客户端与服务端之间的数据。

使用基于X.509证书认证的TLS协议对传输数据进行加密。

静态加密

BMDB支持对物理存储设备上的数据进行静态加密。静态加密可防止攻击者直接获取数据库文件后获取敏感数据内容。它可分为透明加密、文件系统加密和列级加密三种类型。

透明加密(TDE)

透明加密指由数据库引擎对所有的数据库文件进行加密存储,且对数据库使用者是透明的。开启集群的透明加密功能操作步骤如下:

  1. 用户可通过指令openssl rand 生成一个对称密钥文件;
  2. 将第1步的密钥部署到BM-Master节点的内存中;
  3. 使能整个集群范围内开启加密功能;

BMDB集群仅对开启密钥之后的新数据进行加密,并将加密数据保存在物理设备上,同时还支持密钥轮转等操作。

同时,在文件系统层面,管理员需要对数据库集群中的每个节点手动管理这个加密过程。因为应考虑不同文件系统或外部加密机制支持的在线操作程度可能会有所不同,特别是数据库进程仍在运行时。
透明加密的过程如下:

图4.2 透明加密

列级加密

BigInsights提供了更细粒度的列级数据加密功能,即支持仅对某些列进行加密。该加密机制通过使用pgcrypto插件实现对列数据的加解密操作。

对称加密

对称加密是使用同一个密钥进行加解密数据。当用户执行插入数据操作时,使用PGP_SYM_ENCRYPT函数对指定的列数据进行加密;当用户执行查询操作时,使用PGP_SYM_DECRYPT函数对指定的列数据进行解密。

非对称加密

非对称加密是使用公钥进行加密操作,使用私钥进行解密操作。可通过gpg密钥生成器生成一对RSA密钥对。当用户执行插入数据操作时,使用PGP_PUB_ENCRYPT函数对指定的列数据进行加密;当用户执行查询操作时,使用PGP_PUB_DECRYPT函数函数对指定的列数据进行解密。

处理时加密

BigInsights可实现对数据全生命周期的加密操作。BigInsights使用基于纯软件实现的保序加密算法对数据进行加密,保证数据以密文形式进行存储、计算和传输等操作。数据在密文状态下可直接执行比较类查询运算,并可以执行表关联查询、子查询和分组查询等操作,同时支持基于密文直接构造高效的数据索引。这极大地保护了用户数据的机密性和完整性。全密态数据库较适用于对数据安全性要求极高的场景,如金融行业和医疗健康等领域。

BigInsights的处理加密特性架构如下:

在全密态数据库中仅部署密钥的客户端才可见明文数据。在客户端侧对用户的明文数据进行加密,保证了数据在后续处理过程全部是以密文形式进行的。在数据返回给用户时,在客户端侧自动进行解密为明文结果。

审计

BigInsights使用pgAudit插件来提供会话和对象级的审计日志,有两种方式开启该功能:

  • 在BM-Server节点服务启动时通过bsql_pg_conf_csv命令配置;
  • 在当前会话通过SET命令配置。

主要通过pgaudit.log、pgaudit.log_client、pgaudit.log_level和pgaudit.role等参数进行指定审计日志记录的语句结果。

数据库管理员可根据系统生成的审计日志查看用户的数据行为,从而跟踪用户对数据库系统的访问历史,便于管理员定期进行安全审计和分析异常的数据库行为,这一定程度上保证了数据库系统的安全性。

网络限制访问

网络限制访问是通过确保BMDB数据库集群运行在可信的网络环境中。建议在如下网络环境中访问数据库:

  • 只有数据库管理员和运行应用程序的服务端才可直接访问数据库;
  • 只有运行应用程序的服务端才能连接到RPC端口上的BMDB服务。

通过在集群的BM-Master和BM-Server节点上使用rpc_bind_addresses参数绑定数据库集群节点间通信需要的RPC地址,只有指定的主机IP才可访问数据库的服务。

防在线暴力破解口令

可通过启用登录配置文件来防止口令被在线暴力破解,当用户尝试登录数据库的失败次数达到预设的目标值后即锁定该帐户,使得该用户无法继续登录数据库系统。

BigInsights集群中的防在线暴力破解功能通过登录配置文件开启,并基于角色实现系统登录权限的管理。

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

评论