CN117527388A - 一种基于Flink SQL的数据源加密传输方法和系统 - Google Patents

一种基于Flink SQL的数据源加密传输方法和系统 Download PDF

Info

Publication number
CN117527388A
CN117527388A CN202311549005.5A CN202311549005A CN117527388A CN 117527388 A CN117527388 A CN 117527388A CN 202311549005 A CN202311549005 A CN 202311549005A CN 117527388 A CN117527388 A CN 117527388A
Authority
CN
China
Prior art keywords
flink
data source
algorithm
password
encryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311549005.5A
Other languages
English (en)
Inventor
张晓军
陈治祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongdian Cloud Computing Technology Co ltd
Original Assignee
Zhongdian Cloud Computing Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongdian Cloud Computing Technology Co ltd filed Critical Zhongdian Cloud Computing Technology Co ltd
Priority to CN202311549005.5A priority Critical patent/CN117527388A/zh
Publication of CN117527388A publication Critical patent/CN117527388A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Abstract

本发明涉及数据源传输技术领域,提供一种基于Flink SQL的数据源加密传输方法和系统,包括:通过Flink源码配置前置环境,在配置的前置环境中引入封装密码算法的maven依赖;通过定义抽象类BaseFlinkDecoder及其子类,封装maven依赖的解密算法并创建不同加密算法对应的算法解码器;通过修改Flink源码引入解密工具,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密;配置密码算法参数并通过maven依赖打包后安装至Flink的lib目录中,用户通过指定数据源密码和加密方式执行Flink sql语句。本发明的方法和系统,可以保证数据源密码的安全性,降低数据源密码泄露的风险,降低终端系统的复杂度。

Description

