等保2.0涉及的PostgreSQL

等保2.0涉及的PostgreSQL

一、数据完整性

1.应采用校验技术或密码技术保证重要数据在传输过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等

针对于传输过程中数据的完整性具体概念这里就不多阐述了,网上一些资料已经写得比较清楚了,大致意思就是数据发送前后要有一个检测机制,确保数据发送前和接收后的一致性。

针对数据库系统来说,需要考虑的数据有:

鉴别数据、重要配置数据、重要业务数据、重要审计数据、重要个人信息等

然后,传输过程中的完整性一般是通过通信协议来实现的,一般常见的包括TLS、SSH等协议,具体到数据库这个测评对象来说,就是去查看它是否启用了SSL进行了数据通信,当然最好询问下管理人员,确认是否还有其他保证数据传输过程中的完整性措施。

具体的配置就略过了(后期待补充),这里介绍了如何开启SSL管理。

针对这个测评项,我们先去查看$PGDATA目录下的postgresql.conf文件,确认是否已经启用SSL:

img然后再去确认pg_hba.conf文件中,是否规定了ssl连接的认证规则:

img

确保配置的连接地址没有漏网之鱼(可不采用ssl连接的地址)就可以了。

2.应采用校验技术或密码技术保证重要数据在存储过程中的完整性,包括但不限于鉴别数据、重要业务数据、重要审计数据、重要配置数据、重要视频数据和重要个人信息等

针对存储过程中的完整性保护,用简单的方式来说就是你如何去判断一个重要文件是否为初始的可信状态,没有被恶意篡改、删除或新增等,要有这种完整性检测机制。一般通过对比文件前后的哈希值来判断重要文件、数据是否被篡改。

针对数据库系统来说,需要考虑的数据有:

鉴别数据、重要配置数据、重要业务数据、重要审计数据、重要个人信息等

譬如我们需要对数据库配置文件进行一个完整性检测,我们就需要配置文件初始可信状态时的哈希值,然后再根据目前的文件生成一个哈希值,对比前后的一致性,确认数据是否被篡改过。

下面是一个客户的实例,他对服务器上的一些重要文件进行了完整性校验,具有期望和当前的比对机制。

img

这个一般数据库自身不带这种机制,得询问管理人员是否使用了第三方软件对数据库重要数据进行了完整性校验。

二、数据保密性

1.应采用密码技术保证重要数据在传输过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等

这个条款的意思就比较清楚了,就是让你对重要数据进行加密传输。

一般针对数据库需要考虑

鉴别数据、重要业务数据、重要个人信息等

1.1 鉴别信息

首先我们要去看pg_hba.conf文件中METHOD的配置信息

img

传输相关的参数大致有下类三个:

SCRAM-SHA-256

这是一种挑战-响应架构, 可防止密码在不可信连接上嗅探,并支持以密码散列的形式将密码存储在服务器上, 这种形式被认为是安全的。

MD5

方法md5使用自定义安全性较低的质询-响应机制。 它可以防止密码嗅探,并避免以纯文本形式将密码存储在服务器上, 但如果攻击者设法从服务器窃取密码哈希,则不提供保护。而且, MD5哈希算法现在不再被认为对于确定的攻击是安全的。

password

是以明文密码传送给数据库,建议不要在生产环境中使用。

这里举例一个以MD5传输的例子:

未开启SSL时,我通过Wireshare对数据库认证过程的数据包进行抓取,发现传输的密码字段信息

img官方文档的说明为质询-响应机制。

尝试密码使用‘123456’,传输的并不是123456的MD5值,具有一定的保密性。

img

当开启SSL时,我们再抓包,发现啥都看不懂了

img

1.2 重要业务数据、重要个人信息

未开启SSL时,我这里进行执行一条查询语句 select * from pg_shadow;

img

通过wireshark抓包,一些重要数据将会被窃听

在包里我们能找到执行的SQL语句,和语句执行后的输出结果显示,所以这并不安全

img

开启SSL后,执行上面相同的操作,发现也是啥也看不懂了

img

总结:

1.查看postgresql.conf、pg_hba.conf文件确认是否开启SSL管理,如果开启均符合。

2.未开启SSL情况下,去查看pg_hba.conf文件METHOD字段的配置信息

鉴别数据:METHOD值为SCRAM-SHA-256、MD5时鉴别数据传输过程中具有保密性,当值为password时,为不符合

重要业务数据、重要个人信息:未开启SSL,不符合。

