授权是为了确保客户端对系统的访问,而身份验证会检查客户端在被授权进入系统后在MongoDB中的访问类型。
身份验证机制有很多种,以下是其中几种。
使用x.509证书的MongoDB身份验证
使用x.509证书对客户端进行身份验证–证书基本上是客户端和MongoDB服务器之间的信任签名。
因此,无需输入用户名和密码来连接服务器,而是在客户端和MongoDB服务器之间传递证书。客户端基本上将具有客户端证书,该证书将传递到服务器以对服务器进行身份验证。每个客户端证书对应一个MongoDB用户。因此,来自MongoDB的每个用户都必须拥有自己的证书才能通过MongoDB服务器进行身份验证。
为确保此功能有效,必须遵循以下步骤;
- 必须从有效的第三方机构购买有效的证书并将其安装在MongoDB服务器上。
- 客户端证书必须具有以下属性(单个证书颁发机构(CA)必须同时为客户端和服务器颁发证书。客户端证书必须包含以下字段-keyUsage和extendedKeyUsage。
- 连接到MongDB服务器的每个用户都需要有一个单独的证书。
使用Kerberos的Mongodb身份验证
第一步)在Windows上使用Kerberos身份验证配置MongoDB – Kerberos是大型客户端-服务器环境中使用的身份验证机制。
这是一种非常安全的机制,其中密码只有在加密时允许使用。当然,MongoDB具有针对现有的基于Kerberos的系统进行身份验证的功能。
第二步)启动mongod.exe服务器进程。
第三步)启动mongo.exe客户端进程并连接到MongoDB服务器。
第四步)在MongoDB中添加一个用户,该用户基本上是$ external数据库的Kerberos主体名称。$ external数据库是一个特殊的数据库,它告诉MongoDB根据Kerberos系统而不是其自己的内部系统对该用户进行身份验证。
use $external
db.createUser(
{
user: “user1@example.NET
“,
roles:[
{
role: “read” , db:”Marketing”}
}
]
}
第五步)使用命令启动具有Kerberos支持的mongod.exe
mongod.exe –auth –setParameter authenticationMechanisms=GSSAPI
现在可以使用Kerberos用户和Kerberos身份验证连接到数据库。
摘要:
- 有多种身份验证机制可以在数据库中提供更好的安全性。这个是使用证书对用户进行身份验证,而不是使用用户名和密码。
译者:徐扬
源地址:https://www.guru99.com/mongodb-authentication-kerberos.html
评论前必须登录!
注册