提升mysql数据库安全等级(mysql数据库安全性)

本文目录一览:

为什么很多大公司用mysql数据库?

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。

由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

MySQL关系型数据库使用系统核心提供的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(APIs),支持多种字段类型并且提供了完整的操作符支持查询中的SELECT和WHERE操作。

时至今日 mysql 和 php 的结合绝对是完美.很多大型的网站也用到mysql数据库.mysql的发展前景是非常光明的!

国内银行系统用Oracle数据库不怕泄密吗?

典型的总有刁民想害朕的心态[灵光一闪]

泄密到不存在,一般国内银行用Oracle的同时都会购买Oracle的维护服务,除非甲骨文不想做中国的生意了。当然因为中美关系的问题,一些行已经开始从周边系统逐渐开始改造使用国产数据库,比如华为的高斯200,同时国内的国有软件企业也在部署研发国产的数据库,公司名就不说了,反正确实有这个安排。

真的是个好问题,国家核心系统从什么开始决心抛弃windows。银行系统数据太过庞大复杂,上了贼船,下船太难太难了。

我是金融行业的码农,也算是有一定的发言权吧。

在数据库方面,金融领域用到的有Oracle和SQLServer等商业软件,也有Mysql、Redis等开源软件。这些软件有个令人沮丧的共同点, 很少有国产自主研发数据库 。

随着互联网的飞速发展,信息化浪潮席卷各个行业。效率的大幅提升,彻底颠覆了既有的工作模式。率先拥抱变革的企业收获了巨大收益,让后来者羡慕嫉妒恨。

信息技术不管发展如何,都绕不开数据存储,数据存储以关系型数据库最符合人的思维方式。关系型数据库中的翘楚无疑是Oracle数据库。

再回到题主的泄密问题,即Oracle数据库安全么?我的答案是 即安全又不安全 。之所以安全因为它是最好关系型数据库,常见的指标如易用性、稳定性、可用性、可恢复性都有完整的解决方案。之所以不安全是因为它是国外的闭源软件,是否有安全隐患,国人不得而知。

技术上不可控,我们怎么才能避免呢?答案是从管理上从严控制。

不怕。

物理上是对外隔离的, 架构上也有大量技术手段确保数据的安全。

但是自主可控的趋势不可阻挡。

内网,物理隔离。外网用啥都没用,想搞你不过是时间问题。

国内银行系统用的数据库很多, 核心系统一般都用老牌的商业数据库DB2、Oracle 。其他系统也有用Mysql、MongoDB等其他数据库。至于数据泄露吗?银行当然也怕。但是,就综合考虑来看,目前Oracle等商业数据库依然是最佳选择,将来可能会一步一步提高安全等级。

1、稳定是首要选项

我们都知道,银行是金融系统的重要机构。它们的系统不能够随便出问题,一出问题影响整个 社会 。所以, 对银行来说,稳定是摆在首要位置的 。任何创新都必须以此为前提。而DB2、Oracle这些商业数据库软件,首先能够满足银行的稳定性要求。

而在中国,银行是比较早有信息化的单位。但刚开始,没有任何经验的时候,只能是跟欧美国家学习模仿。外企银行基本都是采用oracle、DB2来做核心系统。中国自然是采用国外相同的方案。大部分银行也就采用了当时比较流行的一整套IBM大型机、小型机硬件,配套DB2、Oracle数据库来做。

2、安全实现手段

①、厂家信誉

一直用DB2、Oracle作为核心数据库。对银行来说,已经是最佳选择。因为,在过去,国产根本就没有什么拿得出手的数据库可以使用。银行自然也只能用业界最好的数据库,而且Oracle、DB2这类大品牌的数据库,在全球范围应用都很广。厂家自然也要注意保障安全,否则出了问题,全世界都受影响。

②、技术控制

除了厂家的信誉保障外,银行在技术上做了很多安全措施。首先, 内外网是物理隔离的 。这样,实时连接数据库的攻击是很难实现的了。其次,在防止数据泄露这一块,银行当然也是有很多的技术手段控制的。至少,外网需要的数据是从内网的网闸摆渡过去的。能摆渡什么数据出去,也是银行严格控制的。最后, 数据库里的敏感数据,也是加密存储的 。同时,网络上还 部署了一系列网络安全设备来 保障系统的安全。

3、银行安全需升级

银行现在虽然有很多的技术手段来保障信息安全,但是,DB2、Oracle始终是国外闭源商业数据库软件。如果软件存在漏洞或者后门,对银行来说也是一个大风险。加上国际形势风云变化,所以,银行也还是会有担心泄密问题,这就意味着银行的安全体系还需要升级。

那该如何升级安全呢?除了系统过等级保护外,也一直在倡导用安全可靠的软件。这就意味着需要逐步从Oracle、DB2等商业软件走向开源、或者国产等数据库软件。不过,银行的稳定性还是不能忽略的,所以, 银行也就只能逐步 探索 ,逐步提升安全。同时,国产数据库发展也还有很长一段路要走 。

总结

总之,早些年银行从稳定和安全出发,Oracle、DB2等商业数据库是最佳选择。这些年,随着国际形势的变化和技术的发展,银行也在逐步提升安全等级。将来也会逐步替换Oracle、DB2等商业数据库软件。

这是个系统的问题。

有些朋友说物理隔离,目前看应该做不到100%隔离。银行数据中心就是提供服务的,隔离了怎么提供服务?各个分行,网点,ATM都是要联网的,都是要访问数据库的,只是权限不同。

