Apache ShardingSphere 数据加密 YAML 配置详解

Apache ShardingSphere 数据加密 YAML 配置详解

shardingsphere Distributed SQL transaction & query engine for data sharding, scaling, encryption, and more - on any database. shardingsphere 项目地址: https://gitcode.com/gh_mirrors/sh/shardingsphere

数据加密功能概述

Apache ShardingSphere 提供了强大的数据加密功能,可以在数据库访问层面实现对敏感数据的自动加解密处理。通过这项功能,开发者可以在不修改业务代码的情况下,实现对数据库中敏感信息的保护,同时保持业务查询的可用性。

YAML 配置的优势

相比传统的编程式配置,YAML 配置方式具有以下显著优势:

  1. 可读性强:YAML 格式层次分明,便于快速理解加密规则间的依赖关系
  2. 配置与代码分离:将加密规则与业务代码解耦,提高可维护性
  3. 简化开发:自动完成 ShardingSphereDataSource 对象的创建,减少样板代码

核心配置结构解析

数据加密规则的核心配置由两部分组成:表级加密规则定义和加密算法定义。

表级加密规则

tables:
  <table_name>:  # 需要加密的表名
    columns:
      <column_name>:  # 需要加密的逻辑列名
        cipher:  # 密文列配置
          name:  # 实际存储密文的列名
          encryptorName:  # 使用的加密算法名称
        assistedQuery:  # 辅助查询列配置(可选)
          name:  # 辅助查询列名
          encryptorName:  # 辅助查询加密算法名称
        likeQuery:  # LIKE查询列配置(可选)
          name:  # LIKE查询列名
          encryptorName:  # LIKE查询加密算法名称

加密算法配置

encryptors:
  <encrypt_algorithm_name>:  # 加密算法名称
    type:  # 算法类型
    props:  # 算法属性
      # 具体属性根据算法类型而定

支持的加密算法类型

ShardingSphere 内置了多种加密算法,主要包括:

  1. 标准加密算法:如 AES、MD5 等
  2. 专用算法:如 CHAR_DIGEST_LIKE 等专为 LIKE 查询优化的算法
  3. 自定义算法:支持用户实现自己的加密逻辑

配置示例详解

以下是一个完整的用户表加密配置示例:

dataSources:
  unique_ds:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:3306/demo_ds
    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
        digest-algorithm-name: SHA-1
    assisted_encryptor:
      type: MD5
    like_encryptor:
      type: CHAR_DIGEST_LIKE

配置说明

  1. username 字段

    • 使用 AES 算法加密存储
    • 配置了辅助查询列用于精确查询
    • 配置了 LIKE 查询列用于模糊查询
  2. pwd 字段

    • 使用 AES 算法加密存储
    • 配置了辅助查询列用于精确查询
  3. 加密算法

    • aes_encryptor:AES 加密算法,配置了密钥和摘要算法
    • assisted_encryptor:MD5 算法用于辅助查询
    • like_encryptor:CHAR_DIGEST_LIKE 算法用于 LIKE 查询

实际应用场景

这种配置方式特别适合以下场景:

  1. 敏感数据保护:如用户密码、身份证号等
  2. 合规性要求:满足 GDPR 等数据保护法规
  3. 透明加密:业务代码无需感知加密过程

最佳实践建议

  1. 密钥管理:生产环境应将密钥存储在安全的地方,而非配置文件中
  2. 算法选择:根据安全要求和查询需求选择合适的算法组合
  3. 性能考量:复杂算法可能影响查询性能,需做好平衡
  4. 测试验证:上线前充分测试各种查询场景

通过合理配置 ShardingSphere 的数据加密功能,开发者可以轻松实现数据安全保护,同时保持系统的查询能力和业务连续性。

shardingsphere Distributed SQL transaction & query engine for data sharding, scaling, encryption, and more - on any database. shardingsphere 项目地址: https://gitcode.com/gh_mirrors/sh/shardingsphere

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

詹梓妹Serena

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值