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

MogDB学习笔记-从10开始(安全和审计)

1、写在前面

        不知不觉笔记已经记录到第10步了,对MogDB也有了初步的了解和认知,这还是要归功于官网的中文操作手册。中文操作手册,这个真的是国产数据库神器之一,在学习过程中方便了不少。希望国产数据库生态越来越健全,路越走越宽。信创指日可待。

        数据安全是一个数据库的“基本”功能,甚至可以说如果数据库产品的安全管理不达标,数据库产品在监管部门都不能完成验收,此次笔记就从数据库认证管理、权限管理和数据库审计出发做进一步学习测试。

2、数据库认证管理

        在前面的笔记中也接触过pg_hba这个连接认证文件,这里在重新验证一下这个文件,如果远程服务器需要连接到MogDB数据库,就必须要配置这个文件,这个文件类似于白名单,允许那些服务器可以连接到MogDB。

        MogDB共有3中认证方式:第一种是基于服务器的认证;第二种是基于密码的方式认证,第三种是基于SSL加密的方式,前两种是我们最常用的。第一种主要是DBA通过本地维护MogDB使用,第二种认证方式主要是为了应用程序、开发人员使用。

看一下pg_hba_conf的内容。

每一行有五个值分别是TYPE、DATABASE、USER、ADDRESS、METHOD

TYPE:

        Local--在本地使用gsql连接数据库使用

        Host--使用tcp/ip连接

        Hostssl--使用tcp/ip连接,并且经过ssl加密

        Hostnossl--使用tcp/ip连接,并且没有经过ssl加密

DATABASE:表示可以连接到那一个数据库,all表示所有数据库

USER:表示可以使用那个用户连接到数据库,all表示所有用户(omm初始化用户除外)

ADDRESS:表示那些ip可以访问数据库

METHOD:表示使用那种认证方式访问数据库,常用的是trust本地gsql连接和sha256密码加密

官网中有详细描述,https://docs.mogdb.io/zh/mogdb/v3.0/1-client-access-authentication,我们这里主要是测试

1)测试本地gsql不指定用户和密码

连接数据库发现当前使用的是用户是初始化用户omm,用到的是配置文件中这一行

local all all trust

2)测试本地gsql使用zkh用户不指定密码

提示需要数据密码,用到的是配置文件中的这一行

host all omm 10.80.9.249/32 trust

3)测试本地gsql使用omm初始化用户连接数据库

并不需要密码,说明omm用户使用的是文件中的这一行

local all all trust

4)测试远程连接使用如下一行

使用的是配置文件中的这一行

host all all 10.80.9.150/32 sha256

5)修改pg_hba.conf配置文件允许某个网段可以连接到数据库

host all all 10.80.0.0/16 sha256

使用命令修改

gs_guc set -N all -I all -h "host all zkh 10.80.0.0/16 sha256"

执行完成命里以后在pg_hba.conf中生成两条配置信息

host all zkh 10.80.0.0/24 sha256

host all zkh 10.80.0.0/16 sha256

注意:无论是命令修改还是直接修改pg_hba.conf配置文件都需要重启数据库才会生效

其实只有host all zkh 10.80.0.0/16 sha256这一条就足够了。

6)把远程连接的认证方式修改成trust看一下测试结果

提示远程连接不允许trust认证方式。

7)ssl和nossl模式就不进行测试了,官网也有很详细的使用说明

3、用户和权限

一、管理员分类

用户按照功能分类分为以下几类:

初始用户:默认为安装MogDB的操作系统用户omm,拥有最高权限,可以执行所有操作。

系统管理员:具有sysadmin属性的账户,类似于Oracle的dba角色,有三种方式可以给用户赋予sysadmin权限

#创建用户时指定

CREATE USER sysadmin WITH SYSADMIN password "xxxxxxxxx";

#为已存在用户赋予sysadmin权限

MogDB=# ALTER USER joe SYSADMIN;

#通过创建sysadmin权限的角色,然后赋给用户