归结起来就是数据安全和数据库系统,计算机系统,网络系统,以及工作人员都是相关的,必须全方位防护。

数据库系统,国产化当然是必须的,但是国产数据库系统就没有漏洞吗?不故意窃取数据,难保不因失误而失窃。这个要加强测试。

计算机系统,包括软件和硬件,同样道理。

网络方面,银行应该是租用运营商的线路(虚拟专网,VPN)实现网点互联。出点和入点之间加密传输。如果加密算法没有被破解,秘钥没有暴露,一般没问题。但毕竟还是有”如果”的。

人的问题更大一些,买通一个人不太难吧?这个要通过层层审核,相互制衡,以及思想政治工作来防范。

所以说信息系统的安全防护是全方位的。

要使用SWIFT ,国际资金清算系统,就必须与国际接轨,所以必须用Oracl。

林郑太太被制裁,信用卡不能用,工资都发现金,使用也是现金,那么多的国行,没有一家敢接盘。

有别的选择吗。

mysql的特点是什么?

一、MySQL数据库的特点和优势:

(1)功能强大

MySQL 中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点。MySQL5 支持事务、视图、存储过程、触发器等。

(2)支持跨平台

MySQL 支持至少 20 种以上的开发平台,包括 Linux、Windows、FreeBSD 、IBMAIX、AIX、FreeBSD 等。这使得在任何平台下编写的程序都可以进行移植,而不需要对程序做任何的修改。

(3)运行速度快

高速是 MySQL 的显著特性。在 MySQL 中,使用了极快的 B 树磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多连接,能够极快地实现连接;SQL 函数使用高度优化的类库实现,运行速度极快。

(4)支持面向对象

PHP 支持混合编程方式。编程方式可分为纯粹面向对象、纯粹面向过程、面句对象与面向过程混合 3 种方式。

(5)安全性高

灵活和安全的权限与密码系统,允许基本主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码的安全。

(6)成本低

MySQL 数据库开放源代码且无版权制约,是一种完全免费的产品,用户可以直接通过网络下载,自主性及使用成本低。体积小,安装方便。历史悠久,用户使用活跃,遇到问题可以寻求帮助,易于维护。

(7)支持各种开发语言

MySQL 为各种流行的程序设计语言提供支持,为它们提供了很多的 API 函数,包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl 语言等。

(8)数据库存储容量大

MySQL 数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由 MySQL 内部限制决定的。InnoDB 存储引擎将 InnoDB 表保存在一个表空间内,该表空间可由数个文件创建,表空间的最大容量为 64TB,可以轻松处理拥有上千万条记录的大型数据库。

(9)支持强大的内置函数

PHP 中提供了大量内置函数,几乎涵盖了 Web 应用开发中的所有功能。它内置了数据库连接、文件上传等功能,MySQL 支持大量的扩展库,如 MySQLi 等,可以为快速开发 Web 应用提供便利。

二、相比其他数据库的特点和优势:

(1) 对事务的提交

MySQL默认是自动提交,不需要在写commit指令或者点击commit按钮。

(2) 分页查询

MySQL是直接在SQL语句中写”select… from …where…limit  m, n”,有limit就可以实现分页。PHP里还可以用SEEK定位到结果集的位置。

(3) 事务隔离级别

MySQL是read commited的隔离级别。

一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据。

(4) 复制简单

MySQL复制服务器配置简单。

(5) 自动增长的数据类型处理

MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。

(6) 单引号的处理

MYSQL里可以用双引号包起字符串。

(7) 日期字段的处理

MYSQL日期字段分DATE和TIME两种。

(8) 空字符的处理

MYSQL的非空字段也有空的内容,NULL或空字符。

如何做好MySQL安全策略

摘至网页链接

常见Mysql配置文件:linux系统下是my.conf,windows环境下是my.ini;

数据库整体安全需求:机密性、完整性、可用性;

下面以mysql 5.7版本为例,介绍mysql常见的安全策略、配置、加固方式等等,有些策略可能只针对Linux操作系统,更多策略可以参考CIS Mysql Benchmark相关文档:

1、操作系统级别安全配置

1.1不要将数据库放在系统分区

Windows系统:直接检查是否将数据库放置在C盘。

Linux系统:

在终端连接上mysql数据库,执行如下命令:

show variables where variable_name = ‘datadir’;

然后返回shell命令行:

df -h datadir

其中datadir是上一条命令的返回值。

上述命令的返回值不应是/、/var、/usr

1.2使用专用的最小权限账号运行mysql数据库进程

Windows系统:直接打开任务管理器,查看运行mysql进程的操作系统账号,不能为administrator账号。

Linux系统:

Shell命令行运行如下命令:

ps -ef | grep mysql

查看mysql服务的运行账号是否为root或其他高权限账号,如果是的,则需要创建一个非管理员专用账号来运行mysql服务。

1.3禁止使用mysql命令行历史记录

Linux系统:

执行如下命令:

find / -name “.mysql_history”

查看是否存在mysql的历史命令记录文件,如果存在,则需要进行如下加固:

(1)删除.mysql_history文件;

(2)设置环境变量MYSQL_HISTFILE为/dev/null,并添加到shell的初始化脚本中,创建mysql_history到/dev/null的链接:

ln -s /dev/null $HOME/.mysql_history

