Mongodb常用的身份验证方式

对于 Mongodb 常用的身份验证方式,主要有以下两种:

1. SCRAM-SHA

SCRAM-SHA 是一种新的身份验证机制,它基于 Salted Challenge Response Authentication Mechanism(SCRAM)协议,提供更安全的密码验证。SCRAM-SHA 分为 SCRAM-SHA-1 和 SCRAM-SHA-256 两种方式。在 MongoDB 4.0 及之后的版本中默认使用 SCRAM-SHA-256 方式验证。

配置 SCRAM-SHA-256 验证

1.启用身份验证功能

在启动 MongoDB 时,需使用 --auth 参数启用身份验证功能。

2.创建超级管理员账户

> use admin
> db.createUser(
...   {
...     user: "admin",
...     pwd: "123456",
...     roles: [ { role: "root", db: "admin" } ]
...   }
... )

3.为普通用户授予角色

在创建用户时,需确保用户具备在相关数据库上执行所需的操作的角色。下面的示例创建了一个名为 user1,密码为 123456 的用户,并将其授予 readWriteAnyDatabase 权限。

> use test
> db.createUser(
...   {
...     user: "user1",
...     pwd: "123456",
...     roles: [ { role: "readWriteAnyDatabase", db: "admin" } ]
...   }
... )

SCRAM-SHA-1 验证配置方法与 SCRAM-SHA-256 类似,在此不再赘述。

2. X.509

X.509 是一种公钥基础结构(PKI)标准,是使用数字证书进行身份验证的协议。与 SCRAM-SHA 不同,X.509 不需要使用用户名/密码验证方式,而是使用数字证书完成身份验证。

配置 X.509 验证

1.生成或获取证书

首先需要获取或生成证书,可以使用自签名证书或颁发机构(CA)证书。

2.启用身份验证功能

在启动 MongoDB 时,使用 --auth --sslMode requireSSL --sslPEMKeyFile <pem_file> --sslCAFile <ca_file> 参数启用身份验证并启用 SSL/TLS 加密。

3.将客户端证书添加到数据库中

> use admin
> db.runCommand({
...  createUser: "CN=myClient,OU=client",
...  roles: [
...    {role: "readWrite", db: "myDatabase"}
...  ],
...  userSource: "$external"
... })

此示例中,CN=myClient,OU=client 为证书的公用名称(Common Name,CN)和组织单位(Organizational Unit,OU)。需要根据实际证书信息进行替换。

4.配置 MongoDB 实例,使其接受客户端证书

在配置文件中添加以下配置,使 MongoDB 实例接受客户端证书。

net:
  # ...

  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/ssl/mongodb.pem
    CAFile: /etc/ssl/rootCA.pem

示例

使用 openssl 命令生成自签名证书

$ openssl req -newkey rsa:2048 -nodes -keyout mongodb.key -x509 -days 365 -out mongodb.crt

将证书拼接成 pem 格式

$ cat mongodb.crt mongodb.key > mongodb.pem

启动 MongoDB 并启用身份验证与 SSL/TLS 加密

$ mongod --auth --sslMode requireSSL --sslPEMKeyFile /path/to/mongodb.pem --sslCAFile /path/to/rootCA.pem

创建用户并授予角色

> use admin
> db.runCommand({
...    createUser: "CN=myClient,OU=client",
...    roles: [
...        {role: "readWrite", db: "test"}
...    ],
...    userSource: "$external"
...})

使用证书连接 MongoDB 实例

$ mongo --ssl --sslPEMKeyFile /path/to/mongodb.pem --host localhost --username 'CN=myClient,OU=client' --authenticationMechanism MONGODB-X509

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mongodb常用的身份验证方式 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • MongoDB教程之数据操作实例

    针对“MongoDB教程之数据操作实例”的完整攻略,我们可以提供以下详细介绍。 一、准备工作 在学习“MongoDB教程之数据操作实例”前,需要先进行以下准备工作: 安装MongoDB数据库,可参考“MongoDB 安装教程”学习安装方法。 下载安装MongoDB客户端工具,如Robo 3T等,用于连接MongoDB数据库,可前往官网下载。 连接MongoD…

    MongoDB 2023年5月16日
    00
  • 详解MongoDB创建数据库步骤

    MongoDB是一款基于文档存储的非关系型数据库,以下是如何创建数据库的完整攻略。 安装MongoDB 首先需要在计算机上安装MongoDB,安装方法可以查看官方文档或者从MongoDB官网下载安装程序,根据安装向导完成安装。 启动MongoDB服务 在安装完成后,需要启动MongoDB服务。在Windows系统中,可以通过运行CMD或者PowerShell…

    MongoDB 2023年3月14日
    00
  • MongoDB集合的增删改查管理

    MongoDB是一个非关系型数据库,集合是MongoDB中最基本的数据存储单位。本文将详细讲解MongoDB集合的增删改查管理的完整攻略,包含两条示例说明。 新建集合 要在MongoDB中新建一个集合,可以使用以下命令: db.createCollection("collectionName") 其中,collectionName为新集合…

    MongoDB 2023年5月16日
    00
  • MongoDB MapReduce(数据处理)方法详解

    MongoDB MapReduce是一种数据处理技术,它允许您使用JavaScript编写MapReduce函数来对MongoDB集合中的数据进行聚合和分组。 下面是MongoDB MapReduce的完整使用放啊,包括过程和代码示例: 准备数据 首先,我们需要一些数据来演示MongoDB MapReduce。我们将使用以下JSON格式数据: { &quot…

    MongoDB 2023年3月14日
    00
  • 关于对MongoDB索引的一些简单理解

    下面我将为大家详细讲解“关于对MongoDB索引的一些简单理解”的完整攻略。 索引是什么? 在MongoDB中,索引是一种用于快速查询和判断某个字段的数据结构。在一个集合中,为某个字段建立了索引,可以使这个字段的查询速度大大提高,从而提高了查询效率。 索引的分类 MongoDB中的索引有以下几种类型: 单字段索引,即为集合中的单个字段建立索引 复合索引,即为…

    MongoDB 2023年5月16日
    00
  • MongoDB的分片集群基本配置教程

    MongoDB分片集群的基本配置教程包括以下内容: 1. 准备工作 1.1 确定服务器IP地址和端口 要搭建MongoDB分片集群,需要至少准备3台服务器,其中1台用于作为MongoDB配置服务器,2台以上作为MongoDB分片服务器。在此之前,需要确认服务器的IP地址和端口,确保网络环境无问题。 1.2 配置虚拟机 在本地模拟搭建分布式架构调试,可使用虚拟…

    MongoDB 2023年5月16日
    00
  • 给MongoDB添加用户权限方法分享

    给MongoDB添加用户权限方法分享 在MongoDB中,为了保证数据的安全性,我们需要为数据库添加用户和用户权限。接下来,我们将详细介绍如何为MongoDB添加用户权限。 1. 创建管理员用户 首先,我们需要创建一个管理员用户,用于管理数据库的所有操作。在命令行输入以下命令: mongo use admin db.createUser( { user: &…

    MongoDB 2023年5月16日
    00
  • docker的一些基本指令

    下面我将详细讲解关于Docker基本指令的攻略,包含两条示例说明。 Docker基本指令攻略 拉取Docker镜像 在使用Docker构建环境时,我们需要使用到Docker镜像,通常我们需要从Docker Hub上拉取需要使用的镜像。 docker pull 镜像名称 这里的镜像名称指的是在Docker Hub上对应的镜像名,例如,如果需要拉取Ubuntu的…

    MongoDB 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部