CREATE ROLE manager IDENTIFIED BY xxxxxxxxx;
ALTER ROLE manager SYSADMIN;

grant manager to user;

监控管理员:MONADMIN具有查看dbe_perf模式下视图和函数的权限,授权方式同系统管理。

运维管理员:OPRADMIN具有使用Roach工具执行备份恢复的权限。

安全策略管理员:POLADMIN具有创建资源标签、脱敏策略和统一审计策略的权限。

可见MogDB的管理员也是很多,每个管理员负责的职责功能都不相同,在现实场景中可能只有一个系统管理员角色就够了,但是在大厂可能就是分而治之了。

二、用户分类

        MogDB一个实例中可以用多个数据库(这有点类似于Mysql)。MogDB中默认创建的用户都是公共用户(这有类似于Oracle CDB中的common user,与Mysql也相同),只要赋予相应的权限可以访问所有数据库的数据,但是要注意一点与Mysql不同的是,Mysql登录到一个库中可以查看其他数据库的对象,但是MogDB不行,他只可以看到当前连接到的数据库内容。

私有用户,这个并不是公共用户的反义词,也不是Oracle CDB中的普通用户,MogDB中的私有用户创建的对象,系统管理员没有权限进行dml。

永久用户:进过测试发现永久用户只可以使用初始用户创建、删除,系统管理员没有权限删除永久用户,具体的使用场景暂时没有想到。

三、权限分类

按照权限管理的颗粒度划分大致分为一下三类:

系统级别:是在系统级别上的权限就是上面所说的各种管理员权限都属于数据库权限

db/Schema级别:是在数据库基本或者schema级别上的权限,

将数据库所有的权限赋予给指定的用户或角色--grant all privileges on database db_name to user

将模式的访问权限赋予指定的用户或角色--grant all privileges on schema echame_name to user

对象级别:是在数据库对象上的权限,比如execute、select、update

将表的所有权限赋予指定的用户或角色--grant all privileages on table table_name to user

4、审计

官方操作手册地址:https://docs.mogdb.io/zh/mogdb/v3.0/3-configuring-database-audit

        MogDB的设计颗粒度比较多,在官网上也有明确的表示,我们这里只做测试。Oracle的设计日志可以记录到表中,也可以记录到文件中。MogDB采用以二进制的形式记录到文件中,但是提供了丰富的维护功能,包括手动删除审计日志、根据磁盘空间的大小(audit_space_limit)自动删除审计日志、备份审计日志、查询审计日志pg_query_audit等,操作起来还是比较快捷。

先查询一下当前没有修改任何默认参数的审计文件内容,因为默认的审计总开关audit_enabled是开启的。

select * from pg_query_audit('2022-08-17 01:29:48','2022-08-18 01:29:48');

可以看到记录了一些用户登录、用户退出、数据库启动等等的系统审计。接下来测试一个表的审计功能

#开启审计DML操作

gs_guc reload -N all -I all -c "audit_dml_state='1'"

#修改数据内容

update test_flashback tf set saler=100000 where id='2';

#查询设计内容

select * from pg_query_audit('2022-08-18 01:50:36','2022-08-18 01:52:29');

已经看到刚才我们执行的那条sql语句,包括客户端IP等等,总体来说MogDB的审计功能还是比较人性化的,配合自动删除、归档的功能,可以不用担心开启审计造成的磁盘占用太大的问题。

5、写在最后

        这次笔记了解了数据库安全相关的一些知识点,包括认证管理、角色权限管理、审计管理;认证管理既可以配置“白名单”,也可以设置“黑名单”(通过method设置成reject),支持Unix套接字、tcp/ip、ssl、nossl4中认证类型;角色权限管理与其他数据库管理类似,没有可以总结的;最后测试了MogDB的审计功能,MogDB的审计颗粒度比较全,支持多种类型的数据库操作审计,而且自动维护功能减少了我们日常的运维操作。

        一步一步学习MogDB第十步了,我总是喜欢把十作为一个计数单位。一个结束,一个开始。

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

文章被以下合辑收录

评论