opensergo-specification
opensergo-specification copied to clipboard
[RFC] Database governance-Encryption CRD for encryption l | 数据库治理-加密
domain: database
Umbrella issue: https://github.com/opensergo/opensergo-specification/issues/15
Encryption
defines a set of rules help declare data encryption configurations.
(English version TBD...)
企业往往因为安全审计和合规的要求,需要对数据存储提供多种安全加固措施,比如数据加密。 数据加密通过对用户输入的 SQL 进行解析,并依据用户提供的加密规则对 SQL 进行改写,从而实现对原文数据进行加密,并将原文数据(可选)及密文数据同时存储到底层数据库。在用户查询数据时,它仅从数据库中取出密文数据,并对其解密,最终将解密后的原始数据返回给用户。
配置包括:
- encryptors:加密器配置,指使用什么加密算法进行加解密,如:AES,MD5,RC4,SM3 和 SM4 等。
- tables:加密表配置,声明数据表里哪个列用于存储密文数据、使用什么算法加解密、哪个列用于存储辅助查询数据、哪个列用于存储明文数据。
- queryWithCipherColumn:决定是否使用加密列进行查询。在有原文列的情况下,可以使用原文列进行查询
apiVersion: database.opensergo.io/v1alpha1
kind: Encryption
metadata:
name: encrypt-db
spec:
encryptors: # map[string]object 类型
aes_encryptor: # 加密算法名称
type: AES
props:
"aes-key-value": "123456abc"
md5_encryptor: # 加密算法名称
type: "MD5"
tables: # map[string]object 类型
t_encrypt: # 加密表名称
columns: # map[string]object 类型
user_id: # 加密列名称
plainColumn: "user_plain" # 原文列名称
cipherColumn: "user_cipher" # 密文列名称
encryptorName: "aes_encryptor" # 加密算法名称
assistedQueryColumn: "" # 查询辅助列名称
order_id: # 加密列名称
cipherColumn: "order_cipher"
encryptorName: "md5_encryptor"
queryWithCipherColumn: true # 是否使用加密列进行查询。在有原文列的情况下,可以使用原文列进行查询