LightDB安全特性介绍
LightDB针对安全相关做了很多优化和开发新特性,下面对几种安全特性作出介绍。
1. 透明数据加密(TDE)
https://www.cnblogs.com/xxl-cr7/p/16359354.html
2. 保序加密(OPE)
https://www.cnblogs.com/xxl-cr7/p/16437117.html
3. 日志审计(ltaudit)
ltaudit 的目标是为 LightDB 用户提供生成审计日志的能力,这些日志通常需要符合政府、金融或 ISO 认证。其可通过标准的 LightDB日志记录工具提供详细的会话和 (或) 对象审计日志记录。当前ltaudit已内置集成在LightDB中。
ltaudit具体参数如下:
1)ltaudit.log
- ALL 用于审计以下命令。
- MISC 用于审计其他命令,如 DISCARD、FETCH、CHECKPOINT、VACUUM、SET。
- DDL 用于审计未包含在 ROLE 类中的所有数据描述语言 (DDL)。
- ROLE 用于审计与角色和权限相关的语句,如 GRANT、REVOKE、CREATE/ALTER/DROP ROLE。
- FUNCTION 用于审计函数调用和 DO 数据块。
- WRITE 在目标为关系时审计 INSERT、UPDATE、DELETE、TRUNCATE 和 COPY。
- READ 在源为关系或查询时审计 SELECT 和 COPY。
默认是none不开启。
2)ltaudit.log_catalog
指定所有对象都在lt_catalog中时,是否记录到审计日志。如果禁用此设置,将减少ltsql等工具在大量查询时候的干扰。
3)ltaudit.log_client
指定日志消息对客户端(ltsql)是否可见。该设置通常应该保持禁用状态,但可能对调试或其他目的有用。默认off。
4)ltaudit.log_level
指定用于审计的日志级别,但注意不允许ERROR、FATAL和PANIC,,需注意ltaudit.log_level仅在ltaudit.log_client打开时才启用,否则将使用默认值log。
5)ltaudit.log_parameter
指定审计日志记录包括语句一起传递的参数。当参数出现时,它们将以CSV格式包含在语句文本之后,默认off。
6)ltaudit.log_relation
指定会话审计日志是否应该为SELECT或DML语句中引用的每个关系对象(TABLE、VIEW等)创建单独的日志条目。这是在不适用对象审计日志记录的情况下进行详尽日志记录的一种有用的快捷方式。
7)ltaudit.log_statement_once
指定日志记录是包含带有语句 / 子语句组合的第一个日志条目的语句文本和参数,还是包含每个条目。禁用此设置将减少冗长的日志记录,但可能会使确定生成日志条目的语句变得更加困难,尽管语句 / 子语句对以及进程 id 应该足以识别与前一个条目一起记录的语句文本,默认off。
8)ltaudit.role
指定用于对象审计日志记录的主角色。可以通过将多个审计角色授予主角色来定义它们。这允许多个组负责审计日志记录的不同方面,无默认值。
举例:
注意:根据设置的不同,ltaudit 可以生成大量日志记录,可能会对数据库性能产生影响。
4. 访问认证(lt_hba.conf)
客户端访问和认证受到标准的LightDB的基于主机的认证文件(lt_hba.conf)的控制,lt_hba.conf文件在实例路径下,具体格式如下:
lt_hba.conf文件的一般格式是一组记录,每行一个。一个记录由多个被空格或者制表符分隔的域组成。如果域值被加上引号,域可以包含空格。记录不能跨越多行。每一行的格式为:
连接方式 连接的数据库 连接的用户 连接的主机IP 认证方式
1)连接方式
常用的连接方式:local 、host
local
这条记录匹配通过 Unix 域套接字进行的联接企图, 没有这种类型的记录,就不允许 Unix 域套接字的联接。
host
这条记录匹配通过TCP/IP网络进行的联接尝试。他既匹配通过ssl方式的连接,也匹配通过非ssl方式的连接。
注意:要使用该选项你要在lightdb.conf文件里设置listen_address选项,不在listen_address里的IP地址是无法匹配到的。因为默认的行为是只在localhost上监听本地连接。
2)数据库
指定这一记录匹配的数据库名。值all指定它匹配所有数据库。可以提供多个数据库名,用逗号分隔它们。在文件名前面放一个@,可以指定一个含有数据库名的单独的文件。
3)用户名
指定这一记录匹配的数据库角色名。值all指定它匹配所有角色。如果指定的角色是一个组并且希望该组中的所有成员都被包括在内,在该角色名前面放一个+。可以提供多个角色名,用逗号分隔它们。在文件名前面放一个@,可以指定一个含有角色名的单独的文件。
4)主机IP
指定这一记录匹配的客户端机器的IP地址范围。它包含一个标准点分十进制表示的IP地址和一个CIDR掩码长度。IP地址只能用数字指定,不能写成域或者主机名。掩码长度指示客户端IP地址必须匹配的高位位数。给定IP地址中,在这些位的右边必须是零。IP地址、/和CIDR掩码长度之间不能有任何空格。
典型的CIDR地址例子是:192.0.2.89/32是一个单一主机,192.0.2.0/24是一个小网络,10.6.0.0/16是一个大网络。要指定一个单一主机,对IPv4使用一个CIDR掩码32,对IPv6使用128。在一个网络地址中,不要省略拖尾的零。
5)认证方法
常用的认证方法:
trust
无条件地允许联接,这个方法允许任何可以与LightDB 数据库联接的用户以他们期望的任意 LightDB 数据库用户身份进行联接,而不需要口令。
reject
联接无条件拒绝,常用于从一个组中"过滤"某些主机。
md5
要求客户端提供一个 MD5 加密的口令进行认证,这个方法是允许加密口令存储在pg_shadow里的唯一的一个方法。
举例:
host test lightdb 10.20.137.41/32 trust
表示IP为10.20.137.41上的lightdb用户可以无条件访问主机上的test数据库
host all all 0.0.0.0/0 md5
表示任一IP的任意用户可以通过md5密码验证方式来访问主机上的所有数据库