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

文章目录

    • 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,因此删除表后重建同名表可能会使密态函数失效,需要重新创建密态函数。

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

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

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

图片

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【工程实践】Docker使用记录

前言 服务上线经常需要将服务搬到指定的服务器上,经常需要用到docker,记录工作中使用过dcoker指令。 1.写Dockerfile 1.1 全新镜像 FROM nvidia/cuda:11.7.1-devel-ubuntu22.04ENV WORKDIR/data/Qwen-14B-Chat WORKDIR $WORKDIR ADD . $WORKDIR/RUN ap…

【数组方法reduce】reduce细讲以及模拟重写其他数组扩展方法

学习关键语句: Array.reduce Array.prototype.reduce reduce方法 重写 reduce 方法 1. 写在前面 很多同学 ( 指我自己 ) 在学习其他数组扩展方法时都没那么困难 , 但是到了 reduce 方法时就会显得蠢蠢的 , 所以今天就赶紧将这个方法讲个明白 其实所有的数组扩展方法本质上都…

数据结构 顺序表和链表

1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串.. 线性表在逻辑上是线性结构,也就说是连续的一条直线…

2023年【汽车驾驶员(高级)】证考试及汽车驾驶员(高级)实操考试视频

题库来源:安全生产模拟考试一点通公众号小程序 汽车驾驶员(高级)证考试考前必练!安全生产模拟考试一点通每个月更新汽车驾驶员(高级)实操考试视频题目及答案!多做几遍,其实通过汽车…

【备忘】在Nginx服务器安装SSL证书

您可以在Nginx或Tengine服务器上安装SSL证书,实现通过HTTPS安全访问Web服务器。本文介绍如何为Nginx或Tengine服务器安装SSL证书。 重要 本文以CentOS 8.0 64位操作系统、Nginx 1.14.2为例介绍。不同版本的操作系统或Web服务器,部署操作可能有所差异&a…

2020年12月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 下面哪个区域是“舞台区”? A:A B:B C:C D:D 答案:B 第2题 下面哪段程序可以随机切换三个背景? A: B: C: D:

私域电商:构建商业新模式的必要性

随着互联网的快速发展,传统的电子商务模式已经无法满足企业对于个性化、精准化服务的需求。在这样的背景下,私域电商应运而生,为企业提供了新的商业机会和增长点。本文将探讨私域电商的必要性及其构建商业新模式的影响。 一、私域电商的概念 …

Python 邮件发送(163为例)

代码 import smtplib import socket from email.mime.text import MIMEText from email.header import Headerdef send_mail():# 设置发件人、收件人、主题、内容from_address 18847097110163.comto_address 963268595qq.comsubject test emailbody hahahhahaha# SMTP邮件…

若依框架下载文件

若依下载的逻辑是指定文件存储的路径,在ruoyi-admin模块下的application.yml中配置路径结尾必须要加/或者\结尾。 他使用的是虚拟路径映射,所以文件名必须是配置路径下真实的文件名。 若依采用的是流的方式,前端必须要用bolb的方式去接收&am…

八大技术架构-演进之路

单机架构 1、简介 应用服务和数据库服务共用一台服务器 2、出现原因 出现在互联网早期,访问量比较小,单机足以满足需求 3、架构工作原理 单机架构通过应用(划分了多个模块)和数据库在单个服务器上协作完成业务运行&#xff0…

双十一网络电视盒子哪个品牌好?内行分享权威电视盒子排行榜

双十一大促正如火如荼进行中,因为我从事的工作和电视盒子有关,身边的朋友们在选购电视盒子时不知道从何下手就会问我的意见,本期将盘点业内公认的电视盒子排行榜,给双十一想买电视盒子的朋友们做个参考。 排行一:泰捷W…

解决 Django 开发中的环境配置问题:Windows 系统下的实战指南20231113

简介: 在本文中,我想分享一下我最近在 Windows 环境下进行 Django 开发时遇到的一系列环境配置问题,以及我是如何一步步解决这些问题的。我的目标是为那些可能遇到类似困难的 Django 开发者提供一些指导和帮助。 问题描述: 最近…

美颜与性能的平衡:视频直播美颜SDK集成与性能优化指南

目前美颜SDK所遇到的挑战是如何在追求美颜效果的同时保持系统性能的稳定。本文将深入探讨视频直播美颜SDK的集成以及性能优化的关键指南,以帮助开发者找到合适的平衡点。 一、美颜SDK的集成 1.选择适用于直播的美颜SDK 在美颜SDK的众多选择中,要考虑…

文献分享 C-C 模体化学因子受体2的抑制通过恢复免疫细胞格局减轻肝纤维化

C-C 模体化学因子受体2的抑制通过恢复免疫细胞格局减轻肝纤维化 C-C motif chemokine receptor 2 inhibition reduces liver fibrosis by restoring the immune cell landscape 发表于 International Journal of Biological Sciences IF 9.2 摘要 在肝脏中,细胞外…

【从零开始学习Linux】一文带你了解Shell外壳及用户权限(二)

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:Linux入门 🔭【从零开始学习Linux】系列均属于Linux入门,主要包含Linux操作系统下的指令、操作、权限以及开发工具&a…

抖音自动发评论之论人工智能AI的应用和发展趋势

人工智能(Artificial Intelligence,AI)是目前国际上热门的科技话题之一。它是计算机科学中的一个分支,旨在创造能够智能地工作、学习、感知、理解和决策的机器。人工智能的应用范围十分广泛,包括语音识别、自然语言处理…

冰点还原精灵_Deep Freeze Standard v8.60.020.5592中文版

eep Freeze(又被成为冰点还原精灵)是Faronics公司出品的一款简单易用的系统还原软件,使用能够帮助用户轻松将系统还原到安装该款软件之后状态,避免因为病毒的入侵以及人为的对系统无意或无意的破坏,让你的系统始终完美…

【LeetCode】每日一题 2023_11_12 每日一题 Range 模块(线段树)

文章目录 刷题前唠嗑题目:Range 模块题目描述代码与解题思路 刷题前唠嗑 LeetCode? 启动!!! 嗯?怎么是 hard,好长,可恶,看不懂,怎么办 题目:Range 模块 题…

全国平均风速数据,有图有数据!

全国平均风速数据是一份重要的气象数据,它反映了全国各地的风速情况,对于气象预测、能源开发、环境保护等方面都有重要的意义。 本文将详细介绍全国平均风速数据的来源、统计方法和应用场景,并分析其变化趋势和影响因素。 数据基本信息&#…

【MySQL】MySQL中的锁

全局锁 全局锁是对整个数据库实例加锁,整个库处于只读状态。 flush tables with read lock 适用场景 全局锁适用于做全库逻辑备份,但是整个库处于只读状态,在备份期间,所有的更新操作、DDL将会被阻塞,会对业务产生影…