一文详解数据库安全基础
今天和大家一起来了解一下数据库安全基础,大家都知道,数据库系统存储着各类重要且敏感的数据,已经成为黑客的主要攻击目标,例如金融信息、公司数据、个人用户数据等,黑客企图通过破坏服务器、数据库来获取利益,因此,确保越来越重要。
本文主要带大家了解数据库中采用的基本安全管理技术,包括访问控制,用户管理,权限管理,对象管理,CTS审计,具体内容就将从基本概念,使用方法,以及应用场景等多个方面详细阐述。
首先带大家了解数据库安全管理,
1.数据库安全管理是指:
(1)保护数据免受未经授权的访问,防止重要信息泄漏
(2)避免因为硬件或者软件的错误导致数据的损失。
包括但不限于:
(1)网络安全性;
(2)系统安全性;
(3)数据安全性。
接下来和大家一起来了解一下数据库的安全框架
2.数据库安全框架
广义范围内,数据库安全框架可以分为三个层次:
1.网络层次安全
从技术角度讲,网络系统层次安全方法技术主要有加密技术,数字签名技术,防火墙技术和入侵检测技术等。
2.操作系统层次安全
核心是要保证服务器的安全,主要体现在服务器的用户账户,口令,访问权限等方面。
数据安全主要体现在加密技术、数据存储的安全性,数据传输的安全性等方面,如Kerberos,IPsec,SSL和VPN等技术。
3.数据管理系统层次安全
数据库加密;
数据存取访问控制;
安全审计;
数据备份。
3.数据库安全总览
4.访问控制策略
-
IAM
-
SSL
4.1IAM
4.1.1什么是IAM
统一身份认证(Identity and Access Management,简称IAM)是华为云提供权限管理、访问控制和身份认证的基础服务,您可以使用IAM创建和管理用户、用户组,通过授权来允许或拒绝他们对云服务和资源的访问,通过设置安全策略提高帐号和资源的安全性,同时IAM为您提供多种安全的访问凭证
本服务默认开通,免费使用
4.1.2IMO授权
(1)IAM为华为云其他服务 提供认证和授权功能,在IAM中创建的用户,经过授权后可以根据权限使用系统中的其他服务。
(2)IAM支持的所有服务权限。对于不支持使用IAM授权的服务,账号中创建的IAM用户无法使用该服务,请使用账号登录使用该服务。
(3)服务:使用IAM授权的云服务名称。单击服务名,可以查看该服务支持的权限,以及不同权限间的区别。
(4)所属区域:使用IAM授权时,该服务选择的授权区域。
全局区域:服务部署时不区分物理区域,为全局级服务。在全局项目中进行授权,访问该服务时,不需要切换区域。
其他区域: 服务部署时通过物理区域划分,为项目级服务。在除全局区域外的其他区域中授权,仅在授权的区域生效,访问该服务时,需要先切换到对应区城。
(5)控制台:该服务是否支持在IAM控制台进行权限管理。
(6)API接口: 该服务是否支持调用API接口进行权限管理。
(7)委托:您是否可以将操作权限委托给该服务,该服务可以以您的身份使用其他云服务,代替您进行日常工作。
(8)策略:该服务是否支持通过策略进行权限管理。策略是以JSON格式描述- 组权限集的语言,它可以精确地允许或拒绝用户对服务的资源类型进行指定的操作。
4.1.3IAM与GaussDB使用的关系
如果需要对您所拥有的云数据库GaussDB进行精细的权限管理,可以使用统-身份认证
服务( Identity and Access Management,简称IAM) ,通过IAM,可以:
(1)根据企业的业务组织,在华为云账号中,给企业中不同职能部i ]的员工创建IAM用户,让员工拥有唯一安全凭证, 并使用GausDB资源。
(2)根据企业用户的职能,设置不同的访问权限,以达到用户之间的权限隔离。
(3)将GausSDB资源委托给更专业、高效的其他华为云账号或者云服务,这些账号或者云服务可以根据权限进行代运维。
4.1.4IAM的优势
对华为云的资源进行精细访问控制
跨帐号的资源操作与授权
4.1.5IAM访问方式
您可以通过以下任何一种方式访问IAM。
管理控制台
您可以通过基于浏览器的可视化界面,即控制台访问IAM。
REST API
您可以使用IAM提供的REST API接口以编程方式访问IAM
4.1.6IAM用户
由帐号在IAM中创建的用户,是云服务的使用人员,具有独立的身份凭证(密码和访问密钥),根据帐号授予的权限使用资源。IAM用户不进行独立的计费,由所属账户统一付费。
4.1.7帐号与IAM用户的关系
帐号与IAM用户可以类比为父子关系,帐号是资源归属以及计费的主体,对其拥有的资源具有所有权限。IAM用户由帐号创建,只能拥有帐号授予的资源使用权限,帐号可以随时修改或者撤销IAM用户的使用权限。IAM用户进行资源操作时产生的费用统一计入帐号中,IAM用户不需要为资源付费。
4.1.8IAM为您提供的主要功能包括:
精细的权限管理、安全访问、敏感操作、通过用户组批量管理用户权限、区域内资源隔离、联合身份认证、委托其他帐号或者云服务管理资源、设置安全策略。查看具体细节可以去这儿查看https://support.huaweicloud.com/productdesc-iam/iam_01_0003.html
安全访问
可以使用IAM为用户或者应用程序生成身份凭证, 不必与其他人员共享账号密码,系统会通过身份凭证中携带的权限信息允许用户安全地访问账号中的资源。
敏感操作
IAM提供敏感操作保护功能,包括登录保护和操作保护,在登录控制台或者进行敏感操作时,系统将要求进行邮箱/手机/虚拟MFA的验证码的第二次认证,为账号和资源提供更高的安全保护。
通过用户组批量管理用户权限
不需要为每个用户进行单独的授权,只需规划用户组,井将对应权限授予用户组,然后将用户添加至用户组中,用户就继承了用户组的权限。如果用户权限变更,只需在用户组中删除用户或将用户添加进其他用户组,实现快捷的用户授权。
区域内资源隔离
可以通过在区域中创建子项目的功能,使得同区域下的各项目之间的资源相互隔离。
联合身份认证
如果您已经有自己的身份认证系统,您不需要在华为云中重新创建用户,可以通过身份提供商功能直接访问华为云,实现单点登录。
最终一致性
最终一致性是指您在IAM进行的操作,如创建用户和用户组、给用户组授权等,会由于IAM通过在华为云数据中心的各个服务器之间复制数据、实现多区域的数据同步时,可能导致已提交的修改延时生效。建议您在进行操作前,确认已提交的策略修改已经生效。
设置账号安全策略
通过设置登录验证策略、密码策略及访问控制列表来提高用户信息和系统数据的安全性。
账号安全管理
可以使用IAM为用户或者应用程序生成身份凭证,不必与其他人员共享账号密码,系统会通过身份凭证中携带的权限信息允许用户安全地访问账号中的资源。
精细的权限管理
使用IAM,您可以将账号内不同的资源按需分配给创建的IAM用户,实现精细的权限管理。例如:控制用户Charlie能管理项目B的VPC,而让用户James只能查看项目8中VPC的数据。
委托其他账号或者云服务管理资源
通过委托信任功能,您可以将自己的操作权限委托给更专业、高效的其他华为云账号或者云服务,这些账号或者云服务可以根据权限代替您进行日常工作。
身份提供商
4.2SSL
SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议
4.2.1提供的服务
1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
2)加密数据以防止数据中途被窃取;
3)维护数据的完整性,确保数据在传输过程中不被改变。
4.2.2SSL协议提供的安全通道有以下三个特性:
机密性:SSL协议使用密钥加密通信数据。
可靠性:服务器和客户都会被认证,客户的认证是可选的。
完整性:SSL协议会对传送的数据进行完整性检查。
4.2.3为什么需要SSL
(1)网络中明文传输敏感数据(银行数据、交易信息、密码信息等)是非常危险的,SSL 目的是提供通信安全及数据完整性保障。
(2)在OSI七层网络结构中,SSL 协议位于传输层与应用层中间,为安全通信提供支持。很多应用层协议集成SSL衍生出更安全的协议,如: HTTPS, FTPS等。
(3)当前主流网站、应用,如Google, Facebook,淘宝等均支持SSL通信加密。
(4)GaussDB支持客户端与服务端SSL通信加密,保障数据传输的安全性、完整性。
4.2.4SSL工作原理
(1)对称加密算法:加密和解密使用相同的秘钥,特点是算法公开、加解密速度快,效率高。
(2)非对称加密算法:包含两个秘钥:公钥(publickey)和私钥(privatekey),公钥和私钥是- -对,加密和解密
使用不同的秘钥,特点是算法复杂度高、安全性更强、性能较对称加密差。
(3)SSL握手阶段,使用非对称加密算法协商会话秘钥。
(4)加密通道建立后,使用对称加密算法对传输数据进行加解密。
5.用户权限管理
5.1权限
5.1.1权限是什么?
执行某些特定SQL语句的能力以及访问或维护某- 特定对象的能力。
授予GaussDB(for MySQL)帐户的权限决定了帐户可以执行的操作。GaussDB(for MySQL)权限在它们适用的
上下文和不同操作级别上有所不同:
(1)管理权限使用户能够管理GaussDB(for MySQL)服务器的操作;这些权限是全局的,因为它们不是特定于特定数据库的。
(2)数据库权限适用于数据库及其中的所有对象。可以为特定数据库或全局授予这些权限,以便它们适用于所有数据库。
(3)可以为数据库中的特定对象,数据库中给定类型的所有对象(例如,数据库中的所有表)或全局的所有对象授予数据库对象(如表,索引,视图和存储例程)的权限。所有数据库中给定类型的对象。
(4)GaussDB(for MySQL)服务器通过权限表来控制用户对数据库的访问,权限表存放在GaussDB(for MySQL)数据库中,初始化数据库时会初始化这些权限表。
5.1.2权限根据授权的精细程度,分为策略和角色。
角色:
角色是IAM最初提供的一种粗粒度的授权能力,当前有部分云服务不支持基于角色的授权。 角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。
策略:
策略是IAM最新提供的一种细粒度授权的能力,可以精确到具体操作、资源、条件等。使用基于策略的授权是一种更加灵活地授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对ECS服务,管理员能够控制IAM用户仅能对某一类云服务器的资源进行指定的管理操作。策略包含系统策略和自定义策略。
5.2数据库用户
关于数据库用户的主要用途
(1)使用工具连接数据库
(2)访问数据对象
(3)执行SQL语句
注意:
(1)在连接数据库时,必须使用一个已经存在的数据库用户。
(2)一个用户可以建立多个连接。
5.3用户的操作
5.3.1创建
语法:
CREATE USER
注意事项:
-
执行该语句的用户需要有CREATE USER权限。
-
创建用户时,需要指定用户名和密码。
-
root用户不允许创建,是系统预置用户。
创建用户的常用语法格式:
CREATE USER user. name IDENTIFIED BY passwordt;
设置用户时,需遵循以下规范:
-
密码需要使用单引号括起来。
-
设置用户名密码时,需遵循如下规范:
-
密码长度必须大于等于8个字符。
-
创建密码时,密码须用单引号括起来。
示例:
创建用户jianguo,密码为database_123.
CREATE USER jianguoIDENTIFIED BY 'database_123';
5.3.2修改
语法:
ALTER USER
注意事项:
-
执行该语句的用户需要有ALTER USER系统权限。
-
如果指定的用户不存在,会提示错误信息。
应用场景:
-
修改用户密码。
-
手动锁定用户或给用户解锁。
-
修改用户密码的语法格式:
ALTER USER user. name IDENTIFIED BY new. password;
主要参数说明:
-
user, .name:要修改的用户名。
-
new. password:新的用户密码。
示例:
将用户jianguo的密码修改为'database_666。
ALTER USER jianguoIDENTIFIED BY ''database_666;
5.3.3删除
语法:
DROP USER
注意事项:
-
执行该语句的用户需要有DROP USER权限。
删除用户的语法格式:
DROP USER [if exlsts ] user name;
主要参数说明:
-
user. ,name: 要删除的用户名。
-
if exists: 要删除的用户是否存在。
-
不指定if exists选项时, 如果要删除的用户不存在,会提示错误信息。
-
指定if exist选项时,如果要删除的用户不存在,直接返回执行成功,用户存在则删除该用户。
5.4数据库 之角色的创建、授权、收回
5.4.1角色是什么?
角色是一组命名的权限的集合,数据库使用角色进行权限组织及划分。
5.4.2意义:
一个数据库可能有多个用户需要访问,为了方便管理,可以先将权限分组,并授予给角色。每一个权限组对应一个角色。对于不同权限级别的用户,可以将对应的角色授予用户,相当于批量授予用户需要的权限,而不需要逐个授予权限。
5.4.3注意:
角色不属于任何用户。
角色不能登录数据库和执行SQl语句操作。
角色在系统中必须是唯- -的。
5.4.4角色创建
语法:
CREATE ROLE
注意事项:
执行该语句的用户需要有CREATE ROLE权限。
角色名不能与数据库中已有的用户名和角色名重名,否则会提示错误信息。
创建角色的语法格式:
CREATE ROLE role_ name;
主要参数说明:
role_ name:创建的角色名。
示例:
创建角色teacher。
CREATE ROLE teacher;
5.4.5删除
语法:
DROP ROLE
注意事项:
执行该语句的用户需要有DROP ROLE权限,或者是该角色的创建者,或者被授予该角色并携带WITH
GRANT OPTION属性。
如果角色不存在,会提示错误信息。
角色被删除时,将该角色具有的权限从被授予该角色的用户或者其他角色上回收。
删除角色的语法格式:
DROP ROLE role_ name;
主要参数说明:
role_ name:要删除的角色名。
示例:
删除角色teacher。
DROP ROLE teacher;
5.5角色
用户可定义角色,角色为多个权限的集合。
角色赋予用户或其他角色,则用户或其他角色拥有了此角色的所有权限。
角色的权限可以继承。
角色是权限的集合,可以为一组具有相同权限的用户创建一个角色,简化授权的过程
1.角色的创建
CREATE ROLE <角色名>
CREATE ROLE teacher
注意事项:
执行该语句的用户需要有CREATE ROLE权限
角色名不能与数据库中已有的用户名重名,否则会报错
2.给角色授权
GRANT <权限>[,<权限>]…
ON <对象类型>对象名
TO <角色>[,<角色>]…
3.将一个角色授予其他的角色或用户
GRANT <角色1>[,<角色2>]…
TO <角色3>[,<用户1>]…
[WITH ADMIN OPTION]
指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色
4.角色权限的收回
REVOKE <权限>[,<权限>]…
ON <对象类型> <对象名>
FROM <角色>[,<角色>]…
注意事项:
执行该语句的用户需要有DROP ROLE权限,或者是该角色的创建者,或者被授予该角色并携带WITHGRANT OPTION属性。
如果角色不存在,会提示错误信息。
角色被删除时,将该角色具有的权限从被授予该角色的用户或者其他角色上回收。
5.角色的授予
常用的语法格式: .
GRANT role_ name TO grantee [ WITH GRANT OPTION ];
主要参数说明:
role_ name: 角色名。
grantee: 被授予的用户或角色。
WITH GRANT OPTION:被授予的用户或角色可将所获得的角色再次授予其它用户或角色。
如果是授予角色,执行该语句用户需要满足如下条件之一:
已授予该角色,并有WITH GRANT OPTION属性。是该角色的创建者。
示例:
向用户smith授予teacher角色,smith还可将此角色授予给其他用户或角色。
GRANT teacher TO smith WITH GRANT OPTION;
5.6用户,角色与权限的关系
一个用户拥有若干角色,每一个角色拥有若干权限。
角色赋予用户或其他角色,则其他用户或角色也拥有了此角色的所有权限。
角色的权限可以继承。
5.7授权
授权是什么
权限或角色授予用户或其他角色
权限的授予操作
最小化原则
角色的授予操作
权限的回收
不使用时及时回收
5.8权限的授予
常用的语法格式:
GRANT privilege_ name on db/objects TO grantee [ WITH GRANT OPTION ];
主要参数说明:
privilege_ name:权限名。
db/objects: 权限使用数据库或对象
grantee: 被授予的用户或角色。
WITH GRANT OPTION:被授予的用户或角色可将所获得的权限再次授予其它用户或角色。
注意:
权限、角色的授予都要遵循最小化使用原则。
如果要授予权限,执行该语句用户需要满足如下条件:
已被授予该权限,并有WITH GRANT OPTION属性。
示例:
向用户smith授予CREATE USER权限,smith还可将此权限授予给其他用户或角色。
GRANT CREATE USER on *.* TO smith WITH GRANT OPTION;
5.9权限回收是什么?
将权限或角色从受权者回收。
权限回收的语法:
REVOKE
常用的语法格式:
REVOKE privilege. name on db/objects FROM revokee;
如果要回收权限,执行REVOKE操作的用户需要满足如下条件:
已被授予要被收回的该权限,且授权时携带WITH GRANT OPTION属性。
示例:
回收用户smith的CREATE USER权限。
REVOKE CREATE USER on *.* FROM smith;
5.10角色回收
常用的语法格式: .
REVOKE role_ name FROM revokee;
如果回收角色,执行REVOKE操作的用户需要满足如下条件之一 :
已被授予该角色,且授权时携带WITH GRANT OPTION属性。
是被回收角色的创建者。
示例:
回收用户smith的teacher角色 。
REVOKE teacher FROM smith;
注意:
权限、角色在不使用时需及时回收。
6.CTS审计
云审计服务(Cloud Trace Service,以下简称CTS),是华为云安全解决方案中专业的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。
6.1CTS审计功能
云审计服务的功能主要包括:记录审计日志: 支持记录用户通过管理控制台或API接口
发起的操作,以及各服务内部自触发的操作。
审计日志查询:支持在管理控制台对7天内操作记录按照事件类型、事件来源、资源类型、筛选类型、操作用户和事件级别等多个维度进行组合查询。
审计日志转储:支持将审计日志周期性的转储至对象存储服务( Object Storage Service,简称OBS )下的OBS桶,转储时会按照服务维度压缩审计日志为事件文件。
事件文件加密:支持在转储过程中使用数据加密服务( Data Encryption Workshop, 简称DEW )中的密钥对事件文件进行加密。
6.2支持审计的关键操作
(1)通过云审计服务,可以记录与GaussDB实例相关的操作事件,便于日后的查询、审计和回溯,支持的主要操作事件如下表所示。
(2)通过云审计服务,可以记录与GaussDB实例相关的操作事件,便于日后的查询、审计和回溯,支持的主要操作事件如下表所示。
6.3查看追踪事件
(1)在开启开通了 云审计服务后,系统开始记录云服务资源的操作。云审计服务管理控制台保存最近7天的操作记录。
(2)登录管理控制台。
(3在“所有服务”或“服务列表”中,选择“管理与部署>云审计服务”,进入云审计服务信息页面。
(4)单击左侧导航树的“事件列表”,进入事件列表信息页面。
(5)事件列表支持通过筛选来查询对应的操作事件。当前事件列表支持四个维度的组合查询,详细信息如下:
事件类型、事件来源、资源类型和筛选类型。在下拉框中选择查询条件。
其中,筛选类型选择“按事件名称"时,还需选择某个具体的事件名称。
选择“按资源ID”时,还需选择或者手动输入某个具体的资源ID。
选择“按资源名称"时,还需选择或手动输入某个具体的资源名称。
操作用户:在下拉框中选择某- -具体的操作用户,此操作用户指用户级别,而非租户级别。
事件级别:可选项为“所有事件级别”、“normal". “warning"、 “incident", 只可选择其中一项。
起始时间、结束时间:可通过选择时间段查询操作事件。
7.数据库最常见的安全问题如下
1.部署失败
数据库陷入危机最普遍的原因就是在开发过程中的粗心大意。有些公司会意识到优化搜索引擎对其业务获得成功的重要性,只有对数据库进行排序的前提下,SEO才能成功对其优化。尽管功能性测试对性能有一定的保证,但测试并不能预料数据库会发生的一切。因此,在进行完全部署之前,对数据库进行全面的检查非常重要。
2.数据泄露
数据库可以当做后端设置的一部分,更加注重保护互联网安全。因为数据库中有网络接口,如果黑客想要利用它们就可以很轻易地操纵数据库中的这些网络接口。在进行数据库开发时,应使用TLS或SSL加密通信平台。
3.破损的数据库
通过利用在微软SQL Server数据库中发现的漏洞进行传播,导致全球范围内的互联网瘫痪。这种蠕虫的成功充分说明了保护数据库安全的重要性。由于缺乏资源和时间,大多数企业不会为系统提供常规的补丁,因此很容易遭受蠕虫攻击。
4.数据库备份被盗
对数据库而言通常存在两种类型的威胁——外部和内部。如何处理内部威胁,唯一方法是档案加密。
5.滥用数据库特性
被黑客攻击的数据库都有滥用数据库特性。就是利用这些数据库特征中固有的漏洞。解决方法就是删除不必要的工具。
6.基础设施薄弱,不安全的存储介质
黑客控制整个数据库,会寻找基础设施中存在的弱点,然后利用优势发动一连串的攻击抵达后端。因此需要预备相同数量的控制和隔离系统来帮助降低风险。
7.缺乏隔离
隔离管理员和用户之间的权限,内部员工想要窃取数据更困难。如果可以限制用户账户的数量,黑客控制整个数据库就会面临更大的挑战。
8.SQL注入
一旦应用程序被注入恶意的字符串来欺骗服务器执行命令,目前最佳的解决方案就是使用防火墙来保护数据库网络。
9.密钥管理不当
保证密钥安全是非常重要的,但是加密密钥通常存储在公司的磁盘驱动器上,如果这些密钥一旦遗失,那么您的系统会很容易遭受黑客攻击。
10.数据库中的违规行为
不断地检查数据库以及时发现任何异常之处是非常有必要的,开发人员应该认识到任何可能影响数据库的威胁因素。开发人员可以利用追踪信息/日志文本来查询和解决此类问题。
最后外部威胁是持续不断的,内部流程不足会留下管理漏洞,因此,当今的安全最佳实践要求组织必须采取多层次、多方面的方法来有效保护数据并防止数据泄露。
8.如何创建全面的数据安全解决方案
数据安全性需要对数据和用户活动进行统计同时还需要连续的用户权限管理来阻止特权滥用。
最佳实践的解决方法会考虑到数据访问的每个实例(包括特权用户的实例)为用户和应用程序构建完整的安全配置策略。在异构环境下的数据库审计日志方面,及日常行为中关注上下文使用机器自学习,可以准确地识别内部威胁并防止数据泄露。
而加强访问数据库的应用程序安全也很重要。SQLi 和 Web Shell 只是 Web 应用程序面临的两种威胁,同时也需要能够阻止 SQLi、Web Shell 事件并防止复杂的业务逻辑攻击的类似高级 Web 应用防火墙的数据库业务防火墙,为防止未经授权的数据访问提供重要的保护。
如您所见对数据库的此五种威胁需要多重安全防御机制,仅仅依靠本机工具或忽略外部和内部攻击者能够利用并且将会利用的安全漏洞已不再足够。保护数据库中的数据对于保护客户、声誉和企业业务生存能力至关重要。
总结
本文整理自华为云社区【内容共创系列】活动。 查看活动详情:https://bbs.huaweicloud.com/blogs/314887 相关任务详情:
- 点赞
- 收藏
- 关注作者
评论(0)