一种基于Flink SQL的数据源加密传输方法和系统
技术领域
本发明涉及数据源传输技术领域,尤其涉及一种基于Flink SQL的数据源加密传输方法和系统。
背景技术
Apache Flink是一个在有界数据流和无界数据流上进行有状态计算的分布式处理引擎和框架,Flink SQL是Flink API的顶层抽象,这层抽象在语义和程序表达式上都类似于Table API,但是其程序实现都是SQL查询表达式。SQL抽象与Table API抽象之间的关联是非常紧密的,并且SQL查询语句可以在Table API中定义的表上执行。由于复杂的业务以及复杂的企业组织架构,往往各个业务数据存储在不同的数据源(例如mysql等)中,为了打通各个数据孤岛,挖掘数据价值,越来越多的企业使用Flink sql来完成数据治理工作,但是目前通用的Flink sql存在以下问题:1.数据源密码以明文传输至Flink引擎中,增加了密码泄露的风险;2.无法在Flink引擎中对数据源的密码进行加密传输。
因此,如何提供一种更加安全的数据源加密传输方法,成为亟待解决的技术问题。
发明内容
有鉴于此,为了克服现有技术的不足,本发明旨在提供一种基于Flink SQL的数据源加密传输方法和系统。
根据本发明的第一方面,提供一种基于Flink SQL的数据源加密传输方法,包括:
通过Flink源码配置前置环境,在配置的前置环境中引入封装密码算法的maven依赖;
通过定义抽象类BaseFlinkDecoder及其子类,封装maven依赖的解密算法并创建不同加密算法对应的算法解码器;
通过修改Flink源码引入解密工具,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密;
配置密码算法参数并通过maven依赖打包后安装至Flink的lib目录中,用户通过指定数据源密码和加密方式执行Flink sql语句。
优选地,本发明基于Flink SQL的数据源加密传输方法中,通过Flink源码配置前置环境,在配置的前置环境中引入封装密码算法的maven依赖,包括:从代码仓库中导入Flink源码,在导入的Flink源码中配置jdk和maven环境,在导入的Flink源码的Flink-connectors模块的pom.xml文件中引入maven依赖,所述maven依赖中封装密码算法。
优选地,本发明基于Flink SQL的数据源加密传输方法中,通过定义抽象类BaseFlinkDecoder及其子类,封装maven依赖的解密算法并创建不同加密算法对应的算法解码器,包括:
在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder,采用定义的抽象类BaseFlinkDecode封装maven依赖的解密算法;
在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder的子类,采用抽象类BaseFlinkDecoder的子类创建不同加密算法对应的算法解码器。
优选地,本发明基于Flink SQL的数据源加密传输方法中,在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder,采用定义的抽象类BaseFlinkDecode封装maven依赖的解密算法,包括:抽象类BaseFlinkDecoder中定义String类型的成员变量encryptType以及抽象的decode方法,抽象的decode方法的方法入参分别为String类型的数据源密码密文password和Map类型的参数param,抽象的decode方法的方法出参是String类型的解密后的数据源密码。
优选地,本发明基于Flink SQL的数据源加密传输方法中,在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder的子类,采用抽象类BaseFlinkDecoder的子类创建不同加密算法对应的算法解码器,包括:在解码器对应的解密算法类中,采用构造函数为解密算法类的成员变量encryptType赋值为密码算法字符串,在解密算法类中重新实现其父类BaseFlinkDecoder的decode方法,在解密算法类的decode方法中使用密码算法对decode方法的方法入参中的密码密文password进行解密,返回解密后的密码明文。
优选地,本发明基于Flink SQL的数据源加密传输方法中,不同加密算法对应的算法解码器,包括AesDecoder、RsaDecoder、DesDecoder以及HttpDecoder解码器。
优选地,本发明基于Flink SQL的数据源加密传输方法中,通过修改Flink源码引入解密工具,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密,包括:
在导入的Flink源码的Flink-connector-jdbc模块中,分别修改Java类SimpleJdbcConnectionProvider的getOrEstablishConnection方法,修改Java类AbstractJdbcCatalog的open方法、getTable方法以及extractColumnValuesBySQL方法,修改Java类MySqlCatalog的getDatabaseVersion方法、getDriverVersion方法;
在创建数据源jdbc连接时,根据用户在Flink sql中指定的加密方式读取Flink配置中的加密配置信息,如果获取到加密配置信息,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密,获得解密的数据源密码;如果未获取到加密配置信息,获取用户输入的数据源密码;采用解密的数据源密码或用户输入的数据源密码对应的数据源创建jdbc连接来处理数据。
优选地,本发明基于Flink SQL的数据源加密传输方法中,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密,包括:
在导入的Flink源码的Flink-connector-jdbc模块中,定义Java工具类FlinkDecodeUtils及对应的decode方法;
根据decode方法的方法入参中的加密方式encryptType参数,选择对应的算法解码器,获取配置文件中的解密参数,采用选择的算法解码器解密String类型的数据源密码密文password,将解密后的数据源密码返回;
如果decode方法的方法入参中加密方式encryptType参数值为空,直接返回decode方法的方法入参中的数据源密码密文password。
优选地,本发明基于Flink SQL的数据源加密传输方法中,配置密码算法参数并通过maven依赖打包后安装至Flink的lib目录中,用户通过指定数据源密码和加密方式执行Flink sql语句,包括:
在Flink的配置文件Flink-conf.yaml中配置用于密码算法解密处理的密码算法相关参数;
在导入的Flink源码的Flink-connector-jdbc模块中将maven依赖打成jar包并安装到Flink的客户端的lib目录中;
用户在外部客户端执行Flink sql语句,指定数据源密码为加密后的密文,指定数据源密码加密使用的加密方式。
根据本发明的第二方面,提供一种基于Flink SQL的数据源加密传输系统,该系统包括数据源加密传输服务端,该数据源加密传输服务端用于通过Flink源码配置前置环境,在配置的前置环境中引入封装密码算法的maven依赖;通过定义抽象类BaseFlinkDecoder及其子类,封装maven依赖的解密算法并创建不同加密算法对应的算法解码器;通过修改Flink源码引入解密工具,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密;配置密码算法参数并通过maven依赖打包后安装至Flink的lib目录中,用户通过指定数据源密码和加密方式执行Flink sql语句。
根据本发明的第三方面,提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明第一方面所述的方法。
本发明基于Flink SQL的数据源加密传输方法和系统,具有以下有益技术效果:
1.用户在使用Flink sql时以加密的方式输入数据源密码,保证了数据源密码的安全性。
2.数据源密码可以以密文的方式一直传输到Flink引擎内部,由Flink引擎内部进行解密,极大地降低了数据源密码泄露的风险。
3.Flink引擎的上游终端系统无需对数据源密码密文做额外解密处理,降低终端系统的复杂度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为一种适用于本发明实施例的基于Flink SQL的数据源加密传输方法的系统的示意图;
图2为根据本发明实施例的一种基于Flink SQL的数据源加密传输方法的步骤流程图;
图3为根据本发明实施例的一种基于Flink SQL的数据源加密传输方法的执行流程示意图;
图4为根据本发明的基于Flink SQL的数据源加密传输方法的一种原理示例图;
图5为本发明提供的设备的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
本发明通过配置实现数据源密码使用不同的加密算法传输至Flink引擎中,Flink引擎在连接数据源时根据配置先对密码解密,随后使用解密后的数据源密码进行数据源数据读写操作。本发明基于配置实现数据源密码密文在Flink引擎中进行解密,也可以通过HTTP方式访问外部的安全服务接口进行数据源密码密文解密。可以应用到基于Flink SQL引擎执行的计算任务,是数据治理数据源密码安全方面的重要补充和功能完善,在Flink引擎外数据源密码以密文方式传输,在Flink引擎内部再对数据源密码密文解密,以保证数据源密码不被泄露。
图1示出了一种适用于本发明实施例的基于Flink SQL的数据源加密传输方法的示例性系统。如图1所示,该系统可以包括数据源加密传输服务端101、通信网络102和/或一个或多个数据源加密传输客户端103,图1中示例为多个数据源加密传输客户端103。
数据源加密传输服务端101可以时用于存储信息、数据、程序和/或任何其他合适类型的内容的任何适当的服务器。在一些实施例中,数据源加密传输服务端101可以执行适当的功能。例如,在一些实施例中,数据源加密传输服务端101可以用于数据源加密传输。作为可选的示例,在一些实施例中,数据源加密传输服务端101可以被用于通过创建算法解码器实现对数据源加密传输。例如,数据源加密传输服务端101可以用于通过Flink源码配置前置环境,在配置的前置环境中引入封装密码算法的maven依赖;通过定义抽象类BaseFlinkDecoder及其子类,封装maven依赖的解密算法并创建不同加密算法对应的算法解码器;通过修改Flink源码引入解密工具,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密;配置密码算法参数并通过maven依赖打包后安装至Flink的lib目录中,用户通过指定数据源密码和加密方式执行Flink sql语句。
作为另一示例,在一些实施例中,数据源加密传输服务端101可以根据数据源加密传输客户端103的请求,将基于Flink SQL的数据源加密传输方法发送到数据源加密传输客户端103供用户使用。
作为可选的示例,在一些实施例中,数据源加密传输客户端103用于提供可视化传输界面,该可视化传输界面用于接收用户数据源加密传输的选择输入操作,以及,用于响应于选择输入操作,从数据源加密传输服务端101获取与选择输入操作所选择的选项所对应的传输界面并展示传输界面,访问界面中至少展示有数据源加密传输的信息以及针对数据源加密传输的信息的操作选项。
在一些实施例中,通信网络102可以是一个或多个有线和/或无线网络的任何适当的组合。例如,通信网络102能够包括以下各项中的任何一种或多种:互联网、内联网、广域网(WAN)、局域网(LAN)、无线网络、数字订户线路(DSL)网络、帧中继网络、异步转移模式(ATM)网络、虚拟专用网(VPN)和/或任何其它合适的通信网络。数据源加密传输客户端103能够通过一个或多个通信链路(例如,通信链路104)连接到通信网络102,该通信网络102能够经由一个或多个通信链路(例如,通信链路105)被链接到数据源加密传输服务端101。通信链路可以是适合于在数据源加密传输客户端103和数据源加密传输服务端101之间传送数据的任何通信链路,诸如网络链路、拨号链路、无线链路、硬连线链路、任何其它合适的通信链路或此类链路的任何合适的组合。
数据源加密传输客户端103可以包括通过适当形式呈现与数据源加密传输相关的界面,以供用户使用和操作的任何一个或多个客户端。在一些实施例中,数据源加密传输客户端103可以包括任何合适类型的设备。例如,在一些实施例中,数据源加密传输客户端103可以包括移动设备、平板计算机、膝上型计算机、台式计算机和/或任何其他合适类型的客户端设备。
尽管将数据源加密传输服务端101图示为一个设备,但是在一些实施例中,可以使用任何适当数量的设备来执行由数据源加密传输服务端101执行的功能。例如,在一些实施例中,可以使用多个设备来实现由数据源加密传输服务端101执行的功能。或者,可使用云服务实现数据源加密传输服务端101的功能。
基于上述系统,本发明实施例提供了一种基于Flink SQL的数据源加密传输方法,以下通过以下实施例进行说明。
参照图2,示出了根据本发明实施例的一种基于Flink SQL的数据源加密传输方法的步骤流程图。图3为根据本发明实施例的一种基于Flink SQL的数据源加密传输方法的执行流程示意图。
如图2和图3所示,本实施例的基于Flink SQL的数据源加密传输方法可在数据源加密传输服务端执行,该基于Flink SQL的数据源加密传输方法包括以下步骤:
步骤S201:通过Flink源码配置前置环境,在配置的前置环境中引入封装密码算法的maven依赖。
作为可选的示例,本发明实施例方法中,从代码仓库中导入Flink源码,在导入的Flink源码中配置jdk和maven环境,在导入的Flink源码的Flink-connectors模块的pom.xml文件中引入maven依赖,所述maven依赖中封装密码算法。本实施例方法中,jdk即Java Development Kit,是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的Java应用程序,jdk是整个Java开发的核心。本实施例方法中的maven是一个Java编程项目管理及自动构建工具,由Apache软件基金会所提高,maven除了可以进行程序构建之外,还提供高级项目管理功能。本实施例方法引入的maven依赖,封装了多种密码算法,包括但不限于AES算法、DES算法和RSA算法,在Java开发中,广泛用于各种加密和解密场景。AES(Advanced Encryption Standard)算法即高级加密标准算法,是一种对称加密算法,被广泛应用于数据加密和保护领域,AES算法使用的密钥长度为128位、192位或256位,比DES算法的密钥长度更长,安全性更高,密钥长度过长则会增加计算量和存储空间的开销。DES(Data Encryption Standard)算法是一种对称加密算法,由IBM公司于1975年研发,是最早的一种广泛应用的对称加密算法之一,算法速度相对较快。RSA算法是是目前应用最广泛的非对称加密算法,优点是安全性高,公钥可以公开,私钥必须保密,保证了数据的安全性,可用于数字签名、密钥协商等多种应用场景。
步骤S202:通过定义抽象类BaseFlinkDecoder及其子类,封装maven依赖的解密算法并创建不同加密算法对应的算法解码器。
图4为根据本发明的基于Flink SQL的数据源加密传输方法的一种原理示例图,如图4所示,作为可选的示例,本发明实施例方在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder,采用定义的抽象类BaseFlinkDecode封装maven依赖的解密算法;抽象类BaseFlinkDecoder中定义String类型的成员变量encryptType以及抽象的decode方法,抽象的decode方法的方法入参分别为String类型的数据源密码密文password和Map类型的参数param,抽象的decode方法的方法出参是String类型的解密后的数据源密码。需要注意的是,本实施例方法中,BaseFlinkDecoder中还定义了一个构造方法,方法入参为String类型的加密方式,用于给成员变量encryptType赋值。本实施例方法采用以下具体示例对上述过程进行说明:
在完成抽象类BaseFlinkDecoder的定义后,本实施例方法在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder的子类,采用抽象类BaseFlinkDecoder的子类创建不同加密算法对应的算法解码器。不同加密算法对应的算法解码器,包括AesDecoder、RsaDecoder、DesDecoder以及HttpDecoder解码器。在解码器对应的解密算法类中,采用构造函数为解密算法类的成员变量encryptType赋值为密码算法字符串,在解密算法类中重新实现其父类BaseFlinkDecoder的decode方法,在解密算法类的decode方法中使用密码算法对decode方法的方法入参中的密码密文password进行解密,返回解密后的密码明文。以AesDecoder类为例来说,在AesDecoder类中,由构造函数给AesDecoder类的成员变量encryptType赋值为字符串AES;在AesDecoder类中重新实现其父类BaseFlinkDecoder的decode方法,在AesDecoder类的decode方法中使用引入的maven依赖中的AES算法对入参中的密码密文password进行解密,并返回解密后的密码明文。参考示例如下:
步骤S203:通过修改Flink源码引入解密工具,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密。
如图4所示,作为可选的示例,本实施例方法在创建算法解码器后,在导入的Flink源码的Flink-connector-jdbc模块中,分别修改Java类SimpleJdbcConnectionProvider的getOrEstablishConnection方法,修改Java类AbstractJdbcCatalog的open方法、getTable方法以及extractColumnValuesBySQL方法,修改Java类MySqlCatalog的getDatabaseVersion方法、getDriverVersion方法。
在创建数据源jdbc连接时,根据用户在Flink sql中指定的加密方式读取Flink配置中的加密配置信息,如果获取到加密配置信息,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密,获得解密的数据源密码;如果未获取到加密配置信息,获取用户输入的数据源密码;采用解密的数据源密码或用户输入的数据源密码对应的数据源创建jdbc连接来处理数据。
举例来说,本发明实施例在导入的Flink源码的Flink-connector-jdbc模块中,修改Java类SimpleJdbcConnectionProvider的getOrEstablishConnection()方法,在创建数据源jdbc连接时,根据用户在Flink sql中指定的加密方式(例如'encryptType'='AES')读取Flink配置中的加密配置信息,如果获取到加密配置信息,则调用Java类FlinkDecodeUtils的decode方法选择对应的算法解码器(例如AesDecoder)对数据源密码解密,否则直接使用用户输入的数据源密码,接下来使用上述处理过的数据源密码数据源创建jdbc连接来处理数据。
举例来说,本发明实施例在导入的Flink源码的Flink-connector-jdbc模块中,修改Java类AbstractJdbcCatalog的open方法、getTable方法以及extractColumnValuesBySQL方法,即在创建数据源jdbc连接时,根据用户在Flink sql中指定的加密方式(例如'encryptType'='AES')读取Flink配置中的加密配置信息,如果获取到加密配置信息,则调用Java类FlinkDecodeUtils的decode方法选择对应的算法解码器(例如AesDecoder)对数据源密码解密,否则直接使用用户输入的数据源密码,接下来使用上述处理过的数据源密码数据源创建jdbc连接来处理数据。
举例来说,本发明实施例在导入的Flink源码的Flink-connector-jdbc模块中,修改Java类MySqlCatalog的getDatabaseVersion方法、getDriverVersion方法,即在创建数据源jdbc连接时,根据用户在Flink sql中指定的加密方式(例如'encryptType'='AES')读取Flink配置中的加密配置信息,如果获取到加密配置信息,则调用Java类FlinkDecodeUtils的decode方法选择对应的解码器(例如AesDecoder)对数据源密码解密,否则直接使用用户输入的数据源密码,接下来使用上述处理过的数据源密码数据源创建jdbc连接来处理数据。
作为可选的示例,本实施例方法中,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密,按以下方式实施:
在导入的Flink源码的Flink-connector-jdbc模块中,定义Java工具类FlinkDecodeUtils及对应的decode方法;
根据decode方法的方法入参中的加密方式encryptType参数,选择对应的算法解码器,获取配置文件中的解密参数,采用选择的算法解码器解密String类型的数据源密码密文password,将解密后的数据源密码返回;
如果decode方法的方法入参中加密方式encryptType参数值为空,直接返回decode方法的方法入参中的数据源密码密文password。
步骤S204:配置密码算法参数并通过maven依赖打包后安装至Flink的lib目录中,用户通过指定数据源密码和加密方式执行Flink sql语句。
在Flink的配置文件Flink-conf.yaml中配置用于密码算法解密处理的密码算法相关参数。在导入的Flink源码的Flink-connector-jdbc模块中将maven依赖打成jar包并安装到Flink的客户端的lib目录中;用户在外部客户端执行Flink sql语句,指定数据源密码为加密后的密文,指定数据源密码加密使用的加密方式。
举例来说过,本实施例方法中,在Flink的配置文件flink-conf.yaml中配置密码算法相关参数,用于密码算法解密处理,这里配置AES算法类型为AES,AES算法解密密钥为AES_PRIVATE_KEY;配置DES算法类型为DES,DES算法解密密钥为DES_PRIVATE_KEY;配置RSA算法类型为RSA,RSA算法解密密钥为RSA_PRIVATE_KEY;配置HTTP类型的解密方式为HTTP,对应的密文解密外部服务地址为HTTP_URL。参考示例如下:
#AES算法及其私钥,私钥用于AES算法解密
flink.sql.encrypt.AES.type:AES
flink.sql.encrypt.type.AES.key:AES_PRIVATE_KEY
#DES算法及其私钥,私钥用于DES算法解密
flink.sql.encrypt.DES.type:DES
flink.sql.encrypt.type.DES.key:DES_PRIVATE_KEY
#RSA算法及其私钥,私钥用于RSA算法解密
flink.sql.encrypt.RSA.type:RSA
flink.sql.encrypt.type.RSA.key:RSA_PRIVATE_KEY
#HTTP方式的验证,直接通过配置的HTTP接口地址HTTP_URL进行外部接口解密
flink.sql.encrypt.HTTP.type:HTTP
flink.sql.encrypt.type.HTTP.key:HTTP_URL。
本实施例方法还需要在导入的flink源码的Flink-connector-jdbc模块中使用maven打成jar包并安装到flink的客户端的lib目录中。用户在外部客户端执行的flinksql语句,指定数据源密码即'password'为加密后的密文,指定数据源密码加密使用的加密方式,例如‘AES’。本实施例采用以下具体示例进行说明:
在上述示例中,CREATE TABLE语句创建了mysql数据源表,查询字段包含id、name、subject;数据源连接参数包含connector(示例中使用mysql数据源)、url(示例中连接mysql数据源所使用的地址)、table-name(即所要访问的数据源表)、username(连接数据源所使用的用户名)、encryptType(即数据源密码加密方式,示例中设置为AES加密)、password(连接数据源所使用的用户密码,这里开源传入对应加密算法的加密密文)。
本发明基于Flink SQL的数据源加密传输方法和系统,以加密密文的方式传输Flink Sql的中的数据源密码至Flink计算引擎中;通过配置的方式实现不同的加密算法在Flink引擎中进行数据源密码解密,支持AES、DES、RSA等解密算法,也可通过HTTP接口的方式对接外部的安全解密服务以完成数据源密码密文解密。
在实际应用中,本发明基于Flink SQL的数据源加密传输方法和系统具有以下有益技术效果:
1.用户在使用Flink sql时以加密的方式输入数据源密码,保证了数据源密码的安全性。
2.数据源密码可以以密文的方式一直传输到Flink引擎内部,由Flink引擎内部进行解密,极大地降低了数据源密码泄露的风险。
3.Flink引擎的上游终端系统无需对数据源密码密文做额外解密处理,降低终端系统的复杂度。
如图5所示,本发明还提供了一种设备,包括处理器310、通信接口320、用于存储处理器可执行计算机程序的存储器330及通信总线340。其中,处理器310、通信接口320及存储器330通过通信总线340完成相互间的通信。处理器310通过运行可执行计算机程序以实现上述的基于Flink SQL的数据源加密传输方法。
其中,存储器330中的计算机程序可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以基于实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种基于Flink SQL的数据源加密传输方法,其特征在于,所述方法包括:
通过Flink源码配置前置环境,在配置的前置环境中引入封装密码算法的maven依赖;
通过定义抽象类BaseFlinkDecoder及其子类,封装maven依赖的解密算法并创建不同加密算法对应的算法解码器;
通过修改Flink源码引入解密工具,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密;
配置密码算法参数并通过maven依赖打包后安装至Flink的lib目录中,用户通过指定数据源密码和加密方式执行Flink sql语句。
2.根据权利要求1所述的基于Flink SQL的数据源加密传输方法,其特征在于,通过Flink源码配置前置环境,在配置的前置环境中引入封装密码算法的maven依赖,包括:从代码仓库中导入Flink源码,在导入的Flink源码中配置jdk和maven环境,在导入的Flink源码的Flink-connectors模块的pom.xml文件中引入maven依赖,所述maven依赖中封装密码算法。
3.根据权利要求1所述的基于Flink SQL的数据源加密传输方法,其特征在于,通过定义抽象类BaseFlinkDecoder及其子类,封装maven依赖的解密算法并创建不同加密算法对应的算法解码器,包括:
在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder,采用定义的抽象类BaseFlinkDecode封装maven依赖的解密算法;
在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder的子类,采用抽象类BaseFlinkDecoder的子类创建不同加密算法对应的算法解码器。
4.根据权利要求3所述的基于Flink SQL的数据源加密传输方法,其特征在于,在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder,采用定义的抽象类BaseFlinkDecode封装maven依赖的解密算法,包括:抽象类BaseFlinkDecoder中定义String类型的成员变量encryptType以及抽象的decode方法,抽象的decode方法的方法入参分别为String类型的数据源密码密文password和Map类型的参数param,抽象的decode方法的方法出参是String类型的解密后的数据源密码。
5.根据权利要求3所述的基于Flink SQL的数据源加密传输方法,其特征在于,在导入的Flink源码的Flink-connector-jdbc模块中,定义抽象类BaseFlinkDecoder的子类,采用抽象类BaseFlinkDecoder的子类创建不同加密算法对应的算法解码器,包括:在解码器对应的解密算法类中,采用构造函数为解密算法类的成员变量encryptType赋值为密码算法字符串,在解密算法类中重新实现其父类BaseFlinkDecoder的decode方法,在解密算法类的decode方法中使用密码算法对decode方法的方法入参中的密码密文password进行解密,返回解密后的密码明文。
6.根据权利要求3所述的基于Flink SQL的数据源加密传输方法,其特征在于,不同加密算法对应的算法解码器,包括AesDecoder、RsaDecoder、DesDecoder以及HttpDecoder解码器。
7.根据权利要求1所述的基于Flink SQL的数据源加密传输方法,其特征在于,通过修改Flink源码引入解密工具,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密,包括:
在导入的Flink源码的Flink-connector-jdbc模块中,分别修改Java类SimpleJdbcConnectionProvider的getOrEstablishConnection方法,修改Java类AbstractJdbcCatalog的open方法、getTable方法以及extractColumnValuesBySQL方法,修改Java类MySqlCatalog的getDatabaseVersion方法、getDriverVersion方法;
在创建数据源jdbc连接时,根据用户在Flink sql中指定的加密方式读取Flink配置中的加密配置信息,如果获取到加密配置信息,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密,获得解密的数据源密码;如果未获取到加密配置信息,获取用户输入的数据源密码;采用解密的数据源密码或用户输入的数据源密码对应的数据源创建jdbc连接来处理数据。
8.根据权利要求1所述的基于Flink SQL的数据源加密传输方法,其特征在于,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密,包括:
在导入的Flink源码的Flink-connector-jdbc模块中,定义Java工具类FlinkDecodeUtils及对应的decode方法;
根据decode方法的方法入参中的加密方式encryptType参数,选择对应的算法解码器,获取配置文件中的解密参数,采用选择的算法解码器解密String类型的数据源密码密文password,将解密后的数据源密码返回;
如果decode方法的方法入参中加密方式encryptType参数值为空,直接返回decode方法的方法入参中的数据源密码密文password。
9.根据权利要求1所述的基于Flink SQL的数据源加密传输方法,其特征在于,配置密码算法参数并通过maven依赖打包后安装至Flink的lib目录中,用户通过指定数据源密码和加密方式执行Flink sql语句,包括:
在Flink的配置文件Flink-conf.yaml中配置用于密码算法解密处理的密码算法相关参数;
在导入的Flink源码的Flink-connector-jdbc模块中将maven依赖打成jar包并安装到Flink的客户端的lib目录中;
用户在外部客户端执行Flink sql语句,指定数据源密码为加密后的密文,指定数据源密码加密使用的加密方式。
10.一种基于Flink SQL的数据源加密传输系统,其特征在于,所述系统包括数据源加密传输服务端,所述数据源加密传输服务端用于通过Flink源码配置前置环境,在配置的前置环境中引入封装密码算法的maven依赖;通过定义抽象类BaseFlinkDecoder及其子类,封装maven依赖的解密算法并创建不同加密算法对应的算法解码器;通过修改Flink源码引入解密工具,通过定义工具类FlinkDecodeUtils及对应的decode方法,选择对应的算法解码器对数据源密码解密;配置密码算法参数并通过maven依赖打包后安装至Flink的lib目录中,用户通过指定数据源密码和加密方式执行Flink sql语句。
CN202311549005.5A 2023-11-17 2023-11-17 一种基于Flink SQL的数据源加密传输方法和系统 Pending CN117527388A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311549005.5A CN117527388A (zh) 2023-11-17 2023-11-17 一种基于Flink SQL的数据源加密传输方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311549005.5A CN117527388A (zh) 2023-11-17 2023-11-17 一种基于Flink SQL的数据源加密传输方法和系统

