据MongoDB:安全记录万千数据
MongoDB是一款具备分布式文件存储功能和面向文档的NoSQL数据库,可应用于大型企业级应用系统、身份验证和用户会话管理、数据传输和存储。MongoDB拥有安全、高效、易用、可扩展等特点,被广泛使用和青睐。在数据库存储中,保护用户数据的安全是至关重要的,MongoDB通过多种手段保护数据的安全性。
如何保护数据安全
为保证MongoDB的数据安全性,在数据操作的核心上做了多重保险,主要有以下方面:
1. SSL/TLS 加密
MongoDB支持使用SSL和TLS(Transport Layer Security)协议来加密客户端与数据库系统之间的通信,SSL/TLS协议是目前比较常用的防止数据被窃听、篡改和截获的方案,用于对TCP/IP通信进行加密和身份认证。SSL/TLS协议在握手阶段将会确认两个终端进行通信。
MongoDB通过支持SSL/TLS协议,提供了一种纯粹软件方案的数据库加密解决方案。
以下是一个使用SSL连接MongoDB的Python片段:
import ssl
from pymongo import MongoClient
client=MongoClient('mongodb://localhost:27017',ssl=True,ssl_cert_reqs=ssl.CERT_REQUIRED,ssl_ca_certs='ca.pem')
2. 访问控制
MongoDB提供了基于角色的访问控制和强制访问控制,以便管理员可以精确定义数据库用户可以执行的操作类型。
在MongoDB中,访问控制由用户和角色组成。每个用户都可以分配一个或者多个角色。每个角色可以包含特定的MongoDB操作。用户不能直接分配到操作,只能分配到角色。用户被认为可以访问由其角色允许的所有操作。
以下是在MongoDB中配置认证的示例:
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
3. 安全审计
MongoDB可以启用安全审计功能,以便可以更好地跟踪并分析数据库的活动。管理员可以查看或配置可审计事件,如登录、身份验证失败、管理员操作和写操作。
MongoDB的安全审计功能允许管理员可以看到发生了哪些操作,并可以检查这些操作是否对系统产生了严重影响。此功能可以防止威胁拓展的远程攻击。
以下是在MongoDB中配置审计过滤器的示例:
db.runCommand( {
setParameter: 1,
auditAuthorizationSuccess: true,
auditAuthorizationFailure: true,
auditCommands: true,
auditEvents: true,
} )
4. 数据加密
MongoDB在服务器版本3.2中提供了加密数据选项。在传输中,如果数据加密,那么任何人截获的数据也将无法安装关键信息;而在存储时,可以使用加密的存储引擎,以保护除应用程序之外的任何人无权读取存储在MongoDB中的敏感信息。
以下是使用配置加密的MongoDB服务器实例的部分支持配置的片段:
storage:
dbPath: /data/db
directoryPerDB: true
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
encryptionKeyFile: /mongodb/mongodb-keyfile
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
结语
MongoDB是一个受欢迎的数据库解决方案,它越来越成为企业级应用程序开发人员热衷的一种数据库选择,因其提供的安全和可靠性方案。以上介绍了MongoDB所提供的多重保险方案:SSL/TLS 加密、访问控制、安全审计和数据加密, MongoDB以多重手段为数据安全性提供了有力支持。