数据加密
背景信息
数据加密 YAML 配置方式具有非凡的可读性,通过 YAML 格式,能够快速地理解加密规则之间的依赖关系,ShardingSphere 会根据 YAML 配置,自动完成 ShardingSphereDataSource 对象的创建,减少用户不必要的编码工作。
参数解释
rules:
- !ENCRYPT
tables:
<table_name> (+): # 加密表名称
columns:
<column_name> (+): # 加密列名称
cipher:
name: # 密文列名称
encryptorName: # 密文列加密算法名称
assistedQuery (?):
name: # 查询辅助列名称
encryptorName: # 查询辅助列加密算法名称
likeQuery (?):
name: # 模糊查询列名称
encryptorName: # 模糊查询列加密算法名称
# 加密算法配置
encryptors:
<encrypt_algorithm_name> (+): # 加解密算法名称
type: # 加解密算法类型
props: # 加解密算法属性配置
# ...
算法类型的详情,请参见内置加密算法列表。
操作步骤
- 在 YAML 文件中配置数据加密规则,包含数据源、加密规则、全局属性等配置项;
- 调用 YamlShardingSphereDataSourceFactory 对象的 createDataSource 方法,根据 YAML 文件中的配置信息创建 ShardingSphereDataSource。
配置示例
数据加密 YAML 配置如下:
dataSources:
unique_ds:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/demo_ds?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password:
rules:
- !ENCRYPT
tables:
t_user:
columns:
username:
cipher:
name: username
encryptorName: aes_encryptor
assistedQuery:
name: assisted_query_username
encryptorName: assisted_encryptor
likeQuery:
name: like_query_username
encryptorName: like_encryptor
pwd:
cipher:
name: pwd
encryptorName: aes_encryptor
assistedQuery:
name: assisted_query_pwd
encryptorName: assisted_encryptor
encryptors:
aes_encryptor:
type: AES
props:
aes-key-value: 123456abc
assisted_encryptor:
type: MD5
like_encryptor:
type: CHAR_DIGEST_LIKE
然后通过 YamlShardingSphereDataSourceFactory 的 createDataSource 方法创建数据源。
YamlShardingSphereDataSourceFactory.createDataSource(getFile());
为了保持对低版本 YAML 配置的兼容,ShardingSphere 通过 COMPATIBLE_ENCRYPT
提供了如下的兼容配置,该配置会在后续版本中删除,建议及时升级最新 YAML 配置。
dataSources:
unique_ds:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/demo_ds?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password:
rules:
- !COMPATIBLE_ENCRYPT
tables:
t_user:
columns:
username:
cipherColumn: username
encryptorName: aes_encryptor
assistedQueryColumn: assisted_query_username
assistedQueryEncryptorName: assisted_encryptor
likeQueryColumn: like_query_username
likeQueryEncryptorName: like_encryptor
pwd:
cipherColumn: pwd
encryptorName: aes_encryptor
assistedQueryColumn: assisted_query_pwd
assistedQueryEncryptorName: assisted_encryptor
encryptors:
aes_encryptor:
type: AES
props:
aes-key-value: 123456abc
assisted_encryptor:
type: MD5
like_encryptor:
type: CHAR_DIGEST_LIKE
相关参考
当前内容版权归 ShardingSphere 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 ShardingSphere .