KingbaseES 函数与存储过程内容加密
说明:
数据库系统使用过程中,有些业务功能在特殊的安全级别情况下,需要对数据库中的函数和存储过程进行加密存储,以保证数据库函数和过程的代码安全性。KingbaseES 数据库,提供了DBMS_DDL扩展插件功能,帮助对数据库中的函数和存储过程进行加密存储。
ddms_ddl扩展介绍:
DBMS_DDL是KingbaseES的一个扩展插件,主要用于创建一个PL/SQL函数、过程。DBMS_DDL系统自带扩展,不需要单独创建。
DBMS_DDL拓展插件不支持PG模式。
ddms_ddl扩展:
DBMS_DDL拓展插件内容:
test=# \dx+ dbms_ddl
对象用于扩展 "dbms_ddl"
对象描述
---------------------------
function wrapped(varchar)
package dbms_ddl
(2 行记录)
DBMS_DDL.WRAP
只加密不执行语句。函数WRAP以CREATE [ OR REPLACE ]语句作为输入,指定创建PL/SQL函数、过程。并返回CREATE [ OR REPLACE ]后面语句的加密语句。
语法格式:
DBMS_DDL.WRAP(ddl VARCHAR2)RETURN VARCHAR2;
参数说明:
ddl:指定用于创建一个PL/SQL包体、函数、过程的CREATE [ OR REPLACE ]语句。
返回值:
返回32k字节以内已加密的字符串。
DBMS_DDL.CREATE_WRAPPED
加密并执行语句。
语法格式
DBMS_DDL.CREATE_WRAPPED(ddl VARCHAR2);
参数说明:
ddl:指定用于创建一个PL/SQL函数、过程的CREATE [ OR REPLACE ]语句。
ddms_ddl示例:
DBMS_DDL.WRAP加密函数体
test=# select dbms_ddl.wrap(
test(# q'[
test'# CREATE PROCEDURE getValue(pid int) AS
test'# BEGIN
test'# select now();
test'# RAISE NOTICE 'pid=%',pid;
test'# END ;
test'# ]');
wrap
--------------------------------------------------------------
+
CREATE PROCEDURE getValue(pid int) AS WRAPPED +
Ysyb9n+AUBSMPkhTULtxOjaiiiMoxXYtRVnTlW2f1dJa/DnOklEoLqQyyouJ+
2oiVpC/nz/w26eThsPQr5juu3g== +
END;
(1 row)
test=# select dbms_ddl.wrap(
test(# q'[
test'# CREATE FUNCTION getName(pid int) RETURN VARCHAR2 AS
test'# DECLARE
test'# nam varchar(10);
test'# BEGIN
test'# SELECT 'return='|| to_char(pid) INTO nam FROM dual;
test'# RETURN nam;
test'# EXCEPTION
test'# WHEN no_data_found THEN
test'# RETURN 'NOFUOUND';
test'# WHEN OTHERS THEN
test'# RETURN 'OTHERS';
test'# END ;
test'# ]');
wrap
--------------------------------------------------------------
+
CREATE FUNCTION getname(pid int) RETURN VARCHAR2 AS WRAPPED +
jLdZaVH1HEkWXnhly2vcpWdyh1HhWuG91+ijKCp4cjvAE17MFcj9Meti/eJ9+
P7Giz2aysfFssGzKIYFokBykv1teJ7WJ8/dcoUpWFMgcjJT1slOzvIETLAtJ+
RgIhuXS7UcvJA+And0M7wAqPIcO+hGDVGtrobdjyWEsjj67x6/J/UArN8fy6+
4Kno4qUsLY8Dw7W+BSbAa3Ton60ynUemm6EtjlhQuqucXQVJsFtL1A9LU4vN+
3NlmM1eD0QLZbi7T166n7crOcK4iZcBm3bhVqJbJMrHlfO1y8s+mCGEUIZw=+
END;
(1 行记录)
DBMS_DDL.CREATE_WRAPPED加密并执行函数体
test=# CALL dbms_ddl.CREATE_WRAPPED(
test(# q'[
test'# CREATE PROCEDURE getValue(pid int) AS
test'# BEGIN
test'# select now();
test'# RAISE NOTICE 'pid=%',pid;
test'# END ;
test'# ]');
CALL
test=# \sf getValue
CREATE OR REPLACE PROCEDURE public.getvalue(pid integer)
AS WRAPPED
w5K/gWuBfiREAZ+LBYFLtu01ayNoHgqoSDf9ZtsG+KuFntIAS2i7Zji6CygE
HViaQ1VF6XfYrvHde1cmY2zxqw==
END
test=# CALL dbms_ddl.CREATE_WRAPPED(
test(# q'[
test'# CREATE FUNCTION getName(pid int) RETURN VARCHAR2 AS
test'# DECLARE
test'# nam varchar(10);
test'# BEGIN
test'# SELECT 'return='|| to_char(pid) INTO nam FROM dual;
test'# RETURN nam;
test'# EXCEPTION
test'# WHEN no_data_found THEN
test'# RETURN 'NOFUOUND';
test'# WHEN OTHERS THEN
test'# RETURN 'OTHERS';
test'# END ;
test'# ]');
CALL
test=# \sf getName
CREATE OR REPLACE FUNCTION public.getname(pid integer)
RETURNS varchar
AS WRAPPED
jLdZaVH1HEkWXnhly2vcpWdyh1HhWuG91+ijKCp4cjvAE17MFcj9Meti/eJ9
P7Giz2aysfFssGzKIYFokBykv1teJ7WJ8/dcoUpWFMgcjJT1slOzvIETLAtJ
RgIhuXS7UcvJA+And0M7wAqPIcO+hGDVGtrobdjyWEsjj67x6/J/UArN8fy6
4Kno4qUsLY8Dw7W+BSbAa3Ton60ynUemm6EtjlhQuqucXQVJsFtL1A9LU4vN
3NlmM1eD0QLZbi7T166n7crOcK4iZcBm3bhVqJbJMrHlfO1y8s+mCGEUIZw=
END
加密函数调用
test=# call getValue(110);
注意: pid=110
now
-------------------------------
2022-12-10 14:53:03.645849+08
(1 行记录)
CALL
test=# select getName(120);
getname
------------
return=120
(1 行记录)
KingbaseES 函数与存储过程内容加密的更多相关文章
- sqlserver自定义函数与存储过程的区别 实例详解
分享下sql server自定义函数与存储过程的区别,一起来学习下. 一.自定义函数: 1. 可以返回表变量 2. 限制颇多,包括 不能使用output参数: 不能用临时表: 函数内部的操作不能影响到 ...
- (转)对存储过程进行加密和解密(SQL 2008/SQL 2012)
原文地址:http://www.cnblogs.com/wghao/archive/2012/12/30/2837642.html 开始: 在网络上,看到有SQL Server 2000和SQL Se ...
- Mysql导出函数、存储过程
下面是导出存储过程的代码 1 # mysqldump -u 数据库用户名 -p -n -t -d -R 数据库名 > 文件名 其中,-d 表示--no-create-db, -n表示--no-d ...
- mysql中的函数与存储过程
mysql中的函数:1 mysql下创建函数: 1.1 语法: delimiter $$ -- 设置分隔符,默认是; 设置成其他符号,让编译器知道我们函数编写的结束,此处设置成$$ create fu ...
- MySQL自定义函数与存储过程
1.前置条件 MySQL数据库中存在表user_info,其结构和数据如下: mysql> desc user_info; +-----------+----------+------+---- ...
- MySQL— 索引,视图,触发器,函数,存储过程,执行计划,慢日志,分页性能
一.索引,分页性能,执行计划,慢日志 (1)索引的种类,创建语句,名词补充(最左前缀匹配,覆盖索引,索引合并,局部索引等): import sys # http://www.cnblogs.com/w ...
- MySQL 视图、触发器、函数、存储过程
1. 视图 1.1 什么是视图 通俗来讲,视图就是一条 select 语句执行后返回的结果集.所有我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上. 1.2 视图的特性 视图是对若干张基 ...
- oracle中函数和存储过程的区别和联系【转载竹沥半夏】
oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...
- PL-SQL 存储函数和存储过程
PL-SQL 存储函数和存储过程 ORACLE 提供能够把PL/SQL 程序存储在数据库中,并能够在不论什么地方来执行它.这样就叫存储过程或函数. 过程和函数统称为PL/SQL子程序.他们是被命 ...
- 描述了say_hello函数的具体内容,调用zend_printf系统函数在php中打印字符串
下载一个php的源代码包,这里使用的是php 4.0.5版,解压后会看到php的根目录下会有README.EXT_SKEL这样一个文件,打开详细阅读了一下,发现了一个非常好用的工具,这个工具可以帮你构 ...
随机推荐
- colrm命令
colrm命令 colrm命令用于编辑源代码文件,脚本文件或常规文本文件中的文本,此命令从文件中删除选定的列,列定义为一行中的单个字符.索引总是从1开始,而不是0.如果同时指定了开始和结束,则它们之间 ...
- 使用Java线程同步工具类CountDownLatch
java.util.concurrent.CountDownLatch是Java并发并发编程中的线程同步工具类,基于AQS(java.util.concurrent.locks.AbstractQue ...
- EasyExcel使用及自定义设置单元格样式
EasyExcel使用及自定义设置单元格样式 https://www.cnblogs.com/Hizy/p/11825886.html easyexcel 自动设置列宽 https://www.man ...
- Ubuntu18.04搭建Vue开发环境
更新软件源列表 sudo apt update nodejs安装 sudo apt install nodejs nodejs -v #查看版本 npm安装 sudo apt install npm ...
- dilb安装的三种方法
dilb库安装失败,源码安装嘎嘎报错,所以这里记录一下 dlib库是一个很特殊的库,在下载dlib库之前需要下载两个库(cmake.boost这两个库) pip install cmake boost ...
- Hibernate过滤器使用窍门
本文向大家介绍Hibernate过滤器,可能好多人还不了解Hibernate过滤器,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西. Hibernate3新增了对某个类或者集合使用预先定 ...
- TypeScript实践总结
下文将TypeScript简称ts 一.为什么要学 1.1 减少bug,提高质量 强语言,语法等方面异常,编译阶段"提前"报错 支持面向对象,软件设计与工程化更为成熟,更容易做单元 ...
- Linux性能监控(一)-sar
sar是一个非常全面的一个分析工具,对文件的读写,系统调用的使用情况,磁盘IO,CPU相关使用情况,内存使用情况,进程活动等都可以进行有效的分析.sar工具将对系统当前的状态进行取样,然后通过计算数据 ...
- 学习笔记-涛讲F#(基础 II)
目录 处理一堆数 组织代码(命名空间.模块) 使用联合重命名类型 类必须显式转换成接口 对象表达式 递归函数 CPS解决堆栈溢出 扩展一个类型 静态解析的类型参数 ref变量的实现原理及应用 F#资源 ...
- Dreamweaver基础教程:学习HTML
目录 HTML简介 HTML实例 HTML 标签 HTML元素 HTML 属性 HTML网页结构 <!DOCTYPE> 声明 HTML 基础 HTML 标题 HTML 段落 HTML 链接 ...