GuassDB
GaussDB(DWS)资源负载管理
资源负载管理满足的主要业务类型
- 集群的负载控制
资源可控,保证集群不过载
- 客户的SLA保证
根据客户的期望,设置不同作业优先级,达成SLA
- 多租户间的资源隔离
通过资源隔离达成多用户间执行业务不干扰
- 系统的健康监测
资源的监控、收集和汇总,用于实时健康汇报和历史作业查询
功能介绍
基础框架
控制组-用于进行CPU资源的处层级管理
资源池-计算资源(CPU、内存)、资源池内并发队列的设置入口
用户管理-数据库多租户模型的用户接口,设置用户存储空间大小,与资源池进行关联
主要功能
负载管理
优先级调度
多租户
资源监控
资源负载管理对象
计算资源:
CPU、内存时服务器上的计算资源,通过对资源的集中管控,可以有效避免“作业”占用资源的冲突,实现所有作业和谐共处,高优先级的作业优先执行,以及用户间的资源隔离。
存储资源:
存储空间管理是多租户场景下的重要特性,用于限定不同用户可以使用的空间配额。
Resource Pool:是GaussDB 200实现的逻辑资源实体,每个资源池可以分配到适当配额的CPU、内存、存储空间等,一个资源池对应一个租户。将用户关联到该租户角色,相当于该用户会收到资源池所分配到的资源的限制。
任务流程
开始→启动资源负载管理→启动控制组→创建资源池→关联作业到资源池→执行作业→结束
控制组(Cgroups)简介
负载管理的作用
自适应负载
执行作业前,客户不需要指定work_mem、max_active_statements等参数进行系统调优,数据库自动适应负载变化,保障数据库可靠运行。
无论多大并发,系统稳定运行。
作业查询规则
类型 |
说明 |
Blocktime |
作业的阻塞时间,单位为秒,包括全局并发排队以及局部并发排队的总时间 |
Elasedtime |
已经被执行的作业,从开始执行到当前所消耗的时间,单位为秒。 |
Allcputime |
作业在所有datanode上执行时所耗费的cpu总时间,单位为秒 |
Cpuskewpercent |
作业在datanode上执行时的cpu时间的倾斜率,有效范围为1-100。 cpuskewpercent的分析依赖于qualificationtime设置 |
查看作业的负载状态
SELCET * FROM pg_session_wlmstat;
Pg_session_slmstat重要属性如下:
名称 |
类型 |
描述 |
Priority |
Integer |
语句所在cgroup的优先级 |
Attribute |
Text |
语句的属性: Simple:简单语句 Complicated:复杂语句 Special:管理员执行的或者数据库内部的语句 Ordinary:非special的语句 |
Block_time |
Bigint |
语句当前为止的pending的时间 |
Elapsed_time |
Bigint |
语句当前为止的实际执行时间 |
Total_cpu_time |
Bigint |
语句在上一时间周期内的DN上cpu使用的总时间 |
Cpu_skew_percent |
Integer |
语句在上一时间周期内的DN上cpu使用的倾斜率 |
Control_group |
Text |
语句当前所使用的cgroup |
Status |
Text |
语句当前的状态: Pending:执行前状态 Running:执行进行状态 Finished:执行正常结束 Aborted:执行异常终止 Active:非以上四种状态外的正常状态 Unknown:未知状态 |
Enqueue |
Text |
语句当前的排队情况: Global:在全局队列中排队 Respool:在资源池队列排队 Transcation:语句处于一个事务块中 None:未在排队 |
Resource_pool |
Name |
语句当前所在的资源池 |
Query |
Text |
该后端的最新查询。如果state状态是active,此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 |
安全与权限设计
连接认证
原理
连接认证是辨别“对方是谁”,判断连接用户是否为数据库合法用户。
连接认证是数据库安全的第一层防护,认证机制可以防止非法用户入侵数据库内部。
GaussDB(DWS)是基于客户端/服务器(C/S)架构的数据库系统
客户端与服务器(CN节点)网络通信协议通常为TCP/IP协议
认证方式
配置CN节点的postgresql.conf文件
监听IP地址的信息存在此文件中,文件默认存放在数据簇根目录下
配置CN节点的pg_hba.conf节点
客户端认证所需的配置信息均存在此文件中,文件默认存放在数据簇根目录下
HBA文件内容是若干HBA记录的集合,文件每一行代表一条记录
空白行及井号开始(注释)的行被忽略
各个字段含义:
- Local:server端匹配通过unix域套接字(Unix Domain Socket)进行的连接。
- Host:server端匹配通过TCP/IP进行的连接,host能匹配SSL和非SSL连接请求。
- Hostssl:server端匹配通过TCP/IP进行的连接,且必须为SSL加密连接请求,非SSL加密连接请求会被拒绝。
- Hostnossl:server端匹配通过TCP/IP进行的连接,且必须为非SSL加密连接请求,SSL加密连接请求会被拒绝。
- Database:server端匹配匹配客户端连接的数据库名称,可以指定具体的单个数据库,可以通过逗号分隔的方法指定多个数据库,也可以使用以下几种预定义的值:
All:匹配所有数据库
Sameuser:匹配和用户名同名的数据库
Samerole:匹配的用户必须必须是一个与数据库同名的角色中的成员。
- User:server端匹配客户端用户名,可以是特定单用户,可以是逗号分隔的多用户;如果是一个角色时,角色名称前应加上前缀‘+’,表示直接或间接属于这个角色的用户;也可以使用预定义的值。
- address:server端匹配客户端的IP地址,支持CIDR-address、IP-address+IP-mask两种方式。
- METHOD:server端与客户端建立连接时的认证方法。
通道加密
原理
SSL:Secure Sockets Layer-安全套接字层,是网络通信提供安全及数据完整性的安全协议。
对称加密算法:加密和解密使用相同的密钥,特点是算法公开、加解密速度快、效率高。
非对称加密算法:包含两个密钥:公钥和私钥,加密和解密使用不同的密钥,特点是算法复杂度高、安全性更强、性能较对称加密差。
SSL握手阶段,使用非对称加密算法协商会话密钥。
用户管理
用户与角色
用户:
使用数据库系统服务的个体;
职责单一,往往附属于某个组织或部门
可以做什么:
使用工具对接数据库
访问数据库对象
执行SQL语句
角色:
按照数据库系统中承担的责任划分具有不同权限的角色。
角色用来作为权限集合的载体。
代表一个数据库用户、或一组数据用户的行为约束。
角色和用户
用户被赋予一个或多个角色。
角色是一种权限集合,不应该具有登录数据库并执行SQL能力。
用户是实体,角色是行为。
对用户权限的管理简化为对角色权限的管理。
在GaussDB(DWS)中,用户和角色使用相同的操作方式与维护方式。
相关操作
\help create user查看
\help alter user 查看
使用\d命令查看pg_authid表详细信息
\help drop user查看
权限模型
基于角色的权限管理模型
基于角色的用户管理(Role-Based Access Control,简称RBAC)是通过为角色赋予权限,用户通过成为适当角色而得到这些角色的权限。使用RBAC可以极大简化对权限的管理。
RBAC模型:
为角色赋予适当的权限。
指定用户为相应的角色。
RBAC中的关系:
一个用户可对应多个角色
一个角色可对应多个用户
一个角色可以拥有多个权限
一种权限可以被分配给许多个角色
RBAC的特点与优势:
间接关系
职责分离
便于授权管理
可以支持最小特权原则、责任分离原则、数据抽象原则
三权分立
GaussDB(DWS)默认是非三权分立模型,可以在postgresql.conf中设置参数enableSeparationOfDuty=on以开启模型
管理员名称 |
能否创建用户 |
能否查看审计日志 |
是否有系统管理员权限 |
系统管理员 |
否 |
否 |
是 |
安全管理员 |
是 |
否 |
否 |
审计管理员 |
否 |
是 |
否 |
权限管理
系统权限与对象权限
系统权限:
数据库系统特定操作的能力,如CREATE DB、CREATE ROLE
系统权限无法通过GRANT赋予,只能在创建修改用户时指定
对象权限:
数据库对象操作的能力,如SELECT、INSERT、UPDATE、DELETE等
对象权限可以由对象所有者或管理员通过GRANT/REVOKE对其他角色分配与撤销。
系统权限 |
权限作用 |
能否GRANT/REVOKE |
SYSADMIN |
查看特殊系统表权限 |
是 |
CREATEDB |
创建数据库DATABASE |
否 |
CREATEROLE |
创建用户与角色 |
否 |
AUDITDAMIN |
是否可以查看审计日志 |
否 |
LOGIN |
是否有连接数据库权限 |
否 |
角色与权限
角色是权限的集合,权限限制了用户的行为
通过为用户分配角色,限定用户的权力范围
使用角色管理权限,更加有效
使用角色管理其所有用户权限,更加统一
角色可以被派生(开始资源管控,层级只能两层)
角色的对象权限集合可以被继承,系统权限无法继承
权限相关操作
对象权限管理主要通过GRANT/REVOKE赋予或收回角色在某个对象上的权限。
PUBLIC特指为所有角色赋权
示例
为角色role_1赋予表table_1的select权限
Grant select on table_1 to role_1;
为用户user_1赋予角色role_1的所有权限,user_1可以读取表table_1
Grant role_1 to user_1;
收回角色role_1在表table_1的select权限
Revoke select on table_1 from role_1;
收回用户user_1上的role_1所有权限
Revoke role_1 from user_1;
查看用户的系统权限与表对象权限
\du role_1查看
推荐权限分配
系统最小授权规划原则
步骤 |
描述 |
规划原则 |
1 |
规划系统权限 |
默认情况下,只有系统管理员具有系统权限。在数据库安装车工后,可以使用系统管理员给其他用户分配系统权限。 从安全性考虑,系统权限应该分别赋予可信赖的用户。 |
2 |
规划对象权限 |
对象权限的规划比较灵活,系统管理员可以将某些数据库对象的所有权限赋予某个用户,也可以将某些数据库对象的部分权限分别赋予不同的用户。 |
3 |
规划角色 |
在实际工作中,如果有两个以上的用户具有相同的对象权限,则建议将这几个用户规划为一个角色,并将这些权限赋予此角色。 |
4 |
赋予用户权限 |
根据以上规划: 通过create/alter user语句将系统权限赋予指定用户。 通过grant/revoke语句将独享权限赋予指定用户。 |
安全审计
数据库审计
数据库审计属于数据库安全技术之一
数据库安全审计主要用于监视并记录在数据库系统中用户的操作行为
审计的作用通常为了保护数据库中的信息私密
操作行为的记过记录在审计日志中
作用:
提高数据库安全级别
可以对用户访问数据库的行为进行记录、分析
支持对数据库操作细粒度的筛选
可以对事故进行追溯
可以识别安全威胁
审计日志
一次操作记作一条记录
详细操作信息:
操作用户
操作时间
被操作的数据库
被操作的表
连接信息
操作sql
数据加密
TDE透明加密
透明加密(Transparent Data Encryption)用来提供数据加密保护,当用户开始TDE特性后,对于连接到数据库的应用程序是透明的,不需要应用程序做任何改动。
TDE开启后,数据在写入磁盘之前加密,在读取到内存之前解密。
优点
防止硬盘被盗窃、数据泄露
对用户完全透明,使用无感知
GaussDB(DWS)数据库透明加密特点
支持行存/列存表数据加密
支持AES、SM4加解密算法
支持集群级别配置
日常巡检
为什么要巡检
日常巡检
主动识别问题与风险,提前处理和预防,保证局点稳定运行
升级、补丁、扩容前巡检
提前失败导致变更失败的风险,确保变更顺利进行。
用什么巡检
FusionInsight Tool Prober
提供给运维工程师的一套健康检查工具,能够检查集群相关节点、服务的健康状态,提前发现集群中潜在的问题,并生成健康检查报告。
FusionInsight Tool由两部分组成:FusionCare 和 SysChecker
FusionCare提供巡检界面可视化、环境管理、任务管理、报告管理功能。
SysChecker提供对FusionInsight的巡检功能。
巡检流程
开始→检查前准备→远程linux安装FusionCare→添加环境信息→执行巡检任务→查看巡检结果→修复异常检查项→结束。
巡检场景
日常巡检:用于集群日常维护,获取集群的健康状态,发现集群的潜在风险。
升级前巡检:用于集群版本升级前,提前发现可能会导致集群升级失败的问题。
补丁前巡检:用于集群安装补丁包前,提前发现可能导致集群补丁安装失败的各种问题。
深度巡检:用于GaussDB集群日常维护,获取集群更深度的健康状态,发现集群的潜在风险。
- 点赞
- 收藏
- 关注作者
评论(0)