在MongoDB中实现数据加密主要有以下几种方式:
1、 在启动MongoDB时指定PEM格式的TLS/SSL证书并开启加密连接。
- 这可以加密客户端与MongoDB服务器之间的连接,防止流量劫持。
mongod --tlsMode requireTLS --tlsCertificateKeyFile <pem file>
2、 开启MongoDB Atlas数据库的加密功能。
- MongoDB Atlas支持通过AWS KMS加密集群数据。
- 这可以完全加密储存的数据,防止物理介质盗取。
3、 在字段值上加密数据。
- 在插入数据之前使用加密算法将敏感字段值加密。
- 在读取数据时需要在应用层解密,这需要我们维护一个加密解密层。
4、 使用本机加密(Client-Side Field Level Encryption)在驱动中加密数据。
- MongoDB官方的多语言驱动均已支持本机加密。
- 这可以对单个字段加密,并对不同文档使用不同的加密密钥。
5、 使用Vault和其他工具集中管理所有的加密密钥。
- 这种方式可以简化密钥的生成、分发、rotation等管理操作。
- MongoDB也已支持集成Hashicorp Vault进行密钥管理。
6、 开启Transparent Data Encryption(TDE)对存储的数据进行全磁盘加密。
- 这需要指定一个Master Key来加密所有数据文件和日志。可防物理访问。
- 但需重启数据库实例才能生效,所以无法即时加密新写入的数据。
7、 使用MongoDB中的kms管理密钥和数据的加密。
- 在Atlas或企业版中启用kms,然后通过kms进行密钥管理和文件/字段加密等。