【TiDB 4.0 PCTA 学习笔记】- 3.8.2 TLS and TDE(TLS 和 TDE)@1班:魔幻之翼

课程名称:课程版本(301)+ 3.8.2 TLS and TDE(TLS 和 TDE)

学习时长:

18分钟

课程收获:

掌握动态加密和静态加密应对的使用场景和配置过程

课程内容:

  • 数据泄漏的风险

    • 中间人攻击
    • 物理拆除磁盘
  • tidb加密

    • 传输层加密
    • 静态加密

TLS

  • 传输层安全协议 (Transport layer Security) 简称 SSL
  • TLS 连接属性
    • secure 互信的安全连接
    • authenticated 互信身份的机制
    • reliable 更可靠的网络连接

证书

由可信的证书机构颁发 简称 CA

  • CA 证书
  • 密钥
  • 密钥对应CA发布的证书

密钥证书生成的两种方式

  • CA
  • SSL 生成自签名的证书

TLS认证配置过程

Config tidb

[Security]

ssl-cert = “/path/to/tidb-cert.pem”

ssl-key = “/path/to/tidb-key.pem”

mysql 客户端的版本大于等于 5.7 以上都可以支持使用安全连接到 tidb

验证 cecure 的方式,在客户端连接成功后,命令行中

  • \s
  • show status like ‘%Ssl%’

通过使用CA 证书,来规避中间人攻击的场景

连接时,启用SSL 的CA证书信息

mysql -h host -p port -u username --ssl -ssl-ca=/path/to/ca-cert.pem

客户端需要使用 CA证书认证,则必须具备

  • version >= 5.7.3
  • –ssl

旧版本的客户端对CA支持不够完善,即使使用了SSL,也会被服务端关闭连接

开启客户端认证,避免中间人攻击

config tidb

[security]

ssl-cert = “/path/to/tidb-cert.pem”

ssl-key = “/path/to/tidb-key.pem”

ssl-ca = “/path/to/ca-cert.pem”

client

mysql -h host -p port -u username --ssl-cert = “/path/to/client-cert.pem” --ssl-key = “/path/to/client-key.pem”

tidb 组件之间也需要配置 mtls 的加密连接

以为来保证各个连接之间都是安全的

证书更新不需要重启服务器

直接按照原来的路径,替换原来的证书

通过生成的证书时,需要设置 Common Name(CN),来限制连接

以此来杜绝 Client 可以直接连接其他组件的场景

tikv

  • 静态加密
    • encryption-at - rest ,对磁盘上的数据进行加密
    • transparent Data Encryption (TDE)
    • 不对网络或者内存中的数据进行加密
    • 文件系统,云场景都可以提供不同的加密方式
    • TIDB 只支持对所有的数据进行加密啊,不支持对单独的列进行加密
  • tikv 加密
    • 配置密钥信息
      • [security.encryption] aes128-ctr , aes192-ctr , aes256-ctr , plaintext
        • data-encryption-method = aes 128-ctr
        • data-key-rotation-period = 7d
      • [security.encryption.master-key]
        • type = kms
        • key-id = XXX
        • region = ???
    • 配置主要key
      • KMS key-mangagement service
      • use special hardware(HSM) to store master key
      • the master key 不对硬件之外暴露
      • 生产环境推荐 kms 的 master key
    • 了解工作过程
      • 信封加密
      • master key
        • aws kms key
        • userd to encrypt data keys 生成 datakeys
        • 每个用户使用不同的度量(manually rotated)
      • Data key
        • 使用随机字符生成
        • 使用data key 加密文件信息
        • 自动滚动
      • rotate master key
        • 发现密码泄露后,自动滚动采用新的密钥
    • 其他的注意事项
      • 内存中的数据均是未加密的
      • PD不支持 静态加密
      • Tiflash 也不支持静态数据加密
      • 日志信息中也有可能是明文的
      • 加密信息路径是明文的,并且不能更改