You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YugabyteDB密钥管理架构及静态加密密钥相关技术问询

YugabyteDB 密钥管理实现机制详解

一、密钥存储方式(通用&静态块级加密场景)

  • 通用场景(未启用静态加密):
    YB仅对节点间通信、内部服务认证等场景使用密钥,这类密钥存储在节点本地配置目录,权限被严格限制为仅YB进程可读,不涉及磁盘数据加密。
  • 启用静态块级加密时:
    YB采用分层密钥结构,避免直接用主密钥加密大量数据:
    • 数据加密密钥(DEK):每个TServer节点的RocksDB实例会生成独立的DEK,用于加密磁盘上的SSTable、WAL等所有持久化数据块。
    • 密钥加密密钥(KEK):DEK会被KEK加密后,存储在TServer本地的yb-data/tserver/data/rocksdb/encryption_info元数据文件中。KEK的存储分两种模式:
      • 本地文件模式:用户将KEK写入指定本地文件,通过--encrypt-at-rest-kek-path配置TServer读取,文件必须设置chmod 600权限,仅YB进程可访问。
      • 外部KMS模式:KEK托管在第三方密钥服务(如AWS KMS、HashiCorp Vault),TServer通过预配置的凭证自动调用API获取。

二、数据库停止与重启流程

  • 停止流程:
    • 集群收到停止指令后,Master、TServer节点依次优雅关闭。
    • TServer关闭前会确保所有加密数据落盘,明文DEK仅存在于进程内存中,进程退出后内存被系统回收,无明文残留。
  • 重启流程:
    • Master节点优先启动,加载加密后的集群元数据(静态加密为全局启用,Master存储同样受加密保护)。
    • TServer启动时,先读取本地加密元数据文件中的加密DEK,再获取KEK(本地文件读取或KMS调用),解密得到明文DEK后,用DEK解密磁盘数据,正常对外提供服务。

三、重启时是否需要管理员手动提供密钥?

绝大多数生产场景下不需要:

  • 外部KMS模式:TServer通过预配置的IAM角色、API密钥等自动调用KMS获取KEK,无需人工干预。
  • 本地文件模式:TServer自动读取预配置路径下的KEK文件,只要文件权限正确、YB进程可访问,就无需手动输入。
  • 仅临时测试场景(KEK仅存于内存):重启时需要管理员重新输入KEK,但这不是生产环境的推荐方案。

四、本地KEK场景下的安全保障(无外部主密钥机制)

即便不用外部KMS,YB通过以下机制保障密钥安全:

  • 操作系统级权限隔离:KEK文件、加密元数据文件均设置chmod 600权限,仅YB进程可读,其他用户或进程无法访问。
  • DEK加密存储:明文DEK仅在TServer运行时存在于进程内存,磁盘上只有被KEK加密后的DEK,攻击者拿到磁盘文件也无法解密DEK,进而无法读取原始数据。
  • 内存保护:YB利用操作系统内存保护机制(如Linux的mlock),防止明文DEK被换出到磁盘交换分区,减少泄露风险。
  • 节点身份认证:集群节点间通信启用TLS,只有经过认证的节点才能访问加密存储资源,避免密钥在传输过程中被窃取。

内容的提问来源于stack exchange,提问作者dh YB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 06:11:13