文档下载建议反馈入口

  • 启用存储加密
  • 更换存储密钥或算法
  • 解密目录

存储加密

KaiwuDB 提供了透明存储加密功能,用户无需更改应用程序代码即可通过 --store-encryption 启动参数对关系数据库的存储路径进行加密、解密、存储密钥更新和算法更换等操作。

KaiwuDB 支持国密 SM4 和 AES128 两种加密算法,用户可以根据需求选择适合的加密算法,以满足不同的安全要求。

启用存储加密功能后,KaiwuDB 将自动生成数据加密密钥,并使用该密钥加密用户数据,数据密钥默认 7 天自动轮换一次,用户可通过--store-encryption设置数据密钥的轮换周期。

存储加密功能默认关闭,用户生成存储密钥文件,通过 --store-encryption 启动参数指定加密路径、存储密钥和加密算法后,才能启用该功能。

启用存储加密

KaiwuDB 支持在部署时启用加密功能,也支持对现有关系数据库启用加密。

部署时启用存储加密

有关初始部署时启用加密功能的具体步骤,参见以下部署文档:

对现有数据库启用存储加密

以下步骤介绍如何在 KaiwuDB 启动后,通过重启节点启用存储加密功能。

说明

现有关系数据库启用加密功能后,新写入的文件会立即加密,已有文件会通过数据库的正常压缩和维护流程逐步加密。

前提条件

  • 已部署和启动 KaiwuDB。
  • 用户为 root 用户或者拥有 sudo 权限的普通用户。

步骤

在集群中的每个节点执行以下操作:

  1. 登录节点,进入 kwbase 脚本所在目录。

  2. 生成存储密钥文件:

    • 使用 kwbase 命令

      ./kwbase gen encryption-key -s 128 <key-path>
      
    • 使用 openssl 命令

      openssl rand -out <key-path> 48
      
  3. 停止 KaiwuDB 服务。

    systemctl stop kaiwudb
    
  4. 在启动命令中指定加密算法和存储密钥文件。

    提示:

    • KaiwuDB 也支持通过 kaiwudb_envdocker-compose.yml 文件添加 --store-encryption 参数设置,启用加密存储功能。更多相关信息,参见参数设置
    • 以下命令仅列出了不同部署模式下启用加密功能的必需参数,KaiwuDB 启动时还支持指定其他参数,更多启动参数信息,参见启动参数
    • 非安全模式

      ./kwbase start --store=<storage-path> --store-encryption=path=<storage-path>,key=<key-path>,cipher=<cipher>,rotation-period=<period> --insecure
      
    • TLS 安全模式

      ./kwbase start --store=<storage-path> --store-encryption=path=<storage-path>,key=<key-path>,cipher=<cipher>,rotation-period=<period> --certs-dir=<certs-path> 
      
    • TLCP 安全模式

      ./kwbase start --store=<storage-path> --store-encryption=path=<storage-path>,key=<key-path>,cipher=<cipher>,rotation-period=<period> --certs-dir=<certs-path> --tlcp
      

    参数说明:

    • --store=<storage-path>:指定数据库的主存储目录,需与部署时指定的目录一致。
    • --store-encryption: 指定待加密的存储目录、存储密钥路径和加密算法,其中:
      • storage-path:加密目录路径,必须位于 --store 指定的主存储目录内或者与 --store 指定的目录相同。
      • key-path:存储密钥路径。
      • cipher:加密算法,支持 sm4aes
      • period:可选参数,指定数据密钥轮换周期,支持的单位包括 d (天)、h (小时)和 s (秒),默认单位为秒,未指定时,默认轮换周期为 7 天。
    • --certs-dir=<certs-path>: 安全部署模式下指定证书路径。

更换存储密钥或算法

KaiwuDB 支持在不中断业务的情况下更换存储密钥,切换加密算法。

前提条件

  • 用户为 root 用户或者拥有 sudo 权限的普通用户。

  • 如需更换存储密钥,需生成新的存储密钥。

    • 使用 kwbase 命令

      ./kwbase gen encryption-key -s 128 <key-path>
      
    • 使用 openssl 命令

      openssl rand -out <key-path> 48
      

步骤

