- Security >
- 安全介绍
安全介绍¶
维护一个安全的MongoDB部署要求管理员对用户和应用程序实施管制,以确保他们只能访问其所需要的数据。MongoDB提供的功能能够使管理员对任何一个MongoDB部署进行管制或设置权限。
如果你对安全和MongoDB的安全策略已经比较熟悉了,那么你可以考虑阅读 Security Checklist。该文档里列举了如何保护MongoDB部署的一系列措施。
认证¶
在访问一个系统之前,所有客户端都应该向MongoDB鉴定自己的身份,这样可以确保客户无法在没有被明确允许时访问MongoDB中的数据。
MongoDB支持一系列:ref:认证机制 <security-authentication-mechanisms>`客户端可以通过这些机制验证他们的身份。MongoDB支持两类不同的机制:基于密码的挑战-应答协议和 x.509证书。除此之外,MongoDB企业版也支持 :ref:`轻权目录访问协议代理认证 <security-auth-ldap> 和 Kerberos 认证。
参见 认证 了解详情
基于角色的访问控制¶
访问控制,例如:doc:authorization </core/authorization>,决定一个用户访问资源和进行操作的权限。客户端只应当有足够的权限以完整他们指定的功能。这种叫做:”最小权限原则”的感念能够限制应用程序受损的潜在风险。
MongoDB基于角色的访问控制系统允许管理员控制所有访问,同时保证所有授予的权限尽量精准。MongoDB默认并不开启认证。当你开启:doc:`authorization </core/authorization>`之后,MongoDB会要求所有的连接都进行认证。
开启认证后,MongoDB使用每个用户所被授予的角色控制他们的访问权限。每个角色包含一系列权利,每个权利包括一些*动作*或者操作,以及这些动作所适用的资源。
每个用户可以有一个或者多个描述他们权利的角色。MongoDB自带一些:doc:内建的角色 </reference/built-in-roles>。用户也可以根据客户的需求创建特定的’角色
参见 授权 了解详情。
加密¶
传输过程中的加密¶
你可以使用SSL加密所有MongoDB的网络数据。SSL能够确保所有MongoDB的网络数据都只能被目标客户端看到。
参见 Configure mongod and mongos for SSL 了解详情。
静态数据加密¶
加密MongoDB的静态数据广泛看有两种方法,这两种办法可以单独也可以联合使用。
应用层加密¶
在应用层里对每一个文档或者每一个场加密。可以自己写负责加密和解密的子程序或使用第三方商用方案例如 Vormetric Data Security Platform 对文档或者场加密。
存储加密¶
对所有在存储媒介或操作系统里的MongoDB数据加密。这样能确保只有经过认证的程序可以访问受保护的数据。一些第三方库可以与操作系统结合以提供透明磁盘层加密。例如:
- LUKS
LUKS支持大多数Linux版本。如需要设置说明,请参见`LUKS documentation from Red Hat`_。
- IBM Guardium 数据加密
`IBM Guardium Data Encryption`_提供Windows和Linux操作系统上的磁盘层加密。
- Vormetric 数据安全平台
`Vormetric 数据安全平台`_提供磁盘层、文件层和应用层加密。
- Bitlocker Drive Encryption
Bitlocker Drive Encryption 是一个在 Windows Server 2008 和 2012 提供磁盘加密的部件。
正确配置磁盘加密,并且采用保护相关账号、密码和密钥的良好安全策略能够确保系统符合相关标准法律,例如PCI-DSS, 美国的HIPAA和FERPA。
加强部署和环境的防御力¶
除了在MongoDB内部实施管制以外,你也应该在MongoDB周边布置管制设备以减少整个MongoDB系统的暴露风险。这种策略叫做多层防御(Defense In Depth)。
加强MongoDB防御力的基于最少权限、审计和MongoDB周边系统加密的感念。降低风险的方法包括:配置网络规则、确保只有受信任的主机可以访问MongoDB、确保MongoDB的进程只能访问文件系统中其所需要的部分。