View a markdown version of this page

使用身份验证 SCRAM-SHA-256 - Amazon DocumentDB

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用身份验证 SCRAM-SHA-256

Amazon DocumentDB(兼容 MongoDB)支持 Salted Challenge 响应身份验证机制 (SCRAM),用于基于密码的身份验证。使用 SCRAM,服务器在不将密码传输给服务器的情况下验证客户端是否知道用户的密码。Amazon DocumentDB 支持两种 SCRAM 机制:和SCRAM-SHA-1SCRAM-SHA-256SCRAM-SHA-256使用更强的 SHA-256 哈希函数并适用于 FIPS 模式。

在创建或更新用户时,您可以为该用户分配一个或两个 SCRAM 机制。使用创建的用户可以在不进行任何更改的情况下SCRAM-SHA-1继续工作。 SCRAM-SHA-256 Amazon DocumentDB 基于实例的集群次要版本 5.0.1+ 和 8.0.1+ 中提供身份验证。

SCRAM 和 IAM 身份验证是相互排斥的

用户可以拥有 SCRAM 机制或MONGODB-AWS机制,但不能两者兼而有之。有关 IAM 身份验证,请参阅使用 IAM 身份进行身份验证

使用 SCRAM 机制创建用户

创建用户时,可以在该mechanisms字段中指定要启用的 SCRAM 机制。以下示例使用 only、SCRAM-SHA-1 onl SCRAM-SHA-256 y 和两种机制创建用户:

db.runCommand({ createUser: 'sha1user', pwd: passwordPrompt(), roles: ['readWrite'], mechanisms: ['SCRAM-SHA-1'] }); db.runCommand({ createUser: 'sha256user', pwd: passwordPrompt(), roles: ['readWrite'], mechanisms: ['SCRAM-SHA-256'] }); db.runCommand({ createUser: 'bothuser', pwd: passwordPrompt(), roles: ['readWrite'], mechanisms: ['SCRAM-SHA-1','SCRAM-SHA-256'] });

默认机制

如果您不指定mechanisms字段,Amazon DocumentDB 会同时SCRAM-SHA-256为用户启用SCRAM-SHA-1和。以下两个命令是等效的:

db.runCommand({ createUser: 'user1', pwd: passwordPrompt(), roles: ['readWrite'] }); // is equivalent to: db.runCommand({ createUser: 'user1', pwd: passwordPrompt(), roles: ['readWrite'], mechanisms: ['SCRAM-SHA-1','SCRAM-SHA-256'] });

默认情况下启用这两种机制可以保持与仅支持的旧 MongoDB 驱动程序的兼容性。SCRAM-SHA-1更新的驱动程序和 FIPS 模式更SCRAM-SHA-256受欢迎。如果您不希望任何用户使用进行身份验证SCRAM-SHA-1,请仅SCRAM-SHA-256mechanisms字段中为所有用户指定。

更新现有用户

SCRAM-SHA-1继续支持使用创建的用户,不做任何更改。要将现有用户从切换SCRAM-SHA-1SCRAM-SHA-256,请使用新密码和SCRAM-SHA-256机制更新用户:

db.runCommand({ updateUser: 'existing', pwd: passwordPrompt(), mechanisms: ['SCRAM-SHA-256'] });

使用进行身份验证 SCRAM-SHA-256

您的驱动程序在每次连接上发送第一条命令之前,会自动使用连接字符串参数进行身份验证。要SCRAM-SHA-256在连接 URI 中进行选择,请将authMechanism参数设置为SCRAM-SHA-256

mongodb://username:password@hostname:port/authenticationDatabase?authMechanism=SCRAM-SHA-256

你也可以从 mongosh 发送明确的身份验证请求:

db.auth({user: 'sha256user', pwd: passwordPrompt(), mechanism: 'SCRAM-SHA-256'}) Enter password: 1

如果您未在连接选项中指定身份验证机制,则驱动程序会自动选择目标数据库用户支持的机制。