当然不排除有其它可实现的手段,具体的可以找系统管理人员确认。

2.应采用密码技术保证重要数据在存储过程中的保密性,包括但不限于鉴别数据、重要业务数据和重要个人信息等

2.1 鉴别数据

我们可以使用password_encryption命令可以查看存储密码使用的算法,默认为MD5。

img然后去查看用户口令存储的表:select * from pg_shadow;

口令存储对应为passwd字段值

img

● 该算法的保密性

在网上搜索了一下,都是说pgSQL口令存的是用户名+口令的MD5值,但具体是一个怎样的存储规律并没有明说,这里经过自己测试,终于知道它是如何存储用户口令的。

为口令+角色名的MD5码,口令在前,角色名再后。

首先,我们创建两个用户,进行测试:
create role est password ‘12345678t’;
create role st password ‘1234567te’;

然后去表中查询它们的MD5值

img

可以看出passwd字段相同,未加salt,通过解密可以得到明文

img

2.2 重要业务数据、重要个人信息

这个一般去询问数据库管理员,是否对相关信息进行加密存储。

如果加密了,叫他帮你打开下对应表截图取证即可。

三、数据备份恢复

1. 应提供重要数据的本地数据备份与恢复功能

1.1 自带命令

一般就类似于mysqldump,用这种方式,客户很有可能就是将他写进脚本里面,然后通过计划任务定时执行备份脚本。

1)pg_dump
SQL 转储方法的思想是创建一个由SQL命令组成的文件,当把这个文件回馈给服务器时,服务器将利用其中的SQL命令重建与转储时状态一样的数据库。 PostgreSQL为此提供了工具pg_dump。这个工具的基本用法是:
pg_dump [connection-option…] [option…] [dbname]

dbname
指定要被转储的数据库名。如果没有指定,将使用环境变量PGDATABASE。如果环境变量也没有设置,则使用指定给该连接的用户名。

语法:pg_dump dbname > outfile

img

恢复:

pg_dump生成的文本文件可以由psql程序读取,常用命令:

psql dbname < infileimg

pg_dump和psql读写管道的能力使得直接从一个服务器转储一个数据库到另一个服务器成为可能,例如:

pg_dump -h host1 dbname | psql -h host2 dbname

2)pg_dumpall

pg_dump每次只转储一个数据库,而且它不会转储关于角色或表空间(因为它们是集簇范围的)的信息。为了支持方便地转储一个数据库集簇的全部内容,提供了pg_dumpall程序。pg_dumpall备份一个给定集簇中的每一个数据库,并且也保留了集簇范围的数据,如角色和表空间定义。该命令的基本用法是:

pg_dumpall > outfileimg

恢复:

直接使用pg_dump下来的文件会发现无法恢复角色等相关信息img

通过pg_dumpall 转储的结果可以使用psql恢复:

psql -f infile postgresimg

也可使用

psql < fileimg

1.2 第三方软件

在实际测评中,我们还能碰到许多客户是用第三方软件来对数据库系统进行数据备份的。

这里我们就要去查看备份软件中设置的策略是如何的。

总结:

至少需要确认备份的时间(如几点执行备份)、频率(如每日执行还是每周)、备份内容(如全库备份还是增量,或者有些是对服务器整机进行备份,同时包含了数据库)、备份文件存储(如本地存储还是定时存储在哪)、是否具有恢复功能(当然如果这个功能都没的话,这软件还是别卖了。。)等。img

确认完这些后,还要去查看备份的地方是否真的生成了备份文件,同时还需对备份文件进行恢复测试,确认备份数据的有效性。

2. 应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地

这个就去询问管理人员是否将数据进行了异地备份。不同行业对异地的标准也是不同,具体的需要依据行业的指导文件进行判断。

这里我个人好像在哪里看到过异地至少30公里,不知道脑子里为啥有30公里这个印象,主要这个条款的目的也是避免一些重大灾害的,比如地震、火灾之类的。

3. 应提供重要数据处理系统的热冗余,保证系统的高可用性

