• [应急处理] GaussDB (DWS) OMS节点上单机库的 stats collector 进程IO高
    【问题现象】通过iotop观察主OMS节点 stats collector 进程占用的IO非常高,导致该节点的性能下降。【规避办法】1. 切换到数据库用户,例如su - ommdba2. cd $GAUSSDATA3. vi postgresql.conf4. 文件末尾添加:stats_temp_directory='/dev/shm/pg_stat_tmp'5. 保存后退出6. 执行该命令令其生效:gs_ctl reload然后可以iotop 观察,可以明显看到io降下去了【原理说明】stats_temp_directory参数说明:设置存储临时统计数据的目录。参数类型:SIGHUP将其设置为一个基于RAM的文件系统目录会减少实际的I/O开销并可以提升其性能。
  • [生态空间] DWS 8.0.1与GaussDB A 8.0.0.5集群GDS使用咨询
    1. GDS是否支持增量导数据,如果支持的话,是否有测试样例。2. 业务测试发现使用云上DWS集群的GDS将数据导出,却无法使用该GDS往线下版本的集群导入数据。想知道是否是云上的GDS不兼容线下版本的GDS工具。如果不兼容,后续是否有兼容计划?
  • [环境搭建] HCS 8.0.3 DWS集群部署
    部署线上的DWS集群时,使用的裸金属服务器是否可以使用麒麟操作系统进行安装?还是说一定是要欧拉的。
  • [其他] 【DWS产品】全局并发控制参数max_active_statements 的限制问题
    三类语句不受全局并发控制参数 max_active_statements  的限制:  1.   内部逻辑触发语句,例如系统视图内部逻辑、gs_clean、CM等工具执行逻辑等。2.   管理员执行的语句。3.  存储过程及事务内语句。    问题 : 1.   max_active_statements  无法限制存储过程 ,用户使用 call  proc_name()  或  exce  proc_name()   方式 或  select  *   from  proc_name() ;   都不会受到限制 ?  只要是访问存储过程, 无论通过什么形式运行   ?   不受限制是指执行的存储过程个数  ?  为什么控制不了 ?       2.   如果将一个不用传参的存储过程包装成VIEW ,  用户再加工或直接查询VIEW ,  这时是否能控制view 访问的并发 ?   如上问题,是在当前交付,制造,供应等领域已经有很多这样的查询用法, 有些应用甚至 40% 左右的查询都是通过存储过程传参进行  。  
  • [迁移系列] 数据校验
    把数据从其它数据库或者GaussDB集群迁移到本GaussDB集群的过程中,通过什么工具或者方法完成数据一致性的校验?请展开详细讲一讲
  • [工具] 【工具】GaussDB(DWS)如何安装gdb/gstack/iotop工具
    GaussDB(DWS)在HSC和HCSO镜像中未安装gdb、gstack等常用定位工具,本帖简单介绍下DWS安装gdb/gstack工具的方法:1. 登录华为官方镜像网址:https://mirrors.huaweicloud.com/home  2. 选择欧拉系统Euler,点击对应的镜像链接,然后选择对应的操作系统版本,进入对应的packages目录下:3. 依次下载以下三个包:    libbabeltrace-1.5.6-1.eulerosv2r8.aarch64.rpm    gdb-headless-8.2-3.h3.eulerosv2r8.aarch64.rpm    gdb-8.2-3.h3.eulerosv2r8.aarch64.rpm4. 上传到DWS环境中,登录root用户,使用rpm -ivh按顺序依次安装三个包5. 安装完成后即可使用iotop等工具参考上述步骤安装即可:
  • [其他] 【DWS产品】DWS查询DN上残留的会话显示业务SQL运行了7849 days (21年)
    不多说,直接上图。单位错了么 ?   
  • [其他] 分享大数据时代的隐私利器-GaussDB数据脱敏
    背景信息大数据时代的到来,大数据、云计算和人工智能等新技术应用不断深化,为数据的深度挖掘及分析提供了强有力的支撑,大数据中蕴含的巨大价值被逐步挖掘出来。然而,一系列信息泄露事件的曝光,使得数据安全越来越受到广泛的关注。各国各地区逐步建立健全和完善数据安全与隐私保护相关法律法规,提供用户隐私保护的法律保障。如何加强技术层面的数据安全和隐私保护,是对数据仓库产品提出的要求,也是数据安全建设最有效的办法。GaussDB(DWS)产品8.1.1版本发布数据脱敏特性,支持指定用户范围内列级敏感数据的脱敏功能,具有灵活、高效、透明、友好等优点。使得敏感及隐私信息不被泄露,提高了对敏感及私密数据的保护,极大地增强了产品的数据安全能力。什么是数据脱敏数据脱敏(Data Masking),即屏蔽敏感数据,对某些敏感信息(比如,身份证号、手机号、卡号、客户姓名、客户地址、邮箱地址、银行账号、密码类等等 )通过脱敏规则进行数据的变形,实现隐私数据的可靠保护。业界常见的脱敏规则有,替换、重排、加密、截断、掩码,用户也可以根据期望的脱敏算法自定义脱敏规则。良好的数据脱敏实施,需要遵循两个原则:第一,尽可能地为脱敏后的应用,保留脱敏前的有意义信息;第二,最大程度地防止黑客进行破解。数据脱敏分为静态数据脱敏和动态数据脱敏。静态数据脱敏,是数据的“搬移并仿真替换”,是将数据抽取进行脱敏处理后,下发给下游环节,随意取用和读写的,脱敏后数据与生产环境相隔离,满足业务需求的同时保障生产数据库的安全。动态数据脱敏,在访问敏感数据的同时实时进行脱敏处理,可以为不同角色、不同权限、不同数据类型执行不同的脱敏方案,从而确保返回的数据可用而安全。下图为一个简单的静态脱敏和动态脱敏示例,可以看出两者的不同。GaussDB (DWS)的数据脱敏功能,摒弃业务应用层脱敏依赖性高、代价大等痛点,将数据脱敏内化为数据库产品自身的安全能力,提供了一套完整、安全、灵活、透明、友好的数据脱敏解决方案,属于动态数据脱敏。用户识别敏感字段后,基于目标字段,绑定内置脱敏函数,即可创建脱敏策略。脱敏策略(Redaction Policy)与表对象是一一对应的。一个脱敏策略包含表对象、生效条件、脱敏列-脱敏函数对三个关键要素,是该表对象上所有脱敏列的集合,不同字段可以根据数据特征采用不同的脱敏函数。当且仅当生效条件为真时,查询语句才会触发敏感数据的脱敏,而脱敏过程是内置在SQL引擎内部实现的,对生成环境用户是透明不可见的。数据脱敏如何使用第一步:创建脱敏策略需确定受限制用户角色。动态数据脱敏,是在查询语句执行过程中,根据生效条件是否满足,实现实时的脱敏处理。生效条件,通常是针对当前用户角色的判断。敏感数据的可见范围,即是针对不同用户预设的。系统管理员,具有最高权限,任何时刻对任何表的任何字段都可见。第二步:识别和梳理具体业务场景的敏感字段。敏感信息依赖于实际业务场景和安全维度,以自然人为例,用户个体的敏感字段包括:姓名、身份证号、手机号、邮箱地址等等;在银行系统,作为客户,可能还涉及银行卡号、过期时间、支付密码等等;在公司系统,作为员工,可能还涉及薪资、教育背景等;在医疗系统,作为患者,可能还涉及就诊信息等等。第三步:确定脱敏列需要绑定的脱敏函数。产品内置一系列常见的脱敏函数接口,可以针对不同数据类型和数据特征,指定参数,从而达到不一样的脱敏效果。脱敏函数可采用如下三种内置接口,同时支持自定义脱敏函数。三种内置脱敏函数能够涵盖大部分场景的脱敏效果,不推荐使用自定义脱敏函数。MASK_NONE:不作脱敏处理,仅内部测试用。MASK_FULL:全脱敏成固定值。MASK_PARTIAL:使用指定的脱敏字符对脱敏范围内的内容做部分脱敏。不同脱敏列可以采用不同的脱敏函数。比如,手机号通常显示后四位尾号,前面用"*"替换;金额统一显示为固定值0,等等。数据脱敏使用示例以某公司员工表emp,表的属主用户alice以及用户matu、july为例,简单介绍数据脱敏的使用过程。其中,表emp包含员工的姓名、手机号、邮箱、发薪卡号、薪资等隐私数据,用户alice是人力资源经理,用户matu和july是普通职员。假设表、用户及用户对表emp的查看权限均已就绪。创建脱敏策略mask_emp,仅允许alice查看员工所有信息,matu和july对发薪卡号、薪资均不可见。字段card_no是数值类型,采用MASK_FULL全脱敏成固定值0;字段card_string是字符类型,采用MASK_PARTIAL按指定的输入输出格式对原始数据作部分脱敏;字段salary是数值类型,采用数字9部分脱敏倒数第二位前的所有数位值。postgres=# CREATE REDACTION POLICY mask_emp ON emp WHEN (current_user != 'alice')ADD COLUMN card_no WITH mask_full(card_no),ADD COLUMN card_string WITH mask_partial(card_string, 'VVVVFVVVVFVVVVFVVVV','VVVV-VVVV-VVVV-VVVV','#',1,12), ADD COLUMN salary WITH mask_partial(salary, '9', 1, length(salary) - 2);切换到matu和july,查看员工表emp。postgres=> SET ROLE matu PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+---------+---------------------+----------------------+------------+--------------------- 1 | anny | 13420002340 | 0 | ####-####-####-1234 | smithWu@163.com | 99999.9990 | 1999-10-02 00:00:00 2 | bob | 18299023211 | 0 | ####-####-####-3456 | 66allen_mm@qq.com | 9999.9990 | 1989-12-12 00:00:00 3 | cici | 15512231233 | | | jonesishere@sina.com | | 1992-11-06 00:00:00(3 rows)postgres=> SET ROLE july PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+---------+---------------------+----------------------+------------+--------------------- 1 | anny | 13420002340 | 0 | ####-####-####-1234 | smithWu@163.com | 99999.9990 | 1999-10-02 00:00:00 2 | bob | 18299023211 | 0 | ####-####-####-3456 | 66allen_mm@qq.com | 9999.9990 | 1989-12-12 00:00:00 3 | cici | 15512231233 | | | jonesishere@sina.com | | 1992-11-06 00:00:00(3 rows)由于工作调整,matu进入人力资源部参与公司招聘事宜,也对员工所有信息可见,修改策略生效条件。postgres=> ALTER REDACTION POLICY mask_emp ON emp WHEN(current_user NOT IN ('alice', 'matu'));切换到用户matu和july,重新查看员工表emp。postgres=> SET ROLE matu PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+------------------+---------------------+----------------------+------------+--------------------- 1 | anny | 13420002340 | 1234123412341234 | 1234-1234-1234-1234 | smithWu@163.com | 10000.0000 | 1999-10-02 00:00:00 2 | bob | 18299023211 | 3456345634563456 | 3456-3456-3456-3456 | 66allen_mm@qq.com | 9999.9900 | 1989-12-12 00:00:00 3 | cici | 15512231233 | | | jonesishere@sina.com | | 1992-11-06 00:00:00(3 rows)postgres=> SET ROLE july PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+---------+---------------------+----------------------+------------+--------------------- 1 | anny | 13420002340 | 0 | ####-####-####-1234 | smithWu@163.com | 99999.9990 | 1999-10-02 00:00:00 2 | bob | 18299023211 | 0 | ####-####-####-3456 | 66allen_mm@qq.com | 9999.9990 | 1989-12-12 00:00:00 3 | cici | 15512231233 | | | jonesishere@sina.com | | 1992-11-06 00:00:00(3 rows)员工信息phone_no、email和birthday也是隐私数据,更新脱敏策略mask_emp,新增三个脱敏列。postgres=> ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN phone_no WITH mask_partial(phone_no, '*', 4);postgres=> ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN email WITH mask_partial(email, '*', 1, position('@' in email));postgres=> ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN birthday WITH mask_full(birthday);切换到用户july,查看员工表emp。postgres=> SET ROLE july PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+---------+---------------------+----------------------+------------+--------------------- 1 | anny | 134******** | 0 | ####-####-####-1234 | ********163.com | 99999.9990 | 1970-01-01 00:00:00 2 | bob | 182******** | 0 | ####-####-####-3456 | ***********qq.com | 9999.9990 | 1970-01-01 00:00:00 3 | cici | 155******** | | | ************sina.com | | 1970-01-01 00:00:00(3 rows)考虑用户交互的友好性,GaussDB (DWS) 提供系统视图redaction_policies和redaction_columns,方便用户直接查看更多脱敏信息。postgres=> SELECT * FROM redaction_policies; object_schema | object_owner | object_name | policy_name | expression | enable | policy_description ---------------+--------------+-------------+-------------+-----------------------------------+--------+-------------------- public | alice | emp | mask_emp | ("current_user"() = 'july'::name) | t | (1 row)postgres=> SELECT object_name, column_name, function_info FROM redaction_columns; object_name | column_name | function_info -------------+-------------+------------------------------------------------------------------------------------------------------- emp | card_no | mask_full(card_no) emp | card_string | mask_partial(card_string, 'VVVVFVVVVFVVVVFVVVV'::text, 'VVVV-VVVV-VVVV-VVVV'::text, '#'::text, 1, 12) emp | email | mask_partial(email, '*'::text, 1, "position"(email, '@'::text)) emp | salary | mask_partial(salary, '9'::text, 1, (length((salary)::text) - 2)) emp | birthday | mask_full(birthday) emp | phone_no | mask_partial(phone_no, '*'::text, 4)(6 rows)突然某一天,公司内部可共享员工信息时,直接删除表emp的脱敏策略mask_emp即可。postgres=> DROP REDACTION POLICY mask_emp ON emp;GaussDB(DWS)数据脱敏优势一套简单、易用的数据脱敏策略语法。一系列可覆盖常见隐私数据脱敏效果的、灵活配置的内置脱敏函数。一个完备、便捷的脱敏策略应用方案,使得原始语句在执行过程中可以实时、透明、高效地实现脱敏。GaussDB(DWS)充分满足客户业务场景的数据脱敏诉求,支持常见隐私数据的脱敏效果,实现敏感数据的可靠保护。转自https://bbs.huaweicloud.com/blogs/282004
  • [其他] 分享GaussDB数据落盘安全性
    GaussDB(DWS)作为一款运行在华为云上的核心数据仓库,客户大量的数据存储在DWS的数据节点中,DWS不仅拥有海量数据查询的极致性能,在安全方面还需要有加固防护措施。当前数据库都是多个用户共同访问数据,这些数据都具有重要价值,关系到用户的核心资产和用户隐私,如何禁止别有用心的用户窃取以及黑客攻击,本课程给您提供数据的安全管理方法。云数仓安全层层防护 云数仓外部:由华为云的云安全管理产品保驾护航。如:Anti-DDoS、DDoS、Web应用防火墙、漏洞扫描服务、企业主机安全、数据加密服务、SSL证书管理、云堡垒机等。 云数仓内部:主要通过三权分立、行级访问控制、审计管理三种方式进行防护。这三方式结合到数据开发实际场景中,简单可以概括为(1)谁能看?(2)能看啥?(3)看没看?下面我们从这三个方面一一介绍:(1)谁能看?通过DWS三权分立模型,将管理员分成三类:系统管理员,安全管理员和审计管理员,不存在“一手遮天”的管理员,当某个管理员密码泄露时,使数据库破坏降到最低。从此各司其职,安全管理员负责用户,审计管理员负责日志审计,系统管理员负责系统运维。表1 三权分立管理员名称能否创建用户能否查看审计日志是否有系统管理员权限系统管理员否否是安全管理员是否否审计管理员否是否开启三权分立后,对象权限变化如下表说明:表1 未开启三权分立对象名称系统管理员安全管理员|审计管理员表空间对表空间有创建、修改、删除、访问、分配操作的权限。不具有对表空间进行创建、修改、删除、分配的权限,访问需要被赋权。表对所有表有所有的权限。仅对自己的表有所有的权限,对其他用户的表无权限。索引可以在所有的表上建立索引。仅可以在自己的表上建立索引。模式对所有模式有所有的权限。仅对自己的模式有所有的权限,对其他用户的模式无权限。函数对所有的函数有所有的权限。仅对自己的函数有所有的权限,对其他用户放在public这个公共模式下的函数有调用的权限,对其他用户放在其他模式下的函数无权限。自定义视图对所有的视图有所有的权限。仅对自己的视图有所有的权限,对其他用户的视图无权限。系统表和系统视图可以查看所有系统表和视图。只可以查看部分系统表和视图。 表1 开启三权分立对象名称系统管理员安全管理员|审计管理员表空间无变化无变化。表权限缩小。只对自己的表有所有权限,对其他用户放在属于各自模式下的表无权限。无变化。索引权限缩小。只可以在自己的表上建立索引。无变化。模式权限缩小。只对自己的模式有所有的权限,对其他用户的模式无权限。无变化。函数权限缩小。只对自己的函数有所有的权限,对其他用户放在属于各自模式下的函数无权限。无变化。自定义视图权限缩小。只对自己的视图及其他用户放在public模式下的视图有所有的权限,对其他用户放在属于各自模式下的视图无权限。无变化。系统表和系统视图无变化。无变化。开启方法: 录GaussDB(DWS) 管理控制台。在左侧导航树中,单击“集群管理”。 在集群列表中,单击指定集群的名称,然后单击“安全设置”,打开三权分立开关。依次设置安全管理员用户名、密码、审计管理员用户、密码。 单击“应用”。在弹出的“保存配置”窗口中,选择是否勾选“立即重启集群”,然后单击“是”,重启后生效。(2)能看啥?行级访问控制特性是将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,读取到的结果是不同的。即同一张表,不同用户只能查看自身相关的数据信息,不能查看其他用户的数据信息。GaussDB(DWS)主要通过“ALTER TABLE tablename ENABLE ROW LEVEL SECURITY”语法实现行级访问控制,示例如下: 创建用户alice, bob, peter。6.  CREATE ROLE alice PASSWORD 'Gauss@123';7.  CREATE ROLE bob PASSWORD 'Gauss@123';CREATE ROLE peter PASSWORD 'Gauss@123';  创建表all_data,包含不同用户数据信息。CREATE TABLE public.all_data(id int, role varchar(100), data varchar(100)); 向数据表插入数据。10.INSERT INTO all_data VALUES(1, 'alice', 'alice data');11.INSERT INTO all_data VALUES(2, 'bob', 'bob data');INSERT INTO all_data VALUES(3, 'peter', 'peter data');  将表all_data的读取权限赋予alice,bob和peter用户。GRANT SELECT ON all_data TO alice, bob, peter; 打开行访问控制策略开关。ALTER TABLE all_data ENABLE ROW LEVEL SECURITY; 创建行访问控制策略,当前用户只能查看用户自身的数据。CREATE ROW LEVEL SECURITY POLICY all_data_rls ON all_data USING(role = CURRENT_USER); 查看表详细信息。16. \d+ all_data17.                               Table "public.all_data"18. Column |          Type          | Modifiers | Storage  | Stats target | Description19.--------+------------------------+-----------+----------+--------------+-------------20. id     | integer                |           | plain    |              |21. role   | character varying(100) |           | extended |              |22. data   | character varying(100) |           | extended |              |23.Row Level Security Policies:24.    POLICY "all_data_rls"25.      USING (((role)::name = "current_user"()))26.Has OIDs: no27.Distribute By: HASH(id)28.Location Nodes: ALL DATANODESOptions: orientation=row, compression=no, enable_rowsecurity=true  切换至用户alice,执行SQL"SELECT * FROM all_data"30.SET ROLE alice PASSWORD 'Gauss@123';31.SELECT * FROM all_data;32. id | role  |    data33.----+-------+------------34.  1 | alice | alice data35.(1 row)36. 37.EXPLAIN(COSTS OFF) SELECT * FROM all_data;38.                           QUERY PLAN39.----------------------------------------------------------------40. Streaming (type: GATHER)41.   Node/s: All datanodes42.   ->  Seq Scan on all_data43.         Filter: ((role)::name = 'alice'::name)44. Notice: This query is influenced by row level security feature(5 rows)  切换至用户peter,执行SQL"SELECT * FROM .all_data"46.SET ROLE peter PASSWORD 'Gauss@123';47.SELECT * FROM all_data;48. id | role  |    data49.----+-------+------------50.  3 | peter | peter data51.(1 row)52. 53. EXPLAIN(COSTS OFF) SELECT * FROM all_data;54.                           QUERY PLAN55.----------------------------------------------------------------56. Streaming (type: GATHER)57.   Node/s: All datanodes58.   ->  Seq Scan on all_data59.         Filter: ((role)::name = 'peter'::name)60. Notice: This query is influenced by row level security feature(5 rows)  (3)看没看?GaussDB(DWS) 支持对特定数据库操作记录审计日志,包括:日志保留策略、用户越权访问、存储过程以及对数据库对象的DML、SELECT、COPY和DDL操作。审计日志配置后,当GaussDB(DWS) 集群状态异常,或根据业务需要,用户可以查询审计信息确定故障原因或定位历史操作记录。配置方法: 登录GaussDB(DWS) 管理控制台。单击“集群管理”。 在集群列表中,单击指定集群的名称,然后单击“安全设置”。 在“审计配置”区域中,设置审计日志保留策略。表1 审计日志保留策略参数名说明审计日志保留策略设置审计日志保留策略,支持如下两种策略:§  “空间优先”:表示当单个节点的审计日志超过1G后,将自动淘汰审计日志。§  “时间优先”:表示在“审计日志最小保存时间(天)”内会保留审计日志,超过时间后,根据存储容量限制(单个节点1G),对审计日志进行自动淘汰。审计日志最小保存时间(天)当“审计日志保留策略”设置为“时间优先”策略时,该参数有效。可选天数为0~730天,默认值为90天。 根据需要设置以下操作的审计开关。表1 审计项参数名说明审计用户越权访问操作表示是否记录用户的越权访问操作,默认关闭。审计DML操作表示是否对数据表的INSERT、UPDATE和DELETE操作进行记录,默认关闭。审计SELECT操作表示是否对SELECT操作进行记录,默认关闭。审计存储过程执行表示是否在执行存储过程和自定义函数的时候记录操作信息,默认关闭。审计COPY操作表示是否对COPY操作进行记录,默认关闭。审计DDL操作表示是否对指定数据库对象的CREATE、DROP和ALTER操作进行记录。除“Database”、“Schema”和“User”默认启用记录,其他默认关闭。GaussDB(DWS) 默认还开启了以下的关键审计项。表1 关键审计项参数名说明关键审计项记录用户登录成功、登录失败和注销的信息。记录数据库启动、停止、恢复和切换审计信息。记录用户锁定和解锁功能信息。记录用户权限授予和权限回收信息。记录SET操作的审计功能。 设置是否开启审计日志转储功能。 单击“应用”。查看审计日志:只有拥有AUDITADMIN属性的用户才有查看权限,查询格式如下: pg_query_audit(timestamptz startime,timestamptz endtime,audit_log) 查询审计记录。SELECT * FROM pg_query_audit('2015-07-15 08:00:00','2015-07-15 09:47:33');查询结果如下:           time          |     type      | result | username |    database    | client_conninfo |  object_name   |                          detail_info                | node_name |            thread_id            | local_port | remote_port------------------------+---------------+--------+----------+----------------+-----------------+----------------+---------------------------------------------------------------+-----------+---------------------------------+------------+------------- 2015-07-15 08:03:55+08 | login_success | ok     | dbadmin | gaussdb       | gs_clean@::1    | gaussdb       | login db(gaussdb) success,the current user is:dbadmin       | cn_5003   | 139808902997776@490233835920483 | 9000       | 55805 该条记录表明,用户ommdbadmin在2021-02-23 21:49:57.82+08登录数据库gaussdb。其中client_conninfo字段在log_hostname启动且IP连接时,字符@后显示反向DNS查找得到的主机名。 查询所有CN节点审计记录。69.SELECT * FROM pgxc_query_audit('2019-01-10 17:00:00','2019-01-10 19:00:00') where type = 'login_success' and username = 'user1'; 查询结果如下:          time          |     type      | result | username | database | client_conninfo | object_name |                     detail_info                      |  node_name   |            thread_id            | local_port | remote_port ------------------------+---------------+--------+----------+----------+-----------------+-------------+------------------------------------------------------+--------------+---------------------------------+------------+------------- 2019-01-10 18:06:08+08 | login_success | ok     | user1    | gaussdb | gsql@[local]    | gaussdb    | login db(gaussdb) success,the current user is:user1 | coordinator1 | 139965149210368@600429968516954 | 17560      | null 2019-01-10 18:06:22+08 | login_success | ok     | user1    | gaussdb | gsql@[local]    | gaussdb    | login db(gaussdb) success,the current user is:user1 | coordinator1 | 139965149210368@600429982697548 | 17560      | null 2019-01-10 18:06:54+08 | login_success | ok     | user1    | gaussdb | gsql@[local]    | gaussdb    | login db(gaussdb) success,the current user is:user1 | coordinator2 | 140677694355200@600430014804280 | 17562      | null(3 rows)转自https://bbs.huaweicloud.com/blogs/280636 
  • [运维管理] 【GaussDB A产品】如何批量导出表结构
    【GaussDB A产品】如何批量导出表结构
  • [工具] GaussDB(DWS)pg_xlogdump pagehack工具
    pg_xlogdump pagehack工具如附件,请选择对应操作系统与版本
  • [运维管理] GaussDB A 8.0.0.0 只读用户如何对数据库下所有schema的表进行查询权限
    当前有个诉求:新建了一个只读权限的用户,当前要使该用户对数据库下已有的所有schema模式下的表都有只读权限,并且也要对后续所有schema模式下的表都是只读权限,想知道该如何执行设置。我的schema非常多,一个一个的设置话需要花费很长的时间。针对单独schema下的表的查询权限设置这个我会,如下所示: 创建只读用户 grant USAGE on schema l1,l2 to test; --赋予用户test查询schema的权限 grant SELECT on all tables in schema l1,l2 to test;--对已创建的表赋查询权限 alter default privileges in schema l1,l2 grant SELECT on tables to test; --对以后创建的新表赋予查询权限所以就是想知道有没有方法可以针对库下所有schema的表一起设置权限只读权限的。
  • [变更] 【DWS管控面升级】802升级803,参数信息校验失败: failed to login mysql db
    【问题现象】上传参数表后在校验时,DWS-MySQL-Client-Node 参数信息校验失败:failed to login mysql db【问题分析】登录对应的虚拟机数据库节点查看mysql进程不存在,多次尝试启动失败  ps -ef|grep mysql  查看主节点是否正常,如果正常则重建备节点  查看另一个节点是否为主节点,ip a,浮动ip在该节点则说明其是主节点 并查看其进程正常  决定对备节点进行重建【解决方案】重建备节点,重建成功后,重试工步 登录备节点,切换到mysql用户,使用pathon脚本进行重建 python /usr/local/bin/MHA_RebuildSlave.py 10.28.74.187  //ip为对应主节点对应的ip等待building完成,查看数据库状态,HA状态Get_db_status.pyGet_HA_status.py查看进程是否正常备节点重建成功,再次重试校验通过。
  • [教程培训] 【云小课】大数据时代的隐私利器-GaussDB(DWS)数据脱敏
    背景信息大数据时代的到来,大数据、云计算和人工智能等新技术应用不断深化,为数据的深度挖掘及分析提供了强有力的支撑,大数据中蕴含的巨大价值被逐步挖掘出来。然而,一系列信息泄露事件的曝光,使得数据安全越来越受到广泛的关注。各国各地区逐步建立健全和完善数据安全与隐私保护相关法律法规,提供用户隐私保护的法律保障。如何加强技术层面的数据安全和隐私保护,是对数据仓库产品提出的要求,也是数据安全建设最有效的办法。GaussDB(DWS)产品8.1.1版本发布数据脱敏特性,支持指定用户范围内列级敏感数据的脱敏功能,具有灵活、高效、透明、友好等优点。使得敏感及隐私信息不被泄露,提高了对敏感及私密数据的保护,极大地增强了产品的数据安全能力。什么是数据脱敏数据脱敏(Data Masking),即屏蔽敏感数据,对某些敏感信息(比如,身份证号、手机号、卡号、客户姓名、客户地址、邮箱地址、银行账号、密码类等等 )通过脱敏规则进行数据的变形,实现隐私数据的可靠保护。业界常见的脱敏规则有,替换、重排、加密、截断、掩码,用户也可以根据期望的脱敏算法自定义脱敏规则。良好的数据脱敏实施,需要遵循两个原则:第一,尽可能地为脱敏后的应用,保留脱敏前的有意义信息;第二,最大程度地防止黑客进行破解。数据脱敏分为静态数据脱敏和动态数据脱敏。静态数据脱敏,是数据的“搬移并仿真替换”,是将数据抽取进行脱敏处理后,下发给下游环节,随意取用和读写的,脱敏后数据与生产环境相隔离,满足业务需求的同时保障生产数据库的安全。动态数据脱敏,在访问敏感数据的同时实时进行脱敏处理,可以为不同角色、不同权限、不同数据类型执行不同的脱敏方案,从而确保返回的数据可用而安全。下图为一个简单的静态脱敏和动态脱敏示例,可以看出两者的不同。GaussDB (DWS)的数据脱敏功能,摒弃业务应用层脱敏依赖性高、代价大等痛点,将数据脱敏内化为数据库产品自身的安全能力,提供了一套完整、安全、灵活、透明、友好的数据脱敏解决方案,属于动态数据脱敏。用户识别敏感字段后,基于目标字段,绑定内置脱敏函数,即可创建脱敏策略。脱敏策略(Redaction Policy)与表对象是一一对应的。一个脱敏策略包含表对象、生效条件、脱敏列-脱敏函数对三个关键要素,是该表对象上所有脱敏列的集合,不同字段可以根据数据特征采用不同的脱敏函数。当且仅当生效条件为真时,查询语句才会触发敏感数据的脱敏,而脱敏过程是内置在SQL引擎内部实现的,对生成环境用户是透明不可见的。数据脱敏如何使用第一步:创建脱敏策略需确定受限制用户角色。动态数据脱敏,是在查询语句执行过程中,根据生效条件是否满足,实现实时的脱敏处理。生效条件,通常是针对当前用户角色的判断。敏感数据的可见范围,即是针对不同用户预设的。系统管理员,具有最高权限,任何时刻对任何表的任何字段都可见。第二步:识别和梳理具体业务场景的敏感字段。敏感信息依赖于实际业务场景和安全维度,以自然人为例,用户个体的敏感字段包括:姓名、身份证号、手机号、邮箱地址等等;在银行系统,作为客户,可能还涉及银行卡号、过期时间、支付密码等等;在公司系统,作为员工,可能还涉及薪资、教育背景等;在医疗系统,作为患者,可能还涉及就诊信息等等。第三步:确定脱敏列需要绑定的脱敏函数。产品内置一系列常见的脱敏函数接口,可以针对不同数据类型和数据特征,指定参数,从而达到不一样的脱敏效果。脱敏函数可采用如下三种内置接口,同时支持自定义脱敏函数。三种内置脱敏函数能够涵盖大部分场景的脱敏效果,不推荐使用自定义脱敏函数。MASK_NONE:不作脱敏处理,仅内部测试用。MASK_FULL:全脱敏成固定值。MASK_PARTIAL:使用指定的脱敏字符对脱敏范围内的内容做部分脱敏。不同脱敏列可以采用不同的脱敏函数。比如,手机号通常显示后四位尾号,前面用"*"替换;金额统一显示为固定值0,等等。数据脱敏使用示例以某公司员工表emp,表的属主用户alice以及用户matu、july为例,简单介绍数据脱敏的使用过程。其中,表emp包含员工的姓名、手机号、邮箱、发薪卡号、薪资等隐私数据,用户alice是人力资源经理,用户matu和july是普通职员。假设表、用户及用户对表emp的查看权限均已就绪。创建脱敏策略mask_emp,仅允许alice查看员工所有信息,matu和july对发薪卡号、薪资均不可见。字段card_no是数值类型,采用MASK_FULL全脱敏成固定值0;字段card_string是字符类型,采用MASK_PARTIAL按指定的输入输出格式对原始数据作部分脱敏;字段salary是数值类型,采用数字9部分脱敏倒数第二位前的所有数位值。postgres=# CREATE REDACTION POLICY mask_emp ON emp WHEN (current_user != 'alice')ADD COLUMN card_no WITH mask_full(card_no),ADD COLUMN card_string WITH mask_partial(card_string, 'VVVVFVVVVFVVVVFVVVV','VVVV-VVVV-VVVV-VVVV','#',1,12), ADD COLUMN salary WITH mask_partial(salary, '9', 1, length(salary) - 2);切换到matu和july,查看员工表emp。postgres=> SET ROLE matu PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+---------+---------------------+----------------------+------------+--------------------- 1 | anny | 13420002340 | 0 | ####-####-####-1234 | smithWu@163.com | 99999.9990 | 1999-10-02 00:00:00 2 | bob | 18299023211 | 0 | ####-####-####-3456 | 66allen_mm@qq.com | 9999.9990 | 1989-12-12 00:00:00 3 | cici | 15512231233 | | | jonesishere@sina.com | | 1992-11-06 00:00:00(3 rows)postgres=> SET ROLE july PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+---------+---------------------+----------------------+------------+--------------------- 1 | anny | 13420002340 | 0 | ####-####-####-1234 | smithWu@163.com | 99999.9990 | 1999-10-02 00:00:00 2 | bob | 18299023211 | 0 | ####-####-####-3456 | 66allen_mm@qq.com | 9999.9990 | 1989-12-12 00:00:00 3 | cici | 15512231233 | | | jonesishere@sina.com | | 1992-11-06 00:00:00(3 rows)由于工作调整,matu进入人力资源部参与公司招聘事宜,也对员工所有信息可见,修改策略生效条件。postgres=> ALTER REDACTION POLICY mask_emp ON emp WHEN(current_user NOT IN ('alice', 'matu'));切换到用户matu和july,重新查看员工表emp。postgres=> SET ROLE matu PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+------------------+---------------------+----------------------+------------+--------------------- 1 | anny | 13420002340 | 1234123412341234 | 1234-1234-1234-1234 | smithWu@163.com | 10000.0000 | 1999-10-02 00:00:00 2 | bob | 18299023211 | 3456345634563456 | 3456-3456-3456-3456 | 66allen_mm@qq.com | 9999.9900 | 1989-12-12 00:00:00 3 | cici | 15512231233 | | | jonesishere@sina.com | | 1992-11-06 00:00:00(3 rows)postgres=> SET ROLE july PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+---------+---------------------+----------------------+------------+--------------------- 1 | anny | 13420002340 | 0 | ####-####-####-1234 | smithWu@163.com | 99999.9990 | 1999-10-02 00:00:00 2 | bob | 18299023211 | 0 | ####-####-####-3456 | 66allen_mm@qq.com | 9999.9990 | 1989-12-12 00:00:00 3 | cici | 15512231233 | | | jonesishere@sina.com | | 1992-11-06 00:00:00(3 rows)员工信息phone_no、email和birthday也是隐私数据,更新脱敏策略mask_emp,新增三个脱敏列。postgres=> ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN phone_no WITH mask_partial(phone_no, '*', 4);postgres=> ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN email WITH mask_partial(email, '*', 1, position('@' in email));postgres=> ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN birthday WITH mask_full(birthday);切换到用户july,查看员工表emp。postgres=> SET ROLE july PASSWORD 'Gauss@123';postgres=> SELECT * FROM emp; id | name | phone_no | card_no | card_string | email | salary | birthday ----+------+-------------+---------+---------------------+----------------------+------------+--------------------- 1 | anny | 134******** | 0 | ####-####-####-1234 | ********163.com | 99999.9990 | 1970-01-01 00:00:00 2 | bob | 182******** | 0 | ####-####-####-3456 | ***********qq.com | 9999.9990 | 1970-01-01 00:00:00 3 | cici | 155******** | | | ************sina.com | | 1970-01-01 00:00:00(3 rows)考虑用户交互的友好性,GaussDB (DWS) 提供系统视图redaction_policies和redaction_columns,方便用户直接查看更多脱敏信息。postgres=> SELECT * FROM redaction_policies; object_schema | object_owner | object_name | policy_name | expression | enable | policy_description ---------------+--------------+-------------+-------------+-----------------------------------+--------+-------------------- public | alice | emp | mask_emp | ("current_user"() = 'july'::name) | t | (1 row)postgres=> SELECT object_name, column_name, function_info FROM redaction_columns; object_name | column_name | function_info -------------+-------------+------------------------------------------------------------------------------------------------------- emp | card_no | mask_full(card_no) emp | card_string | mask_partial(card_string, 'VVVVFVVVVFVVVVFVVVV'::text, 'VVVV-VVVV-VVVV-VVVV'::text, '#'::text, 1, 12) emp | email | mask_partial(email, '*'::text, 1, "position"(email, '@'::text)) emp | salary | mask_partial(salary, '9'::text, 1, (length((salary)::text) - 2)) emp | birthday | mask_full(birthday) emp | phone_no | mask_partial(phone_no, '*'::text, 4)(6 rows)突然某一天,公司内部可共享员工信息时,直接删除表emp的脱敏策略mask_emp即可。postgres=> DROP REDACTION POLICY mask_emp ON emp;GaussDB(DWS)数据脱敏优势一套简单、易用的数据脱敏策略语法。一系列可覆盖常见隐私数据脱敏效果的、灵活配置的内置脱敏函数。一个完备、便捷的脱敏策略应用方案,使得原始语句在执行过程中可以实时、透明、高效地实现脱敏。GaussDB(DWS)充分满足客户业务场景的数据脱敏诉求,支持常见隐私数据的脱敏效果,实现敏感数据的可靠保护。了解更多华为云数据仓库GaussDB(DWS),请点击这里。
  • [运维管理] GaussDB A 8.0.0.1 omm用户对于sudo权限的必要性说明?
    【操作步骤&问题现象】GaussDB A 8.0.0.1 omm用户对于sudo权限的必要性说明?对于omm用户sudo权限是否是必须的?如果收回omm用户的sudo权限有哪些影响?
总条数:835 到第
上滑加载中