1.4 确保MYSQL_PWD环境变量未设置敏感信息

Windows系统下进入cmd命令行,使用如下命令:

Set

查看是否设置了环境变量MYSQL_PWD。

Linux系统下使用如下命令:

grep MYSQL_PWD /proc/*/environ

查看MYSQL_PWD环境变量是否设置了敏感信息。

确认那个配置文件或脚本设置了MYSQL_PWD环境变量。

2、安装

2.1使用数据库专用服务器

使用专用的服务器安装mysql服务可以减少mysql服务的攻击面,尽量卸载或删除操作系统上的不必要的应用或服务,减少其他应用的安装可能给mysql的运行带来的安全风险。

2.2 不要复用数据库账号

运行mysql服务的操作系统账号不要用来运行其他应用或服务,这样可以避免其他应用或服务器被攻击给mysql服务带来影响。

2.3 历史命令行密码设置为不可见

使用如下命令:

mysql -u admin -p password

连接mysql数据库服务,退出后查看历史命令,确认password是否为明文。

建议使用如下命令方式登录:

(1)先输入mysql -u admin -p

(2)根据命令行提示输入密码;

而不要在一整条命令中输入密码。

另外要控制mysql配置文件访问权限。

3、文件权限控制

3.1 控制数据目录的访问权限

数据目录是mysql数据库存放的位置,在mysql命令行界面下执行如下命令:

show variables where variable_name = ‘datadir’;

在终端命令行下执行如下命令:

ls -l datadir/.. | egrep “^d[r|w|x]{3}——\s*.\s*mysql\s*mysql\s*\d*.*mysql”

其中datadir是第一条命令的执行结果

如果存在问题,linux环境下在终端执行如下命令进行加固:

chmod 700 datadir

chown mysql:mysql datadir

3.2 控制二进制日志文件的权限

mysql的运行会产生很多日志,例如二进制日志、错误日志、慢查询日志等等,Mysql命令行下执行如下命令:

show variables like ‘log_bin_basename’;

在终端命令行执行如下命令:

ls log_bin_basename.*

对于发现的每一个文件,执行如下命令:

ls -l log_bin_basename.nnnnn | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”

根据输出确认日志文件的权限设置是否存在问题。

对于每个日志文件,修改其权限和属组如下:

chmod 660 log file

chown mysql:mysql log file

3.3 控制错误日志文件的权限

Mysql命令行下执行如下命令:

show variables like ‘log_error’;

在终端命令行执行如下命令:

ls log_error.*

对于发现的每一个文件,执行如下命令:

ls -l log_error | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”

根据输出确认日志文件的权限设置是否存在问题。

对于每个日志文件,修改其权限和属组如下:

chmod 660 log file

chown mysql:mysql log file

3.4控制慢查询日志文件的权限

Mysql命令行下执行如下命令:

show variables like ‘slow_query_log_file’;

在终端命令行执行如下命令:

ls slow_query_log_file.*

对于发现的每一个文件,执行如下命令:

ls -l slow_query_log_file | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”

根据输出确认日志文件的权限设置是否存在问题。

对于每个日志文件,修改其权限和属组如下:

chmod 660 log file

chown mysql:mysql log file

3.5控制通用日志文件的权限

Mysql命令行下执行如下命令:

show variables like ‘general_log_file’;

在终端命令行执行如下命令:

ls general_log_file.*

对于发现的每一个文件,执行如下命令:

ls -l general_log_file | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”

根据输出确认日志文件的权限设置是否存在问题。

对于每个日志文件,修改其权限和属组如下:

chmod 660 log file

chown mysql:mysql log file

3.6控制审计日志文件的权限

Mysql命令行下执行如下命令:

show global variables where variable_name =  ‘audit_log_file’;

在终端执行如下命令:

ls -l audit_log_file | egrep “^-rw[-x]rw[-x][-r][-w][-x][ \t]*[0-9][ \t]*mysql[

\t]*mysql.*$”

根据输出确认日志文件的权限设置是否存在问题。

对于每个日志文件,修改其权限和属组如下:

chmod 660 audit_log_file

chown mysql:mysql audit_log_file

4、通用安全

4.1安装最新的补丁

在mysql命令行下查询MySQL的版本:

SHOW VARIABLES WHERE Variable_name LIKE “version”;

确认是否由需要安装的补丁包,如果有请安装。

4.2 删除test数据库

Mysql数据库默认安装好后,存在一个名为test的数据库,如果存在,请执行如下命令删除:

Drop database “test”

4.3 确保读取本地文件的参数设置为失效

Mysql命令行下,使用如下命令:

SHOW VARIABLES WHERE Variable_name = ‘local_infile’;

查看结果是否为OFF。

如果该命令为ON,则数据库用户可以通过LOAD DATA INFILE 或者 SELECT local_file 读取到数据库所在操作系统本地的文件,在这种情况下,需要在mysql配置文件中新增一行:

Local-infile=0;

然后重启数据库服务。

5、权限配置

5.1控制可以访问所有数据库的账号

Mysql数据库下的user表和db表中存放着可以授予数据库用户的权限,确保只有管理员账号才能访问所有数据库。可以访问mysql数据库的用户或许可以查看密码哈希值、修改用户权限等等。

使用如下sql语句:

SELECT user, host FROM mysql.user

WHERE (Select_priv = ‘Y’) OR (Insert_priv = ‘Y’) OR (Update_priv = ‘Y’)

OR (Delete_priv = ‘Y’)  OR (Create_priv = ‘Y’)  OR (Drop_priv = ‘Y’);

SELECT user, host FROM mysql.db WHERE db = ‘mysql’

AND ((Select_priv = ‘Y’) OR (Insert_priv = ‘Y’) OR (Update_priv = ‘Y’)

OR (Delete_priv = ‘Y’) OR (Create_priv = ‘Y’) OR (Drop_priv = ‘Y’));

确保返回结果只能是数据库管理员账号。

5.2限制非管理员用户的权限

Mysql.user表中的权限列有:

file_priv:表示是否允许用户读取数据库所在主机的本地文件;

Process:表示是否允许用户查询所有用户的命令执行信息;

Super_priv:表示用户是否有设置全局变量、管理员调试等高级别权限;

Shutdown_priv:表示用户是否可以关闭数据库;

Create_user_priv:表示用户是否可以创建或删除其他用户;

Grant_priv:表示用户是否可以修改其他用户的权限;

应确保只有数据库管理员才有上述权限,使用如下sql语句查看拥有各个权限的数据库账号:

select user, host from mysql.user where File_priv = ‘Y’;

select user, host from mysql.user where Process_priv = ‘Y’;

select user, host from mysql.user where Process_priv = ‘Y’;

SELECT user, host FROM mysql.user WHERE Shutdown_priv = ‘Y’;

SELECT user, host FROM mysql.user WHERE Create_user_priv = ‘Y’;

SELECT user, host FROM mysql.user WHERE Grant_priv = ‘Y’;

SELECT user, host FROM mysql.db WHERE Grant_priv = ‘Y’;

确保查询结果中不存在非管理员用户。

如果存在非管理员用户,使用如下命令进行权限回收:

REVOKE FILE ON *.* FROM ‘user’;

REVOKE PROCESS ON *.* FROM ‘user’;

REVOKE SUPER ON *.* FROM ‘user’;

REVOKE SHUTDOWN ON *.* FROM ‘user’;

REVOKE CREATE USER ON *.* FROM ‘user’;

REVOKE GRANT OPTION ON *.* FROM user;

其中user为上述查询到的非管理员用户。

5.3合理控制DML/DDL操作授权

DML/DDL语句包括创建或修改数据库结构的权限,例如insert、update、delete、create、drop和alter语句,在任何数据库中都要控制用户的此类权限,确保只授权给有业务需求的非管理员用户。Mysql命令行下执行如下命令:

SELECT User,Host,Db FROM mysql.db WHERE Select_priv=’Y’

OR Insert_priv=’Y’ OR Update_priv=’Y’ OR Delete_priv=’Y’ OR Create_priv=’Y’

OR Drop_priv=’Y’ OR Alter_priv=’Y’;

上述查询到的用户只能对特地的数据库才有相关的权限,使用如下命令进行相关权限的回收:

REVOKE SELECT ON host.database FROM user;

REVOKE INSERT ON host.database FROM user;

REVOKE UPDATE ON host.database FROM user;

REVOKE DELETE ON host.database FROM user;

REVOKE CREATE ON host.database FROM user;

REVOKE DROP ON host.database FROM user;

REVOKE ALTER ON host.database FROM user;

其中user为查询到的未授权的用户,host为相关主机,database为相关数据库。

6、审计和日志

6.1开启错误日志审计功能

错误日志包括数据库运行和停止过程中的一系列活动信息,有助于分析数据库运行过程中的一些异常活动,一般情况下需要开启错误日志记录功能,使用如下命令查询:

SHOW variables LIKE ‘log_error’;

确保返回结果为非空,如果为空,需要在mysql数据库配置文件中增加相关配置。

6.2确保日志存放在非系统区域

日志文件随着数据库的运行会不断增加,如果存放在系统区域,则会影响系统的正常运行,使用如下命令进行查询:

SELECT @@global.log_bin_basename;

确保返回结果不是如下路径:/、/var、/usr

6.3关闭原始日志功能

原始日志选项会决定一些敏感信息是否会被明文写进日志中,例如查询日志、慢查询日志、二进制日志,确保数据库配置文件中存在如下配置项:

Log-raw = OFF

7、认证

7.1 Old_passwords环境变量设置

Old_passwords决定了使用PASSWORD()函数和IDENTIFIED BY 、CREATE USER 、GRANT 等语句是时的hash算法:

0 – authenticate with the mysql_native_password plugin

1 – authenticate with the mysql_old_password plugin

2 – authenticate with the sha256_password plugin

设置为mysql_old_password代表弱hash算法,可以快速通过密码字典进行暴力破解。使用如下命令查询相关值:

SHOW VARIABLES WHERE Variable_name = ‘old_passwords’;

确保返回值不为1。

7.2 secure_auth 选项设置

如果客户端采用Old_passwords发起连接请求,如果服务器端设置了secure_auth,则客户端会拒绝连接请求,可以根据安全需求在配置文件中做相应配置。

7.3 密码保存

确保密码没有明文保存在全局配置文件中。

7.4 确保所有用户都要求使用非空密码登录

执行如下语句查询是否有用户不需要密码即可登录:

SELECT User,host

FROM mysql.user

WHERE (plugin IN(‘mysql_native_password’, ‘mysql_old_password’)

AND (LENGTH(Password) = 0

OR Password IS NULL))

OR (plugin=’sha256_password’ AND LENGTH(authentication_string) = 0);

7.5不存在空账号

使用如下命令查询是否存在空账号:

SELECT user,host FROM mysql.user WHERE user = ”;

8、网络设置

如果mysql数据库服务器与应用是跨信任域部署的,则需要考虑在数据库服务器与应用服务器之间建立ssl通道进行数据传输,不过这种场景一般很少见,在此不详细描述。

9、数据库备份

请问怎样把mysql数据库和数据从5.0.17升级到5.0.27,谢谢!

1.导出5.0.17当前数据库数据,进行备份。

2.安装5.0.27进行备份数据导入。

3.具体操作

Windows中升级MySQL应采取的步骤:

1. 进行升级前你应先备份当前的MySQL安装。

2. 下载最新Windows版MySQL。

3. 升级MySQL前,必须停止服务器。

如果服务器安装为服务,必须在命令提示符下在命令行中用下面的命令停止服务:

C:\ NET STOP MYSQL如果MySQL服务器不是服务,使用下面的命令停止服务器:

C:\ C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin -u root shutdown4.

4.当从以前至的4.1.5版本升级到MySQL 5.1时,或从Zip文件安装的MySQL升级到MySQL Installation Wizard(安装帮助)安装的MySQL时,你必须手动卸载前面安装的MySQL服务。

要想卸载MySQL服务,使用下面的命令:

C:\ C:\mysql\bin\mysqld –remove

如果你不想卸载已有的服务,MySQL Installation Wizard(安装帮助)则不会正确安装新的MySQL服务。

5. 如果你使用MySQL Installation Wizard(安装帮助),请参考“使用MySQL安装向导”的描述来启动帮助。

6. 如果用Zip文件安装MySQL,应提取文件。你可以覆盖已有的MySQL安装(通常位于C:\mysql),或将它安装到其它目录,例如 C:\mysql4。建议覆盖原有的安装。

7. 重新启动服务器。如果你运行MySQL服务,则使用NET START MySQL,还可以直接调用mysqld。

相关文章从Windows命令行启动MySQL 如何在Mac OS X中安装MySQL Windows下MySQL安装故障诊断与排除 迅速优化MySQL数据库性能完全解析MySQL数据库中Show命令用法无法远程登入MySQL数据库解决办法保持MySQL安全公共MySQL的数据库服务器层快速掌握升级MySQL系统表Java操作MySQL的中文处理方法 最新文章MySQL查询优化器浅析SQL Server 2005 Analysis Services性能指南Access中使用SQL语句应掌握的几点技巧联合删除两张表的数据Oracle Stream配置详细步骤ASP.NET应用中缓存Oracle数据Oracle数据库绑定变量特性及应用一个将Excel中的数据导入MySQL的简单方法讲解MySQL数据库搜索中的大小写敏感性利用utl_smtp从Oracle数据库发送带blob附件的电子邮件

在IT项目建设中,如何保证数据库安全性?

#云原生背景#

云计算是信息技术发展和服务模式创新的集中体现,是信息化发展的重要变革和必然趋势。随着“新基建”加速布局,以及企业数字化转型的逐步深入,如何深化用云进一步提升云计算使用效能成为现阶段云计算发展的重点。云原生以其高效稳定、快速响应的特点极大地释放了云计算效能,成为企业数字业务应用创新的原动力,云原生进入快速发展阶段,就像集装箱加速贸易全球化进程一样,云原生技术正在助力云计算普及和企业数字化转型。

云原生计算基金会(CNCF)对云原生的定义是:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式编程API。

#云安全时代市场发展#

云安全几乎是伴随着云计算市场而发展起来的,云基础设施投资的快速增长,无疑为云安全发展提供土壤。根据 IDC 数据,2020 年全球云安全支出占云 IT 支出比例仅为 1.1%,说明目前云安全支出远远不够,假设这一比例提升至 5%,那么2020 年全球云安全市场空间可达 53.2 亿美元,2023 年可达 108.9 亿美元。

海外云安全市场:技术创新与兼并整合活跃。整体来看,海外云安全市场正处于快速发展阶段,技术创新活跃,兼并整合频繁。一方面,云安全技术创新活跃,并呈现融合发展趋势。例如,综合型安全公司 PaloAlto 的 Prisma 产品线将 CWPP、CSPM 和 CASB 三个云安全技术产品统一融合,提供综合解决方案及 SASE、容器安全、微隔离等一系列云上安全能力。另一方面,新兴的云安全企业快速发展,同时,传统安全供应商也通过自研+兼并的方式加强云安全布局。

国内云安全市场:市场空间广阔,尚处于技术追随阶段。市场规模上,根据中国信通院数据,2019 年我国云计算整体市场规模达 1334.5亿元,增速 38.6%。预计 2020-2022 年仍将处于快速增长阶段,到 2023 年市场规模将超过 3754.2 亿元。中性假设下,安全投入占云计算市场规模的 3%-5%,那么 2023 年中国云安全市场规模有望达到 112.6 亿-187.7 亿元。技术发展上,中国在云计算的发展阶段和云原生技术的程度上与海外市场还有一定差距。国内 CWPP 技术应用较为广泛,对于 CASB、CSPM 一些新兴的云安全技术应用较少。但随着国内公有云市场的加速发展,云原生技术的应用越来越广泛,我们认为CASB、SCPM、SASE 等新兴技术在国内的应用也将越来越广泛。

#云上安全呈原生化发展趋势#

云原生技术逐渐成为云计算市场新趋势,所带来的安全问题更为复杂。以容器、服务网格、微服务等为代表的云原生技术,正在影响各行各业的 IT 基础设施、平台和应用系统,也在渗透到如 IT/OT 融合的工业互联网、IT/CT 融合的 5G、边缘计算等新型基础设施中。随着云原生越来越多的落地应用,其相关的安全风险与威胁也不断的显现出来。Docker/Kubernetes 等服务暴露问题、特斯拉 Kubernetes 集群挖矿事件、Docker Hub 中的容器镜像被“投毒”注入挖矿程序、微软 Azure 安全中心检测到大规模 Kubernetes 挖矿事件、Graboid 蠕虫挖矿传播事件等一系列针对云原生的安全攻击事件层出不穷。

从各种各样的安全风险中可以一窥云原生技术的安全态势,云原生环境仍然存在许多安全问题亟待解决。在云原生技术的落地过程中,安全是必须要考虑的重要因素。

#云原生安全的定义#

国内外各组织、企业对云原生安全理念的解释略有差异,结合我国产业现状与痛点,云原生与云计算安全相似,云原生安全也包含两层含义:“面向云原生环境的安全”和“具有云原生特征的安全”。

面向云原生环境的安全,其目标是防护云原生环境中的基础设施、编排系统和微服务的安全。这类安全机制,不一定具备云原生的特性(比如容器化、可编排),它们可以是传统模式部署的,甚至是硬件设备,但其作用是保护日益普及的云原生环境。

具有云原生特征的安全,是指具有云原生的弹性敏捷、轻量级、可编排等特性的各类安全机制。云原生是一种理念上的创新,通过容器化、资源编排和微服务重构了传统的开发运营体系,加速业务上线和变更的速度,因而,云原生系统的种种优良特性同样会给安全厂商带来很大的启发,重构安全产品、平台,改变其交付、更新模式。

#云原生安全理念构建#

为缓解传统安全防护建设中存在的痛点,促进云计算成为更加安全可信的信息基础设施,助力云客户更加安全的使用云计算,云原生安全理念兴起,国内外第三方组织、服务商纷纷提出以原生为核心构建和发展云安全。

Gartner提倡以云原生思维建设云安全体系

基于云原生思维,Gartner提出的云安全体系覆盖八方面。其中,基础设施配置、身份和访问管理两部分由云服务商作为基础能力提供,其它六部分,包括持续的云安全态势管理,全方位的可视化、日志、审计和评估,工作负载安全,应用、PaaS 和 API 安全,扩展的数据保护,云威胁检测,客户需基于安全产品实现。

Forrester评估公有云平台原生安全能力

Forrester认为公有云平台原生安全(Public cloud platform native security, PCPNS)应从三大类、37 个方面去衡量。从已提供的产品和功能,以及未来战略规划可以看出,一是考察云服务商自身的安全能力和建设情况,如数据中心安全、内部人员等,二是云平台具备的基础安全功能,如帮助和文档、授权和认证等,三是为用户提供的原生安全产品,如容器安全、数据安全等。

安全狗以4项工作防护体系建设云原生安全

(1)结合云原生技术的具体落地情况开展并落实最小权限、纵深防御工作,对于云原生环境中的各种组成部分,均可贯彻落实“安全左移”的原则,进行安全基线配置,防范于未然。而对于微服务架构Web应用以及Serverless应用的防护而言,其重点是应用安全问题。

(2)围绕云原生应用的生命周期来进行DevSecOps建设,以当前的云原生环境的关键技术栈“K8S + Docker”举例进行分析。应该在容器的全生命周期注重“配置安全”,在项目构建时注重“镜像安全”,在项目部署时注重“容器准入”,在容器的运行环境注重云计算的三要素“计算”“网络”以及“存储”等方面的安全问题。

(3)围绕攻击前、中、后的安全实施准则进行构建,可依据安全实施准则对攻击前、中、后这三个阶段开展检测与防御工作。

(4)改造并综合运用现有云安全技术,不应将“云原生安全”视为一个独立的命题,为云原生环境提供更多支持的主机安全、微隔离等技术可赋能于云原生安全。

#云原生安全新型风险#

云原生架构的安全风险包含云原生基础设施自身的安全风险,以及上层应用云原生化改造后新增和扩大的安全风险。云原生环境面临着严峻的安全风险问题。攻击者可能利用的重要攻击面包括但不限于:容器安全、编排系统、软件供应链等。下面对重要的攻击面安全风险问题进行梳理。

#云原生安全问题梳理#

问题1:容器安全问题

在云原生应用和服务平台的构建过程中,容器技术凭借高弹性、敏捷的特性,成为云原生应用场景下的重要技术支撑,因而容器安全也是云原生安全的重要基石。

(1)容器镜像不安全

Sysdig的报告中提到,在用户的生产环境中,会将公开的镜像仓库作为软件源,如最大的容器镜像仓库Docker Hub。一方面,很多开源软件会在Docker Hub上发布容器镜像。另一方面,开发者通常会直接下载公开仓库中的容器镜像,或者基于这些基础镜像定制自己的镜像,整个过程非常方便、高效。然而,Docker Hub上的镜像安全并不理想,有大量的官方镜像存在高危漏洞,如果使用了这些带高危漏洞的镜像,就会极大的增加容器和主机的入侵风险。目前容器镜像的安全问题主要有以下三点:

1.不安全的第三方组件

在实际的容器化应用开发过程当中,很少从零开始构建镜像,而是在基础镜像之上增加自己的程序和代码,然后统一打包最终的业务镜像并上线运行,这导致许多开发者根本不知道基础镜像中包含多少组件,以及包含哪些组件,包含的组件越多,可能存在的漏洞就越多。

2.恶意镜像

公共镜像仓库中可能存在第三方上传的恶意镜像,如果使用了这些恶意镜像来创建容器后,将会影响容器和应用程序的安全

3.敏感信息泄露

为了开发和调试的方便,开发者将敏感信息存在配置文件中,例如数据库密码、证书和密钥等内容,在构建镜像时,这些敏感信息跟随配置文件一并打包进镜像,从而造成敏感信息泄露

(2)容器生命周期的时间短

云原生技术以其敏捷、可靠的特点驱动引领企业的业务发展,成为企业数字业务应用创新的原动力。在容器环境下,一部分容器是以docker的命令启动和管理的,还有大量的容器是通过Kubernetes容器编排系统启动和管理,带来了容器在构建、部署、运行,快速敏捷的特点,大量容器生命周期短于1小时,这样一来容器的生命周期防护较传统虚拟化环境发生了巨大的变化,容器的全生命周期防护存在很大变数。对防守者而言,需要采用传统异常检测和行为分析相结合的方式,来适应短容器生命周期的场景。

传统的异常检测采用WAF、IDS等设备,其规则库已经很完善,通过这种检测方法能够直观的展示出存在的威胁,在容器环境下,这种方法仍然适用。

传统的异常检测能够快速、精确地发现已知威胁,但大多数未知威胁是无法通过规则库匹配到的,因而需要通过行为分析机制来从大量模式中将异常模式分析出来。一般来说,一段生产运营时间内的业务模式是相对固定的,这意味着,业务行为是可以预测的,无论启动多少个容器,容器内部的行为总是相似的。通过机器学习、采集进程行为,自动构建出合理的基线,利用这些基线对容器内的未知威胁进行检测。

(3)容器运行时安全

容器技术带来便利的同时,往往会忽略容器运行时的安全加固,由于容器的生命周期短、轻量级的特性,传统在宿主机或虚拟机上安装杀毒软件来对一个运行一两个进程的容器进行防护,显示费时费力且消耗资源,但在黑客眼里容器和裸奔没有什么区别。容器运行时安全主要关注点:

1.不安全的容器应用

与传统的Web安全类似,容器环境下也会存在SQL注入、XSS、RCE、XXE等漏洞,容器在对外提供服务的同时,就有可能被攻击者利用,从而导致容器被入侵

2.容器DDOS攻击

默认情况下,docker并不会对容器的资源使用进行限制,默认情况下可以无限使用CPU、内存、硬盘资源,造成不同层面的DDOS攻击

(4)容器微隔离

在容器环境中,与传统网络相比,容器的生命周期变得短了很多,其变化频率也快很多。容器之间有着复杂的访问关系,尤其是当容器数量达到一定规模以后,这种访问关系带来的东西向流量,将会变得异常的庞大和复杂。因此,在容器环境中,网络的隔离需求已经不仅仅是物理网络的隔离,而是变成了容器与容器之间、容器组与宿主机之间、宿主机与宿主机之间的隔离。

问题2:云原生等保合规问题

等级保护2.0中,针对云计算等新技术、新应用领域的个性安全保护需求提出安全扩展要求,形成新的网络安全等级保护基本要求标准。虽然编写了云计算的安全扩展要求,但是由于编写周期很长,编写时主流还是虚拟化场景,而没有考虑到容器化、微服务、无服务等云原生场景,等级保护2.0中的所有标准不能完全保证适用于目前云原生环境;

通过安全狗在云安全领域的经验和具体实践,对于云计算安全扩展要求中访问控制的控制点,需要检测主机账号安全,设置不同账号对不同容器的访问权限,保证容器在构建、部署、运行时访问控制策略随其迁移;

对于入侵防范制的控制点,需要可视化管理,绘制业务拓扑图,对主机入侵进行全方位的防范,控制业务流量访问,检测恶意代码感染及蔓延的情况;

镜像和快照保护的控制的,需要对镜像和快照进行保护,保障容器镜像的完整性、可用性和保密性,防止敏感信息泄露。

问题3:宿主机安全

容器与宿主机共享操作系统内核,因此宿主机的配置对容器运行的安全有着重要的影响,比如宿主机安装了有漏洞的软件可能会导致任意代码执行风险,端口无限制开放可能会导致任意用户访问的风险。通过部署主机入侵监测及安全防护系统,提供主机资产管理、主机安全加固、风险漏洞识别、防范入侵行为、问题主机隔离等功能,各个功能之间进行联动,建立采集、检测、监测、防御、捕获一体化的安全闭环管理系统,对主机进行全方位的安全防护,协助用户及时定位已经失陷的主机,响应已知、未知威胁风险,避免内部大面积主机安全事件的发生。

问题4:编排系统问题

编排系统支撑着诸多云原生应用,如无服务、服务网格等,这些新型的微服务体系也同样存在着安全问题。例如攻击者编写一段代码获得容器的shell权限,进而对容器网络进行渗透横移,造成巨大损失。

Kubernetes架构设计的复杂性,启动一个Pod资源需要涉及API Server、Controller、Manager、Scheduler等组件,因而每个组件自身的安全能力显的尤为重要。API Server组件提供的认证授权、准入控制,进行细粒度访问控制、Secret资源提供密钥管理及Pod自身提供安全策略和网络策略,合理使用这些机制可以有效实现Kubernetes的安全加固。

问题5:软件供应链安全问题

通常一个项目中会使用大量的开源软件,根据Gartner统计至少有95%的企业会在关键IT产品中使用开源软件,这些来自互联网的开源软件可能本身就带有病毒、这些开源软件中使用了哪些组件也不了解,导致当开源软件中存在0day或Nday漏洞,我们根本无法获悉。

开源软件漏洞无法根治,容器自身的安全问题可能会给开发阶段带的各个过程带来风险,我们能做的是根据SDL原则,从开发阶段就开始对软件安全性进行合理的评估和控制,来提升整个供应链的质量。

问题6:安全运营成本问题

虽然容器的生命周期很短,但是包罗万象。对容器的全生命周期防护时,会对容器构建、部署、运行时进行异常检测和安全防护,随之而来的就是高成本的投入,对成千上万容器中的进程行为进程检测和分析,会消耗宿主机处理器和内存资源,日志传输会占用网络带宽,行为检测会消耗计算资源,当环境中容器数量巨大时,对应的安全运营成本就会急剧增加。

问题7:如何提升安全防护效果

关于安全运营成本问题中,我们了解到容器安全运营成本较高,我们该如何降低安全运营成本的同时,提升安全防护效果呢?这就引入一个业界比较流行的词“安全左移”,将软件生命周期从左到右展开,即开发、测试、集成、部署、运行,安全左移的含义就是将安全防护从传统运营转向开发侧,开发侧主要设计开发软件、软件供应链安全和镜像安全。

因此,想要降低云原生场景下的安全运营成本,提升运营效率,那么首先就要进行“安全左移”,也就是从运营安全转向开发安全,主要考虑开发安全、软件供应链安全、镜像安全和配置核查:

开发安全

需要团队关注代码漏洞,比如使用进行代码审计,找到因缺少安全意识造成的漏洞和因逻辑问题造成的代码逻辑漏洞。

供应链安全

可以使用代码检查工具进行持续性的安全评估。

镜像安全

使用镜像漏洞扫描工具持续对自由仓库中的镜像进行持续评估,对存在风险的镜像进行及时更新。

配置核查

核查包括暴露面、宿主机加固、资产管理等,来提升攻击者利用漏洞的难度。

问题8:安全配置和密钥凭证管理问题

安全配置不规范、密钥凭证不理想也是云原生的一大风险点。云原生应用会存在大量与中间件、后端服务的交互,为了简便,很多开发者将访问凭证、密钥文件直接存放在代码中,或者将一些线上资源的访问凭证设置为弱口令,导致攻击者很容易获得访问敏感数据的权限。

#云原生安全未来展望#

从日益新增的新型攻击威胁来看,云原生的安全将成为今后网络安全防护的关键。伴随着ATTCK的不断积累和相关技术的日益完善,ATTCK也已增加了容器矩阵的内容。ATTCK是对抗战术、技术和常识(Adversarial Tactics, Techniques, and Common Knowledge)的缩写,是一个攻击行为知识库和威胁建模模型,它包含众多威胁组织及其使用的工具和攻击技术。这一开源的对抗战术和技术的知识库已经对安全行业产生了广泛而深刻的影响。

云原生安全的备受关注,使ATTACK Matrix for Container on Cloud的出现恰合时宜。ATTCK让我们从行为的视角来看待攻击者和防御措施,让相对抽象的容器攻击技术和工具变得有迹可循。结合ATTCK框架进行模拟红蓝对抗,评估企业目前的安全能力,对提升企业安全防护能力是很好的参考。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/184481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-25 17:24
下一篇 2024-11-25 17:24

相关推荐

  • Git secbit:一种新型的安全Git版本

    Git secbit是一种新型的安全Git版本,它在保持Git原有功能的同时,针对Git存在的安全漏洞做出了很大的改进。下面我们将从多个方面对Git secbit做详细地阐述。 一…

    编程 2025-04-29
  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • Python输入姓名成绩输出等级

    在这个项目中,我们需要输入一个学生的姓名和成绩,然后根据成绩给出等级。 一、获取用户输入 首先,我们需要获取用户输入的姓名和成绩。可以使用Python中的input()函数,让用户…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28
  • 手机安全模式怎么解除?

    安全模式是一种手机自身的保护模式,它会禁用第三方应用程序并使用仅限基本系统功能。但有时候,安全模式会使你无法使用手机上的一些重要功能。如果你想解除手机安全模式,可以尝试以下方法: …

    编程 2025-04-28
  • 使用Python对学生分数进行等级输出

    本文将介绍如何使用Python编写程序,实现输入学生分数,输出成绩等级的功能。通过本文的学习,您将深入了解Python的相关知识,同时也能够掌握如何使用Python进行编程。 一、…

    编程 2025-04-28
  • Powersploit:安全评估与渗透测试的利器

    本文将重点介绍Powersploit,并给出相关的完整的代码示例,帮助安全人员更好地运用Powersploit进行安全评估和渗透测试。 一、Powersploit简介 Powers…

    编程 2025-04-28

发表回复

登录后才能评论