如何在 MongoDB 中管理用户权限

阅读时长 5 分钟读完

在开发 web 应用程序时,安全性是至关重要的一点。当你希望用户能够注册、登录或在你的应用程序中执行其他操作时,你需要保证他们只能访问他们有权访问的信息。MongoDB 提供了一系列的安全性功能,其中包括用户身份验证和访问控制。在这篇文章中,我们将深入探讨如何在 MongoDB 中管理用户权限。

用户身份验证

MongoDB 允许你创建用户,在用户访问数据库时进行身份验证。在本文中,我们将使用 shell 中的用户管理来说明身份验证是如何工作的。

在使用身份验证之前,你需要创建至少一个用户并将其赋予适当的角色。以下是一个创建用户的示例:

以上代码会创建一个名为 admin 的用户,并将其赋予 root 角色,即拥有所有数据库相关的超级管理员权限。你可以在创建时为用户分配其他权限,比如 read、write 等,这些权限可以针对一个数据库或集合等级。

注意:在生产环境下,你应该使用更强大的密码。

接下来,在使用身份验证之前,你需要启用它。可以使用以下命令启用身份验证:

上面的命令是在启动 MongoDB 时使用的。或者,在运行实例后,你可以通过使用以下命令来启用身份验证:

这将对 admin 用户进行身份验证并打开认证。

现在,我们来看看如何在身份验证的环境下访问数据库。

用户访问控制

MongoDB 允许你将用户分配给不同的角色,这些角色控制着他们在数据库中能够执行哪些操作。MongoDB 提供了几个内置的角色,包括 root、read、readWrite 等。你可以使用角色派生来创建自定义角色,并授予适当的权限。

一个典型的使用情形是将一个 read-only 用户分配给某些数据集。以下是一个创建 read-only 用户的示例:

上面的代码将创建一个名为 readonly 的用户,并将其赋予 read 角色。我们还指定该用户仅能在 mydatabase 数据库中读取数据。

现在我们已经创建了一个只读用户,让我们来看一下他能做什么。要测试这个用户,请使用以下命令以只读用户身份连接到 MongoDB:

这会连接到 mydatabase 数据库,并授予只读用户只读权限。接下来,运行以下命令:

以上命令将返回一个错误,因为只读用户没有写权限。使用以下命令作为可写用户重试:

这将添加一行数据到 inventory 集合中。然后,你可以通过读取 mydatabase 数据库并访问 inventory 集合来验证该操作是否成功:

现在只读用户将能够返回一个包含了添加的新文档的结果集。

如何创建自定义角色

MongoDB 允许你创建自定义角色,以便更好地控制用户的访问。以下是一个自定义 read-write 角色的示例代码:

上面的代码将创建一个名为 customReadWrite 的新角色,并授予访问 mydatabase 数据库中所有集合的 find 和 insert 操作的权限。

你可以使用以下代码将角色分配给用户:

这将为名为 myUser 的用户分配 customReadWrite 角色的所有权限。

结论

MongoDB 提供了强大的安全性功能,其中包括用户身份验证和访问控制。为了保护你的 MongoDB 数据库及其相关的实用程序,你应该授予合适的角色给你的用户,并为每个用户分配访问控制列表,这样他们就只能访问他们有权访问的数据。在开发 MongoDB 时遵循这些最佳实践,将会大幅提高你的应用程序的安全性。

希望这篇文章能够帮助你更好地管理你的 MongoDB 用户权限,开发出更加安全的 web 应用程序。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f2441ba44b36ee57653775

纠错
反馈