OPTIONS
翻译或纠错本页面

安全介绍

维护一个安全的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>。用户也可以根据客户的需求创建特定的’角色

参见 授权 了解详情。

审计

审计使管理员验证当前实施的安全策略是否在正确地控制系统行为。保留审计信息确保管理员有足够的信息来进行取证调查,并遵守需要审计数据的相关规定和政策。

参见 Auditing 了解详情。

加密

传输过程中的加密

你可以使用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的进程只能访问文件系统中其所需要的部分。

←   Security 安全概念  →