Publications (1)

Publication Number Publication Date
CN117527388A true CN117527388A (zh) 2024-02-06

Family

ID=89765980

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311549005.5A Pending CN117527388A (zh) 2023-11-17 2023-11-17 一种基于Flink SQL的数据源加密传输方法和系统

Country Status (1)

Country Link
CN (1) CN117527388A (zh)

Similar Documents

Publication Publication Date Title
CN110199508B (zh) 敏感数据跨内容分发网络的安全数据分配
JP6844876B2 (ja) ネットワークを介した機密データの安全なデータ取得
EP3229397B1 (en) Method for fulfilling a cryptographic request requiring a value of a private key
TWI598765B (zh) Data protection methods and devices
CN105408913B (zh) 在云中隐私地处理数据
US9430211B2 (en) System and method for sharing information in a private ecosystem
JP6545136B2 (ja) ウェブページの暗号化送信のためのシステム及び方法
CA2892874C (en) System and method for sharing cryptographic resources across multiple devices
JP2020502644A (ja) ネットワークを介した機密データの安全なデータエグレス
US8386768B2 (en) High performance data encryption server and method for transparently encrypting/decrypting data
US20100070754A1 (en) Payment encryption accelerator
WO2021217980A1 (zh) java代码的加壳方法与系统
US10523434B1 (en) Data storage key rotation
WO2022237123A1 (zh) 一种获取区块链数据的方法、装置、电子设备及存储介质
US10608813B1 (en) Layered encryption for long-lived data
CN110391900A (zh) 基于sm2算法的私钥处理方法、终端及密钥中心
US10630722B2 (en) System and method for sharing information in a private ecosystem
US10963593B1 (en) Secure data storage using multiple factors
US20100275025A1 (en) Method and apparatus for secure communication
US10476663B1 (en) Layered encryption of short-lived data
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
US20140059341A1 (en) Creating and accessing encrypted web based content in hybrid applications
WO2021164462A1 (zh) 一种数据加密方法、数据解密方法、计算机设备和介质
CN108183796A (zh) 利用白盒库文件和白盒密钥文件进行加解密的方法及装置
CN110826031A (zh) 加密方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination