云服务器内容精选
-
示例 以员工表emp,表的属主alice及角色matu、july为例,简要介绍数据脱敏过程。其中,表emp包含员工的姓名、手机号、邮箱、银行卡号、薪资等隐私数据 使用管理员用户连接数据库后,创建角色alice、matu和july。 1 2 3 CREATE ROLE alice PASSWORD 'password'; CREATE ROLE matu PASSWORD 'password'; CREATE ROLE july PASSWORD 'password'; 赋予alice、matu和july当前数据库的模式权限。 1 GRANT ALL PRIVILEGES on schema public to alice,matu,july; 切换至角色alice,创建表emp并插入三条员工信息。 1 2 3 4 5 6 7 SET ROLE alice PASSWORD 'password'; CREATE TABLE emp(id int, name varchar(20), phone_no varchar(11), card_no number, card_string varchar(19), email text, salary numeric(100, 4), birthday date); INSERT INTO emp VALUES(1, 'anny', '13420002340', 1234123412341234, '1234-1234-1234-1234', 'smithWu@163.com', 10000.00, '1999-10-02'); INSERT INTO emp VALUES(2, 'bob', '18299023211', 3456345634563456, '3456-3456-3456-3456', '66allen_mm@qq.com', 9999.99, '1989-12-12'); INSERT INTO emp VALUES(3, 'cici', '15512231233', NULL, NULL, 'jonesishere@sina.com', NULL, '1992-11-06'); alice将表emp的读取权限授予matu、july。 1 GRANT SELECT ON emp TO matu, july; 创建脱敏策略mask_emp,仅alice可查看员工所有信息,matu和july对员工银行卡号和薪资数据不可见。字段card_no是数值类型,采用MASK_FULL全脱敏成固定值0;字段card_string是字符类型,采用MASK_PARTIAL按指定的输入输出格式对原始数据进行部分脱敏;字段salary是数值类型,采用MASK_PARTIAL指定数字9部分脱敏倒数第二位前的所有数位值。 1 2 3 4 CREATE REDACTION POLICY mask_emp ON emp WHEN (current_user IN ('matu', 'july')) 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。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SET ROLE matu PASSWORD 'password'; 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) SET ROLE july PASSWORD 'password'; 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也有员工所有信息的查看权限,只有july不可见,修改策略生效范围即可。 1 2 SET ROLE alice PASSWORD 'password'; ALTER REDACTION POLICY mask_emp ON emp WHEN(current_user = 'july'); 切换到matu和july,重新查看员工表emp。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SET ROLE matu PASSWORD 'password'; 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) SET ROLE july PASSWORD 'password'; 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,新增三个脱敏列。 1 2 3 4 SET ROLE alice PASSWORD 'password'; ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN phone_no WITH mask_partial(phone_no, '*', 4); ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN email WITH mask_partial(email, '*', 1, position('@' in email)); ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN birthday WITH mask_full(birthday); 切换到july,查看表emp数据。 1 2 3 4 5 6 7 8 SET ROLE july PASSWORD 'password'; 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) 通过视图redaction_policies和redaction_columns查看当前脱敏策略mask_emp的详细信息。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 SELECT * FROM redaction_policies; object_schema | object_owner | object_name | policy_name | expression | enable | policy_description | inherited ---------------+--------------+-------------+-------------+-----------------------------------+--------+--------------------+----------- public | alice | emp | mask_emp | ("current_user"() = 'july'::name) | t | | f (1 row) 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) 新增一列salary_info,若需要将文本类型的薪资信息统一脱敏成“*.*”,可以创建自定义脱敏函数实现。此处采用PL/PGSQL语言定义脱敏函数mask_regexp_salary,创建脱敏列时,只需自定义脱敏的函数名和参数列表,详细内容可参考 GaussDB (DWS)用户自定义函数。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 SET ROLE alice PASSWORD 'password'; ALTER TABLE emp ADD COLUMN salary_info TEXT; UPDATE emp SET salary_info = salary::text; CREATE FUNCTION mask_regexp_salary(salary_info text) RETURNS text AS $$ SELECT regexp_replace($1, '[0-9]+','*','g'); $$ LANGUAGE SQL STRICT SHIPPABLE; ALTER REDACTION POLICY mask_emp ON emp ADD COLUMN salary_info WITH mask_regexp_salary(salary_info); SET ROLE july PASSWORD 'password'; SELECT id, name, salary_info FROM emp; id | name | salary_info ----+------+------------- 1 | anny | *.* 2 | bob | *.* 3 | cici | (3 rows) 无需为表emp设置敏感策略,删除脱敏策略mask_emp。 1 2 SET ROLE alice PASSWORD 'password'; DROP REDACTION POLICY mask_emp ON emp;
-
数据管理流程 数据管理功能可以协助用户快速建立数据模型,为后续的脚本和作业开发提供数据实体。通过数据管理,您可以: 支持管理DWS、 MRS Hive、 DLI 等多种 数据湖 。 支持可视化和DDL方式管理数据库表。 注意,在MRS API连接方式下,不支持通过可视化方式查看与管理该连接下的数据库、数据表和字段。 单击可以查看数据连接目录树下的数据库、数据表以及字段信息。DWS SQL、DLI SQL、MRS Hive SQL代理模式均支持查看目录树,其他数据连接均不支持。 如果您在使用数据开发前,已创建了数据连接和对应的数据库和数据表,则可跳过数据管理操作,直接进入脚本开发或作业开发。 数据管理的使用流程如下: 图1 数据管理流程 创建数据连接,连接相关数据湖底座服务。具体请参见新建数据连接。 基于相应服务,新建数据库。具体请参见新建数据库。 如果是DWS连接,则需要新建数据库模式;否则直接新建数据表。具体请参见(可选)新建数据库模式。 新建数据表。具体请参见新建数据表。 父主题: 数据管理
-
请求示例 修改数据库用户为user。 PUT https://das.cn-north-1.myhuaweicloud.com/v3/054e292c9880d4992f02c0196d3ea468/instances/da304cd5bbb944de828759bc7be3d3fein01/db-users/24c0c455-1f0e-448b-acb2-6e184b4ffcfa { "db_username" : "user", "db_user_password" : "password" }
-
URI PUT /v3/{project_id}/instances/{instance_id}/db-users/{db_user_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 租户在某一Region下的项目ID。 获取方法请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 instance_id 是 String 参数解释: 实例ID。标识实例的唯一标识。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 db_user_id 是 String 参数解释: 数据库用户ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字、中划线组成,且长度为36个字符的UUID。 默认取值: 不涉及。
-
URI GET /v3/{project_id}/instances/{instance_id}/db-users 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 租户在某一Region下的项目ID。 获取方法请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 instance_id 是 String 参数解释: 实例ID。标识实例的唯一标识。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 参数解释: 索引位置,偏移量。从第一条数据偏移offset条数据后开始查询。例如:该参数指定为1,limit指定为10,则只展示第2~11条数据。 约束限制: 不涉及。 取值范围: [0, 2^31-1] 默认取值: 默认为0(偏移0条数据,表示从第一条数据开始查询)。 limit 否 Integer 参数解释: 查询记录数。例如该参数设定为10,则查询结果最多只显示10条记录。 约束限制: 不涉及。 取值范围: [1, 100] 默认取值: 默认为100。 db_user_id 否 String 参数解释: 数据库用户ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字、中划线组成,且长度为36个字符的UUID。 默认取值: 不涉及。 db_username 否 String 参数解释: 数据库用户名称。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 total Integer 参数解释: 总记录数。 取值范围: [0, 2^31-1],实际取决于查询。 db_users Array of DbUser objects 参数解释: 数据库用户列表。 取值范围: 不涉及。 表4 DbUser 参数 参数类型 描述 db_user_id String 参数解释: 数据库用户ID。 取值范围: 由英文字母、数字、中划线组成,且长度为36个字符的UUID。 db_username String 参数解释: 数据库用户名称。 取值范围: 不涉及。
-
请求示例 查询元数据锁列表。 GET https://das.cn-north-1.myhuaweicloud.com/v3/054e292c9880d4992f02c0196d3ea468/instances/da304cd5bbb944de828759bc7be3d3fein01/metadata-locks?db_user_id=2c250598-1e3c-4d31-bc19-be1d866247e6&thread_id=12121&database=example&table=example
-
响应示例 状态码: 200 { "metadata_locks" : [ { "thread_id" : "4096619", "lock_status" : "GRANTED", "lock_mode" : "MDL_SHARED_READ", "lock_type" : "Table metadata lock", "lock_duration" : "MDL_TRANSACTION", "table_schema" : "test_zyr", "table_name" : "test2", "user" : "root", "time" : "40", "host" : "das server", "database" : "test_zyr", "command" : "Sleep", "state" : "", "sql" : null, "trx_exec_time" : "341", "block_process" : [ ], "wait_process" : [ ] } ], "count" : 1 }
-
URI GET /v3/{project_id}/instances/{instance_id}/metadata-locks 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 租户在某一Region下的项目ID。 获取方法请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 instance_id 是 String 参数解释: 实例ID。标识实例的唯一标识。 约束限制: 仅支持MySQ L实例 。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 表2 Query参数 参数 是否必选 参数类型 描述 db_user_id 是 String 参数解释: 数据库用户ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字、中划线组成,且长度为36个字符的UUID。 默认取值: 不涉及。 thread_id 否 String 参数解释: 会话ID。 约束限制: 不涉及。 取值范围: [0, 2^31-1],实际取决于查询。 默认取值: 不涉及。 database 否 String 参数解释: 数据库名称。 约束限制: 仅支持MySQL实例的数据库。 取值范围: 不涉及。 默认取值: 不涉及。 table 否 String 参数解释: 数据库表名。 约束限制: 仅支持MySQL实例的数据库的表。 取值范围: 不涉及。 默认取值: 不涉及。
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 metadata_locks Array of MetadataLock objects 参数解释: 元数据锁列表。 取值范围: 不涉及。 count Integer 参数解释: 元数据锁数量。 取值范围: [0, 2^31-1],实际取决于查询。 表4 MetadataLock 参数 参数类型 描述 thread_id String 参数解释: 会话ID。 取值范围: [0, 2^31-1],实际取决于查询。 lock_status String 参数解释: 锁状态。 取值范围: PENDING:等待锁 GRANTED:持有锁 lock_mode String 参数解释: 加锁模式。 取值范围: MDL_SHARED MDL_EXCLUSIVE MDL_SHARED_READ MDL_SHARED_WRITE lock_type String 参数解释: 锁类型。 取值范围: Table metadata lock:表元数据锁 Schema metadata lock:库元数据锁 Tablespace lock:表空间锁 Global read lock:全局读锁 lock_duration String 参数解释: 锁范围。 取值范围: MDL_STATEMENT:语句级别 MDL_TRANSACTION:事务级别 MDL_EXPLICIT:global级别 table_schema String 参数解释: 锁所在的数据库,对于部分Global read lock级别的元数据锁,该值为空。 取值范围: 不涉及。 table_name String 参数解释: 表名。 取值范围: 不涉及。 user String 参数解释: 用户。 取值范围: 不涉及。 time String 参数解释: 时间。 取值范围: 不涉及。 host String 参数解释: 主机。 取值范围: 不涉及。 database String 参数解释: 会话所在的数据库。 取值范围: 不涉及。 command String 参数解释: 命令。 取值范围: 不涉及。 state String 参数解释: 状态。 取值范围: 不涉及。 sql String 参数解释: SQL语句。 取值范围: 不涉及。 trx_exec_time String 参数解释: 事务执行时间。 取值范围: 不涉及。 block_process Array of Process objects 参数解释: 阻塞会话列表。 取值范围: 不涉及。 wait_process Array of Process objects 参数解释: 等待会话列表。 取值范围: 不涉及。 表5 Process 参数 参数类型 描述 id String 参数解释: 会话ID。 取值范围: [0, 2^31-1],实际取决于查询。 user String 参数解释: 用户。 取值范围: 不涉及。 host String 参数解释: 主机。 取值范围: 不涉及。 database String 参数解释: 数据库。 取值范围: 不涉及。 command String 参数解释: 命令。 取值范围: 不涉及。 time String 参数解释: 会话持续时间。 取值范围: 不涉及。 state String 参数解释: 状态。 取值范围: 不涉及。 sql String 参数解释: SQL语句。 取值范围: 不涉及。 trx_executed_time String 参数解释: 事务持续时间。 取值范围: 不涉及。
-
URI DELETE /v3/{project_id}/instances/{instance_id}/db-users/{db_user_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 参数解释: 租户在某一Region下的项目ID。 获取方法请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 instance_id 是 String 参数解释: 实例ID。标识实例的唯一标识。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字组成,且长度为32个字符。 默认取值: 不涉及。 db_user_id 是 String 参数解释: 数据库用户ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字、中划线组成,且长度为36个字符的UUID。 默认取值: 不涉及。
-
响应参数 状态码: 200 表2 响应Body参数 参数 参数类型 描述 quotas Array of Quotas objects 参数解释: 配额列表对象。 取值范围: 不涉及。 表3 Quotas 参数 参数类型 描述 resources Array of Resource objects 参数解释: 资源列表对象。 取值范围: 不涉及。 表4 Resource 参数 参数类型 描述 type String 参数解释: 根据type过滤查询指定类型的配额。 取值范围: 云DBA:cloudDba used Long 参数解释: 已创建的资源个数。 取值范围: [0, 2^31-1],实际取决于查询。 quota Long 参数解释: 资源的最大配额数。 取值范围: [0, 2^31-1],实际取决于查询。 min Long 参数解释: 允许修改的配额最小值。 取值范围: [0, 2^31-1],实际取决于查询。
-
请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 db_user_id 否 String 参数解释: 数据库用户ID。 约束限制: 不涉及。 取值范围: 只能由英文字母、数字、中划线组成,且长度为36个字符的UUID。 默认取值: 不涉及。 database 否 String 参数解释: 数据库名称。 约束限制: 仅支持MySQL实例的数据库。 取值范围: 不涉及。 默认取值: 不涉及。 sql 否 String 参数解释: SQL语句。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 execution_plans Array of ExecutionPlan objects 参数解释: SQL执行计划列表。 取值范围: 不涉及。 error_message String 参数解释: SQL执行失败时,显示执行错误信息。 取值范围: 不涉及。 表4 ExecutionPlan 参数 参数类型 描述 id String 参数解释: 执行计划id。 取值范围: [0, 2^31-1],实际取决于查询。 select_type String 参数解释: select子句的类型。 取值范围: 不涉及。 table String 参数解释: 数据库表。 取值范围: 不涉及。 partitions String 参数解释: 查询将匹配记录的分区。 取值范围: 不涉及。 type String 参数解释: 访问类型。 取值范围: 不涉及。 possible_keys String 参数解释: 可能使用的键(索引)。 取值范围: 不涉及。 key String 参数解释: 实际使用的键(索引)。 取值范围: 不涉及。 key_len String 参数解释: 决定使用的键的长度。 取值范围: 不涉及。 ref String 参数解释: 使用哪个列或常数与键一起来选择行。 取值范围: 不涉及。 rows String 参数解释: MySQL认为它执行查询时必须检查的行数。 取值范围: 不涉及。 filtered String 参数解释: 按表条件过滤的表行的估计百分比。 取值范围: 不涉及。 extra String 参数解释: 其他信息。 取值范围: 不涉及。
-
请求示例 查询SQL执行计划(POST请求) POST https://das.cn-north-1.myhuaweicloud.com/v3/054e292c9880d4992f02c0196d3ea468/instances/da304cd5bbb944de828759bc7be3d3fein01/sql/explain { "db_user_id" : "2c250598-1e3c-4d31-bc19-be1d866247e6", "database" : "abc", "sql" : "select 1" }
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格