在集群中的每个节点执行以下操作:

  1. 登录节点,进入 kwbase 脚本所在目录。

  2. 停止 KaiwuDB 服务。

    systemctl stop kaiwudb
    
  3. 在启动命令中根据需要指定原存储密钥、新存储密钥、原加密算法和新加密算法。

    提示:

    • KaiwuDB 同时支持通过 kaiwudb_envdocker-compose.yml 文件添加 --store-encryption 参数设置,更新存储密钥和加密算法。更多相关信息,参见参数设置
    • 以下命令仅列出了不同部署模式下更新存储密钥和算法的必需参数,KaiwuDB 启动时还支持指定其他参数,更多启动参数信息,参见启动参数
    • 非安全模式

      ./kwbase start --store=<storage-path> --store-encryption=path=<storage-path>,key=<key-path>,old-key=<old-key-path>,cipher=<cipher>,old-cipher=<old-cipher>,rotation-period=<period> --insecure
      
    • TLS 安全模式

      ./kwbase start --store=<storage-path> --store-encryption=path=<storage-path>,key=<key-path>,old-key=<old-key-path>,cipher=<cipher>,old-cipher=<old-cipher>,rotation-period=<period> --certs-dir=<certs-path> 
      
    • TLCP 安全模式

      ./kwbase start --store=<storage-path> --store-encryption=path=<storage-path>,key=<key-path>,old-key=<old-key-path>,cipher=<cipher>,old-cipher=<old-cipher>,rotation-period=<period> --certs-dir=<certs-path> --tlcp
      

    参数说明:

    • --store=<storage-path>:指定数据库的主存储目录。注意:主存储目录应与部署时指定的存储目录保持一致。
    • --store-encryption: 指定加密的路径、存储密钥路径和加密算法,其中:
      • storage-path:加密的目录路径,必须位于 --store 指定的主存储目录内或者与 --store 指定的目录相同。
      • key-path:新存储密钥路径。
      • old-key-path:可选参数,指定原有存储密钥路径,更新存储密钥时必须指定该参数。
      • cipher:新加密算法,支持 sm4aes
      • old-cipher: 可选参数,指定原有加密算法,支持 sm4aes,更换算法时必须指定该参数。
      • rotation-period:可选参数,指定数据密钥轮换周期,支持的单位包括 d (天)、h (小时)和 s (秒),默认单位为秒,未指定时,默认轮换周期为 7 天。
    • --certs-dir=<certs-path>: 安全部署模式下指定证书的路径。

解密目录

如果需要将加密数据转换回明文存储,请按以下步骤操作。

前提条件

  • 用户为 root 用户或者拥有 sudo 权限的普通用户。
  • 已保留当前使用的加密存储密钥。

步骤

在集群中的每个节点执行以下操作:

  1. 登录节点,进入 kwbase 脚本所在目录。

  2. 停止 KaiwuDB 服务。

    systemctl stop kaiwudb
    
  3. 在启动命令中指定原存储密钥、原加密算法和解密算法。

    提示:

    • KaiwuDB 同时支持通过 kaiwudb_envdocker-compose.yml 文件添加 --store-encryption 参数设置,解密目录。更多相关信息,参见参数设置
    • 以下命令仅列出了不同部署模式下解密目录的必需参数,KaiwuDB 启动时还支持指定其他参数,更多启动参数信息,参见启动参数
    • 非安全模式

      ./kwbase start --store=<storage-path> --store-encryption=path=<storage-path>,old-key=<old-key-path>,cipher=plain,old-cipher=<old-cipher> --insecure
      
    • TLS 安全模式

      ./kwbase start --store=<storage-path> --store-encryption=path=<storage-path>,old-key=<old-key-path>,cipher=plain,old-cipher=<old-cipher> --certs-dir=<certs-path> 
      
    • TLCP 安全模式

      ./kwbase start --store=<storage-path> --store-encryption=path=<storage-path>,old-key=<old-key-path>,cipher=plain,old-cipher=<old-cipher> --certs-dir=<certs-path> --tlcp
      

    参数说明:

    • --store=<storage-path>:指定数据库的主存储目录。注意:主存储目录应与部署时指定的存储目录保持一致。
    • --store-encryption: 指定加密目录路径、存储密钥路径和加密算法,其中:
      • storage-path:待解密的目录路径,必须位于 --store 指定的主存储目录内或者与 --store 指定的目录相同。
      • old-key-path:原有存储密钥路径。
      • cipher:加密算法,设置为 plain 时表示取消加密。
      • old-cipher: 原有加密算法,支持 sm4aes
    • --certs-dir=<certs-path>: 安全部署模式下指定证书的路径。