这条也没啥好说的,热冗余一般就是看是否采用热备、集群等方式部署,一般至少两台部署,去找管理人员询问、取证。
咱也不可能每种数据库、服务器之类怎么热冗余部署的都搞清楚,那也不会做等保了是吧,得干运维去了(滑稽),所以一般我还是去询问管理人员这个是什么方式部署的。

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: MySQL数据库脚本转PgSQL数据库脚本工具是一种用于将使用MySQL语法编写的数据库脚本转换为使用PgSQL语法编写的数据库脚本的工具。这样可以在不用手动修改代码的情况下,轻松地将MySQL数据库迁移到PgSQL数据库。 使用这样的工具可以带来一些优势。首先,它可以节省时间和精力,因为手动将MySQL脚本转换为PgSQL脚本可能会非常繁琐。工具可以自动识别并转换查询语句、表定义、索引和其他数据库对象。 其次,使用这种工具可以减少人为错误的发生。手动转换脚本意味着有可能出现疏漏或错误的转换,导致数据库在迁移过程中出现问题。使用工具可以提高准确性和可靠性,减少潜在错误的出现。 此外,这种工具通常还提供了一些额外的功能,例如自动检测并解决不兼容的语法、数据类型或函数等。这样的功能可以进一步简化迁移过程,并确转换后的脚本可以成功地在PgSQL数据库中运行。 总之,MySQL数据库脚本转PgSQL数据库脚本工具是一种有用的工具,可以帮助开发人员轻松地将MySQL数据库迁移到PgSQL数据库。它能够节省时间和精力,并证准确性和可靠性。对于需要进行数据库迁移的项目来说,这是一个十分方便的工具。 ### 回答2: MySQL数据库脚本转PGSQL数据库脚本工具是一种实用工具,可以将MySQL数据库的脚本转换成PGSQL数据库的脚本。MySQL和PGSQL是两种不同的关系型数据库管理系统,它们在语法和功能上存在一些差异。当需要将MySQL数据库迁移到PGSQL数据库时,如果手动修改脚本将会非常繁琐和耗时,这时就需要使用MySQL数据库脚本转PGSQL数据库脚本工具。 该工具可以从MySQL数据库中提取脚本,并将其转换成与PGSQL数据库兼容的格式。它能够将MySQL的特定语法和功能转换成PGSQL数据库可以理解和执行的语法和功能。这样,我们就可以简单方便地将MySQL数据库迁移到PGSQL数据库,而无需手动修改每个脚本。 此工具通常具有用户友好的界面和简单易用的操作步骤。用户只需导入MySQL脚本文件,选择要转换成PGSQL格式的文件和转换选项,然后点击转换按钮即可。工具会自动将MySQL脚本转换成PGSQL脚本,并输出转换后的文件供用户使用。 除了将MySQL脚本转换成PGSQL脚本,该工具通常还提供其他功能,如批量转换和批量执行脚本等。这些功能使用户能够更高效地迁移和管理数据库。 综上所述,MySQL数据库脚本转PGSQL数据库脚本工具是一种便捷实用的工具,可以将MySQL数据库脚本转换成PGSQL数据库脚本,从而简化数据库迁移过程,并提高数据库管理的效率。 ### 回答3: MySQL数据库脚本转换为PgSQL数据库脚本的工具有很多,其中一种常用的工具是pgloader。pgloader是一个用于将数据从其他数据库系统(包括MySQL)迁移到PostgreSQL的开源工具。 使用pgloader工具可以方便地将MySQL数据库脚本转换为PgSQL数据库脚本。以下是使用pgloader进行转换的步骤: 1. 安装pgloader工具:将pgloader的安装文件下载到本地,然后通过命令行或终端安装。 2. 创建目标数据库:在PostgreSQL中创建一个用于存储转换后数据的目标数据库。 3. 创建一个MySQL连接的配置文件:在本地创建一个配置文件,包含要连接的MySQL数据库的相关信息,如主机名、端口、用户名和密码等。 4. 创建一个PgSQL连接的配置文件:同样,在本地创建一个配置文件,包含要连接的PgSQL数据库的相关信息,如主机名、端口、用户名和密码等。 5. 编写转换脚本:使用pgloader提供的脚本语法,将MySQL数据库脚本转换为PgSQL数据库脚本。根据需要可以选择将表、视图、函数、存储过程等转换到PgSQL数据库。 6. 运行pgloader工具:通过命令行或终端运行pgloader工具,指定MySQL和PgSQL连接的配置文件和转换脚本。 7. 检查转换结果:在转换过程完成后,检查PgSQL数据库中的数据是否正确转换。 通过使用pgloader工具,可以快速、简便地将MySQL数据库脚本转换为PgSQL数据库脚本。除了pgloader,还有其他一些类似的工具可供选择,如mysqldump转pg_dump或使用ETL工具进行转换等。根据具体需求选择合适的工具可以提高转换效率和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在输入中…………

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值