常见概念
权限管理模型RBAC和ABAC区别
RBAC:基于角色的访问控制,角色通常是指具有某些共同特征的一组人,例如:部门、地点、资历、级别、工作职责等。在系统初始时Admin根据业务需要创建多个拥有不同权限组合的不同角色,当需要赋予某个用户权限的时候,把用户归到相应角色里即可赋予符合需要的权限。
ABAC:不同于常见的将用户通过某种方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断(可以编写简单的逻辑)。属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当期时间),操作属性(如读取)和对象属性(如一篇文章,又称资源属性),所以理论上能实现非常灵活的权限控制,几乎能满足所有类型的需求。权限判断需要实时执行,规则过多会导致性能问题。
两者区别:RBAC和ABAC之间的主要区别在于RBAC基于用户角色提供对资源或信息的访问,而ABAC提供基于用户、环境或资源属性的访问权限。
数据库数据加密方式有哪些
函数加密:字段级,通过调用函数,如md5()等函数对传入参数进行加密,业务感知加密,不支持密文条件,安全数据在会话中临时解密,数据库无法自动解密,防止高权限账户窃取数据。
透明加密:表级,数据在文件落盘时加密,对用户及上层使用SQL的应用不感知,对于需要加密的表创建时通过TDE参数指定加密算法,数据库无感知,内存明文处理,防止基于物理磁盘的数据窃取,TDE秘钥管理分为三层,分别是根秘钥,主秘钥,数据加密秘钥。
全密态:字段级,支持密态等值查询,数据库无法解密,防止运维、管理、高权限账户窃取隐私数据,在业务中仅在DDL层做了扩展,在create table或者alter table新增列时可以将列设置为加密列,给需要的列绑定列加密密钥即可,如果DML操作于其他表一致,但需要以密态方式(-C)创建客户端连接才可以,如果是非密态模式,那么查看到的数据是密文,未指定加密的列数据均已明文处理,密钥管理分为三层,分别根密钥,主密钥,列加密密钥,密钥均存储于GaussDB client,减少攻击面。
总结来说,函数加密,是用客户把密钥给到数据库,数据库在执行函数时做一个加密动作,是在数据库里加密。透明加密是在数据库自己找一个密钥,在磁盘落盘时做加密。全密态等值是客户找到密钥之后先把数据加密,再交给数据库,全生命周期都是密文的。
客户端和服务端SSL通信加密,SSL加密支持对称加密、非对称加密,对称加密算法指的是加密和解密使用相同的秘钥,特点是算法公开,加解密速度快、效率高;非对称加密算法包含两个秘钥:公钥和私钥,公钥和私钥是一对,加密和解密使用不同的秘钥,特点是算法复杂度高、安全性更强、性能较对称加密差。
常见算法为AES、DES、MD5、SM4。
使用存储过程的优点
存储过程极大的提高SQL语言的灵活性,可以完成复杂的运算。
可以保障数据的安全性和完整性。
极大的改善SQL语句的性能,在运行存储过程之前,数据库已对其进行语法和词法分析,并给出优化执行优化方案。这种已经编译好的过程极大地改善了SQL语句性能。
可以降低网络的通信量,客户端通过调用存储过程只需要存储过程名和相关参数即可,与传输SQL语句相比自然数据量少很多。
存储过程和函数的区别
含义不同: 存储过程是SQL语句和可控制流程语句的预编译集合;函数是由一个或多个SQL语句组成的子程序。
使用条件不同: 存储过程可以在单个存储过程中执行一系列SQL语句。而且可以从自己的存储过程内引入其他存储过程,这可以简化一系列复杂的语句;函数自定义函数有着诸多限制,有许多语句不能使用,例如临时表。
执行方式不同:存储过程:存储过程可以返回参数,如记录集,存储过程声明时不需要返回类型;函数:函数只能返回值或表对象,声明时需要描述返回类型,且函数中必须包含一个有效return语句。
存储过程和匿名块的区别
存储过程是经过预编译并存储在数据库中的,可以重复使用;而匿名块是未存储在数据库中,从应用程序缓存区擦除后,除非应用重新输入代码,否则无法重新执行。
匿名块无需命名,存储过程必须申明名字。
什么是数据库事务?介绍gaussDB数据库事务管理的实现
事务是作为单个逻辑单元执行的一系列操作,这些操作作为一个整体一起向系统提交要么都执行,要么都不执行。事务是一个不可分割的工作逻辑单元,GaussDB数据库事务支持ACID特性。
GaussDB基于MVCC(多版本并发控制)并结合两阶段锁的方式进行事务管理,其特点是读写之间不阻塞。select是纯读操作,update和delete是读写操作。在准备阶段就会把提交操作所需的信息和资源全部写入磁盘,进行持久化,提交阶段根据之前准备好的提交信息和资源,故障或执行失败发生在准备阶段和提交阶段之间,事务的最终状态为回滚。
GaussDB基于GTM组件协助管理分布式事务,采用多版本并发控制MVCC机制。
GaussDB提供了不同的GTM模式,GTM-Lite,GTM-Free。在GTM-Lite模式下,中心事务处理节点的压力得到减轻,事务处理流程进一步优化,GTM的性能和并发瓶颈得到减轻,可实现强一致性;在GTM-Free模式下,中心事务管理节点不再参与事务管理,消除了GTM单点瓶颈,可达到更高的事务处理性能,不支持强一致性,仅支持最终一致性。
GaussDB数据有哪些事务隔离级别
GaussDB数据库支持的事务隔离级别有READ COMMITTED、REPEATABLE READ和SERIALIZABLE,SERIALIZABLE等价于REPEATABLE READ。
READ COMMITTED:读已提交隔离级别,事务只能读到已提交的数据而不会读到未提交的数据,这是缺省值。
在读已提交模式里,每个新的命令都是从一个新的快照开始的,而这个快照包含所有到该时刻为止已提交的事务,因此同一事务中后面的命令将看到任何已提交的其它事务的效果。这里关心的问题是在单个命令里是否看到数据库里完全一致的视图。
REPEATABLE READ:事务可重复读隔离级别,事务只能读到事务开始之前已提交的数据,不能读到未提交的数据以及事务执行期间其它并发事务提交的修改(但是,查询能查看到自身所在事务中先前修改的执行结果,即使先前修改尚未提交)。这个级别和读已提交是不一样的,因为可重复读事务中的查询看到的是事务开始时的快照,不是该事务内部当前查询开始时的快照,就是说,单个事务内部的select命令总是查看到同样的数据,查看不到自身事务开始之后其他并发事务修改后提交的数据。
SERIALIZABLE:GaussDB目前功能上不支持此隔离级别,设置该隔离级别时,等价于REPEATABLE READ。
开启一个事务,设置事务的隔离级别为READ COMMITTED,访问模式为READ ONLY。
START TRANSACTION;
SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY;
COMMIT;
全量备份、差分备份和增量备份区别
-
全量备份:在备份全部数据时,全量备份需要的时间最长,因为需要备份的数据量最大。但是这种备份方式在恢复时速度最快,只需要一个磁盘即可恢复丢失的数据。此外由于需要备份的数据量最大,全量备份可能会占用较多的存储空间。
-
差分备份:差分备份是备份自上一次完全备份之后有变化的数据。这种备份方式相较于全量备份,备份数据量较少,因此备份所需时间较短。同时由于只需要对第一次全量备份和最后一次差异备份进行恢复,所以恢复时间也相对较快。但是差分备份的数据恢复过程相较于全量备份和增量备份较为复杂。
-
增量备份:增量备份是备份自上一次备份(包括完全备份、差异备份、增量备份)之后有变化的数据。这种备份方式最大的优点是没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。但是增量备份的数据恢复比较麻烦,需要所有的增量备份数据才能进行恢复。
三种备份所备份的数据量不一样,所需时间也不一样,全量备份不需要依赖于其他任意备份,差分备份和增量备份都需要依赖于全量备份。
全量备份、差分备份、增量备份集大小关系
-
全量备份的数据集是最大的,是执行备份时刻的所有数据。
-
差分备份的数据集虽然没有全量大,但相比增量更大,因此差分备份的是相较上一次全量备份有变更的数据。
-
增量备份的数据集大小是三种备份中最小的,因为增量备份只与上一次备份相比较,无论上一次备份是全量、差分还是增量都可以。
所有三种备份的数据集大小排序为:全量 > 差分 > 增量。
数据可以恢复到指定时间点,使用什么技术实现,与物理文件备份相比,这种依赖哪个关键文件
将数据恢复到指定时间点需要基于PITR技术实现,主要需要依赖于全量备份文件、增量备份文件和WAL日志。
恢复时先根据指定时间点找到最近一次全量备份进行恢复,然后逐个恢复这次全量后的增量备份,直到恢复到时间点前最后一次增量备份,从最后一次增量备份到时间点这段时间的数据通过WAL日志进行恢复。
- 点赞
- 收藏
- 关注作者
评论(0)