面试题答案
一键面试常用数据加密策略
- 透明数据加密(TDE):TDE 加密数据库文件,在数据写入磁盘时加密,读取时解密。对应用透明,无需修改应用代码。
- 列级加密:对特定列数据进行加密,如敏感信息列(身份证号、银行卡号等)。可使用对称或非对称加密算法。
- 传输层加密:通过 SSL/TLS 加密客户端与数据库服务器间传输的数据,防止数据在传输过程中被窃取或篡改。
实施透明数据加密(TDE)
- 配置步骤:
- 安装加密插件:在 MySQL 服务器上安装 TDE 相关插件,不同版本安装方式有差异,一般需获取插件文件并放置到指定目录。
- 生成加密密钥:使用 MySQL 提供的工具或函数生成加密密钥,密钥需妥善保管。
- 配置加密选项:修改 MySQL 配置文件(如 my.cnf 或 my.ini),启用 TDE 相关配置项,指定密钥位置等。
- 重启 MySQL 服务:使配置生效。
- 加密现有数据:执行特定 SQL 语句对现有数据库文件进行加密。
- 潜在风险:
- 密钥管理风险:密钥丢失或泄露会导致数据无法解密或被非法访问。需建立严格密钥备份和访问控制机制。
- 性能影响:加密和解密操作会消耗服务器资源,可能导致数据库性能下降。可通过优化服务器硬件或调整加密算法缓解。
- 兼容性问题:某些 MySQL 版本或插件可能存在兼容性问题,升级或更换插件时需全面测试。
实施列级加密
- 配置步骤:
- 选择加密算法:如 AES(对称加密)。
- 修改表结构:添加用于存储加密后数据的列。
- 编写加密和解密函数:在应用层或数据库层编写函数,使用选定算法进行加密和解密。
- 更新数据:对已有数据进行加密处理并更新到新列。应用读取数据时调用解密函数。
- 潜在风险:
- 应用代码修改:需要修改应用代码以处理加密和解密逻辑,可能引入新的代码错误。
- 查询复杂度增加:由于数据加密,基于加密列的查询变得复杂,可能影响查询性能。
实施传输层加密
- 配置步骤:
- 生成 SSL/TLS 证书:可使用 OpenSSL 等工具生成证书和私钥。
- 配置 MySQL 服务器:在 MySQL 配置文件中指定证书、私钥和 CA 证书路径,启用 SSL/TLS 加密。
- 配置客户端:在客户端连接字符串中指定使用 SSL/TLS 加密,并提供 CA 证书路径。
- 潜在风险:
- 证书管理:证书过期或丢失需及时更新和恢复,否则会导致连接失败。
- 性能开销:加密和解密传输数据会带来额外性能开销,影响网络传输速度。