openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程

news2025/1/11 6:11:01

文章目录

    • openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程
      • 122.1 创建并执行涉及加密列的函数/存储过程

openGauss学习笔记-122 openGauss 数据库管理-设置密态等值查询-密态支持函数/存储过程

密态支持函数/存储过程当前版本只支持sql和PL/pgSQL两种语言。由于密态支持存储过程中创建和执行函数/存储过程对用户是无感知的,因此语法和非密态无区别。

密态等值查询支持函数存储过程新增系统表gs_encrypted_proc,用于存储参数返回的原始数据类型。

122.1 创建并执行涉及加密列的函数/存储过程

  1. 创建密钥,详细步骤请参考使用gsql操作密态数据库使用JDBC操作密态数据库

  2. 创建加密表。

    openGauss=# CREATE TABLE creditcard_info (
    openGauss(#   id_number int,
    openGauss(#   name  text,
    openGauss(#   credit_card varchar(19) encrypted with (column_encryption_key = ImgCEK1, encryption_type = DETERMINISTIC)
    openGauss(# ) with (orientation=row);
    CREATE TABLE
    
  3. 插入数据。

    openGauss=# insert into creditcard_info values(1, 'Avi', '1234567890123456');
    INSERT 0 1
    openGauss=# insert into creditcard_info values(2, 'Eli', '2345678901234567');
    INSERT 0 1
    
  4. 创建函数支持密态等值查询。

    openGauss=# CREATE FUNCTION f_encrypt_in_sql(val1 text, val2 varchar(19)) RETURNS text AS 'SELECT name from creditcard_info where name=$1 or credit_card=$2 LIMIT 1' LANGUAGE SQL;
    CREATE FUNCTION
    openGauss=# CREATE FUNCTION f_encrypt_in_plpgsql (val1 text, val2 varchar(19), OUT c text) AS $$
    openGauss$# BEGIN
    openGauss$# SELECT into c name from creditcard_info where name=$1 or credit_card =$2 LIMIT 1;
    openGauss$# END; $$
    openGauss-# LANGUAGE plpgsql;
    CREATE FUNCTION
    
  5. 执行函数。

    openGauss=# SELECT f_encrypt_in_sql('Avi','1234567890123456');
     f_encrypt_in_sql
    ------------------
     Avi
    (1 row)
    
    openGauss=# SELECT f_encrypt_in_plpgsql('Avi', val2=>'1234567890123456');
     f_encrypt_in_plpgsql
    ----------------------
     Avi
    (1 row)
    

img 说明:

  • 函数/存储过程中的“执行动态查询语句”中的查询是在执行过程中编译,因此函数/存储过程中的表名、列名不能在创建阶段未知,输入参数不能用于表名、列名或以任何方式连接。
  • 在RETURNS、IN和OUT的参数中,不支持混合使用加密和非加密类型参数。虽然参数类型都是原始数据类型,但实际类型不同。
  • 对高级包接口中,如dbe_output.print_line()等在服务端打印输出的接口不会做解密操作,加密数据类型在强转成明文原始数据类型时会打印出该数据类型的默认值。
  • 当前版本函数/存储过程的LANGUAGE只支持SQL和PL/pgSQL,不支持C和JAVA等其他过程语言。
  • 不支持在函数/存储过程中执行其他查询加密列的函数/存储过程。
  • 当前版本不支持default、DECLARE中为变量赋予默认值,且不支持对DECLARE中的返回值进行解密,用户可以用执行函数时用输入参数、输出参数来代替使用。
  • 不支持gs_dump对涉及加密列的function进行备份。
  • 不支持在函数/存储过程中创建密钥。
  • 该版本密态函数/存储过程不支持触发器。
  • 密态等值查询函数/存储过程不支持对PL/pgSQL语言对语法进行转义,对于语法主体带有引号的语法CREATE FUNCTION AS ‘语法主体’, 可以用CREATE FUNCTION AS ‘语法主体’ 代替。
  • 不支持在密态等值查询函数/存储过程中执行修改加密列定义的操作,包括创建加密表、添加加密列,由于执行函数是在服务端,客户端没法判断是否是需要刷新缓存,得断开连接后或触发刷新客户端加密列缓存才可以对该列做加密操作。
  • 密态支持函数在创建加密函数时会在系统表gs_encrypted_proc中添加参数对应的加密列的oid,因此删除表后重建同名表可能会使密态函数失效,需要重新创建密态函数。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1203768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初始Linux(五)(定时任务)

crontab 进行 定时任务的设置 概述: 任务调度:是指系统在某个时间执行的特定的命令或程序 任务调度分类: 1.系统工作:有些重要的工作必须周而复始的执行,如病毒扫描 2.个别用户工作: 个别用户可能希望执行某些程序,比如mysql数据库的备份 基本语法: crontab [选项] -e 表示…

CCF CSP认证历年题目自练Day45

这几天搞泰迪杯数据分析技能赛去了。等拿国奖了就出一期关于泰迪杯的。 题目 试题编号: 201703-3 试题名称: Markdown 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   Markdown 是一种很流行的轻量级标记…

11-13 周一 同济子豪兄CNN卷积神经网络学习记录

11-13 周一 同济子豪兄CNN卷积神经网络学习记录 时间版本修改人描述2023年11月13日14:02:14V0.1宋全恒新建文档2023年11月13日19:05:29V0.2宋全恒完成 大白话讲解卷积神经网络的学习 简介 为了深入理解CNN,进行B站 同济子豪兄深度学习之卷积神经网络的学习. 主要内…

加速mvn下载seatunnel相关jar包

seatunnel安装的时候,居然要使用mvnw来下载jar包,而且是从https://repo.maven.apache.org 下载,速度及其缓慢,改用自己本地的mvn下载。 修改其安装插件相关脚本,复制install-plugin.sh重命名为install-plugin-mvn.sh …

【数据分享】我国独角兽企业数据(excel格式\shp格式)

企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平!比如一个城市的金融企业较多,那这个城市的金融产业肯定比较发达;一个城市的制造业企业较多,那这个城市的制造业肯定比较发达。 本次我们为大家带来的…

论文导读 | 融合大规模语言模型与知识图谱的推理方法

前 言 大规模语言模型在多种自然语言处理相关任务上展现了惊人的能力,如智能问答等,但是其推理能力尚未充分展现。本文首先介绍大模型进行推理的经典方法,然后进一步介绍知识图谱与大模型融合共同进行推理的工作。 文章一:使用思维…

Python大神用的贼溜的九个技巧,超级实用~

文章目录 一、整理字符串输入二、迭代器(切片)三、跳过可对对象的开头四、只包含关键字参数的函数 (kwargs)五、创建支持「with」语句的对象六、用「slots」节省内存七、限制「CPU」和内存使用量八、控制可以/不可以导入什么九、实现比较运算符的简单方法…

Spring IOC - Bean的生命周期之实例化

在Spring启动流程文章中讲到,容器的初始化是从refresh方法开始的,其在初始化的过程中会调用finishBeanFactoryInitialization方法。 而在该方法中则会调用DefaultListableBeanFactory#preInstantiateSingletons方法,该方法的核心作用是初始化…

【Android】画面卡顿优化列表流畅度四之Glide几个常用参数设置

好像是一年前快两年了,笔者解析过glide的源码,也是因为觉得自己熟悉一些,也就没太关注过项目里glide的具体使用对当前业务的影响;主要是自负,还有就是真没有碰到过这样的数据加载情况。暴露了经验还是不太足够 有兴趣的…

【蓝桥杯选拔赛真题67】Scratch鹦鹉学舌 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch鹦鹉学舌 一、题目要求 编程实现 二、案例分析 1、角色分析

SQL-----STUDENT

【学生信息表】 【宿舍信息表】 【宿舍分配表】 为了相互关联,我们需要在表中添加外键。在宿舍分配表中添加用于关联学生信息表的外键 student_id,以及用于关联宿舍信息表的外键 dormitory_id; sql代码 -- 创建学生信息表 CREATE TABLE st…

如何利用黑群晖虚拟机和内网穿透实现公网远程访问

文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是前排提醒: 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机:1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

NLP在网安领域中的应用(初级)

NLP在网安领域的应用 写在最前面1. 威胁情报分析1.1 社交媒体情报分析(后面有详细叙述)1.2 暗网监测与威胁漏洞挖掘 2. 恶意软件检测2.1 威胁预测与趋势分析 3. 漏洞管理和响应4. 社交工程攻击识别4.1 情感分析与实时监测4.2 实体识别与攻击者画像构建4.…

超越任务调度的极致:初探分布式定时任务 XXL-JOB 分片广播

XXL-JOB 是一个分布式任务调度平台&#xff0c;支持分片任务执行。 1. 依赖引入 在项目中引入 XXL-JOB 的相关依赖。通常&#xff0c;你需要在项目的 pom.xml 文件中添加如下依赖&#xff1a; <dependency><groupId>com.xuxueli</groupId><artifactId&…

【02】Istio流量治理

2.1 Istio流量治理 Istio的流量路由规则使运维人员可以轻松控制服务之间的流量和API调用 Istio简化了诸如断路器&#xff0c;超时和重试之类的服务级别属性的配置&#xff0c;并使其易于设置重要任务&#xff08;如A/B测试&#xff0c;canary部署和基于百分比的流量拆分的分段部…

postswigger 靶场(CSRF)攻略-- 2.令牌验证

靶场地址&#xff1a; What is CSRF (Cross-site request forgery)? Tutorial & Examples | Web Security Academy (portswigger.net)https://portswigger.net/web-security/csrf 令牌(token)验证取决于请求方法 题目中已告知易受攻击的是电子邮件的更改功能&#xff0…

汽车展示服务预约小程序的效果

汽车/摩托车/电动车等是人们主要的交通工具&#xff0c;市场各品牌及经销店非常多&#xff0c;其行业可拓展性非常强&#xff0c;因此在线下经营的同时&#xff0c;线上也同样具备获客转化品牌传播等属性。 而品牌所遇的难题也非常明显&#xff0c;那就是线上不足&#xff0c;线…

【LIUNX】配置DNS服务器

【LIUNX】配置DNS A.安装bind bind-utilsB.修改named.conf配置文件C.生成并修改uos.com.db 文件1.复制模版文件named.localhost 到文件uos.com.db2.修改uos.com.db文件 D.重启named服务E.配置DNS服务器F.测试DNS服务器 A.安装bind bind-utils yum -y install bind bind-utilso…

青少年编程学习 等级考试 蓝桥杯/NOC/GESP等比赛资料合集

一、博主愚见 在当今信息技术高速发展的时代&#xff0c;编程已经成为了一种必备的技能。随着社会对于科技人才的需求不断增加&#xff0c;青少年编程学习正逐渐成为一种趋势。为了更好地帮助青少年学习编程&#xff0c;提升他们的技能和素质&#xff0c;博主结合自身多年从事青…

《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox

1、按钮组QButtonGroup 如果有多个单选按钮&#xff0c;可以统一放进一个按钮组。 图中有三个单选按钮放进了一个QGroupBox,并且设置了水平布局&#xff0c;现在要将这三个单选按钮放进一个按钮组&#xff0c;之前的想法是先把三个按钮加入按钮组&#xff0c;再把按钮组放进QG…