Overview
学习 Atlas Data Federation 中数据库用户的高级身份验证和授权设置,包括可用的身份验证方法。您可以使用 Atlas CLI、Atlas Administration API 和 Atlas 用户界面管理用户。
注意
在 Atlas 中,每个 Atlas 项目默认最多支持 100 个数据库用户。如果您的项目需要超过 100 个数据库用户,可以使用 Atlas Administration API 来增加限值。如需帮助,请联系 Atlas 支持部门。
必需的访问权限
要使用高级数据库用户配置,您必须在Atlas中拥有 Organization Owner、Project Owner 或 Project Database Access Admin 访问权限。
数据库操作
使用 Atlas CLI、Atlas Administration API 或 Atlas 用户界面管理 Atlas Data Federation 的数据库用户。
对数据库用户进行身份验证
Atlas Data Federation 为数据库用户提供以下形式的身份验证:
密码: SCRAM 是 MongoDB 的默认身份验证方法。SCRAM 要求为每个用户设置密码。
SCRAM 认证用户的身份验证数据库是
admin数据库。注意
默认下,Atlas支持SCRAM-SHA-256身份验证。如果您在MongoDB 4.0 之前创建用户,则必须更新MongoDB 4.0,更新其密码以生成SCRAM-SHA-256凭证。您可以重复使用现有密码。
何时使用SCRAM:
您可以对人类用户和应用程序用户使用SCRAM身份验证。对于较低的环境, SCRAM是一种合适的身份验证方法。对于生产和更高层环境,请遵循安全最佳实践以确保密钥安全且短期有效,例如与特权访问管理 (PAM) 解决方案集成。
X.509 证书: X.509 证书,也称为双向 TLS 或 mTLS,允许使用可信证书进行无密码身份验证。
通过 X.509 身份验证的用户的身份验证数据库是
$external数据库。如果您启用 LDAP 授权,则您无法通过使用 Atlas 托管 X.509 证书进行身份验证的用户连接集群。要启用 LDAP 并使用 X.509 用户连接集群,请参阅设置自管理 X.509 证书。
何时使用 X.509:
当工作负载身份联合 (OIDC) 或 AWS IAM身份验证不可行或需要相互身份验证时,X.509身份验证适用于安全工作负载访问权限。
OIDC:OpenID Connect (OIDC)身份验证支持使用外部身份提供程序进行无密码、无秘密的身份验证。Atlas支持以下类型的 OIDC身份验证:
Workload Identity Federation,适用于使用外部编程身份(例如Azure服务主体、 Azure托管身份和 Google 服务帐户)的应用程序。
经过 OIDC 身份验证的用户的身份验证数据库是
$external数据库。OIDC身份验证仅适用于使用MongoDB 7.0 及更高版本的集群。
何时使用 OIDC:
对于人类用户,我们建议您将 Workforce Identity Federation 与 OIDC 结合使用。
对于应用程序用户,对于在GCP或Azure上运行的应用程序,我们建议您将 Workload Identity Federation 与 OIDC 结合使用。
添加新的数据库用户
项目用户可以使用不同的身份验证方法。
用户的身份验证方法在创建时固定。要使用其他身份验证方法,请创建新用户。
Atlas CLI 使用以下命令创建新的数据库用户和 X.509 证书。您指定的选项决定了身份验证方法。
如需使用 Atlas CLI 创建项目的数据库用户,请运行以下命令:
atlas dbusers create [builtInRole]... [options]
如需使用 Atlas CLI 为指定数据库用户创建 Atlas 托管的新 X.509 证书,请运行以下命令:
atlas dbusers certs create [options]
要详细了解之前命令的语法和参数,请参阅 Atlas CLI 文档中的 atlas dbusers create 和 atlas dbusers certs create。
您可以通过 Atlas Administration API 添加数据库用户。您指定的选项决定了身份验证方法。要了解更多信息,请参阅创建一个数据库用户。
选择一种身份验证机制,然后按照步骤使用 Atlas 用户界面创建新的数据库用户。
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
完成上述步骤后,将显示数据库和网络访问页面。
分配特权。
选择数据库用户权限。您可以通过以下一种或多种方式为新用户分配权限:
从 Built-in Role 下拉菜单中,选择一个内置角色。您可以在 Atlas UI 内为每个数据库用户选择一个内置角色。如果删除了默认选项,可以单击 Add Built-in Role 以选择一个新的内置角色。
如果定义了任何自定义角色,可以展开 Custom Roles(自定义角色)部分,并从 Custom Roles(自定义角色)下拉菜单中选择一个或多个角色。单击 Add Custom Role(添加自定义角色),以添加更多自定义角色。您还可以单击 Custom Roles(自定义角色)链接,以查看项目的自定义角色。
展开 Specific Privileges 部分,从 Specific Privileges 下拉菜单中选择一个或多个权限。点击 Add Specific Privilege,添加更多权限。这将为用户分配对单个数据库和集合的特定权限。
Atlas 可以将一个内置角色、多个自定义角色和多个特定权限应用到单个数据库用户。
要删除已应用的角色或权限,请单击要删除的角色或权限旁边的 Delete(删除)。
注意
如果只选择了一个选项,Atlas 不会在 Built-in Role(内置角色)、Custom Role(自定义角色)或 Specific Privilege(特定权限)选项旁边显示 Delete(删除)图标。应用了其他角色或权限后,就可以删除选定的角色或权限。
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
完成上述步骤后,将显示数据库和网络访问页面。
输入用户信息。
字段 | 说明 | |
|---|---|---|
Common Name | 受 TLS/SSL 证书保护的用户公用名 (CN)。有关更多信息,请参阅 RFC 2253。 示例,如果您的常用名是“Jane Doe”,您的组织是“MongoDB”,您的国家/地区是“US”,则在Common Name字段中插入以下内容: | |
User Privileges | 可以通过以下方式之一分配角色:
有关Atlas内置权限的更多信息,请参阅内置角色。 |
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
完成上述步骤后,将显示数据库和网络访问页面。
将身份验证方法配置为 AWS IAM。
在 Add New Database User 模式窗口的 Authentication Method 部分选择 AWS IAM。
从 AWS IAM Type 下拉菜单中选择用户类型:
Role:针对 AWS 服务(例如 EC2、 Lambda、ECS)或承担角色的应用程序的身份验证。对于应用程序访问权限, MongoDB强烈建议使用 IAM 角色而不是 IAM 用户。
User:对需要直接访问权限数据库的各个 AWS 用户进行身份验证。对于人类用户,我们建议您将Workforce Identity Federation 与 OIDC结合使用,而不是 AWS IAM身份验证。
输入 AWS 角色或用户 ARN:
角色 ARN 格式:
arn:aws:iam::123456789012:role/MyRole用户 ARN 格式:
arn:aws:iam::123456789012:user/MyUser
单击 See instruction below 链接获取有关查找 ARN 的帮助。
分配特权。
选择数据库用户权限。您可以通过以下一种或多种方式为新用户分配权限:
从 Built-in Role 下拉菜单中,选择一个内置角色。您可以在 Atlas UI 内为每个数据库用户选择一个内置角色。如果删除了默认选项,可以单击 Add Built-in Role 以选择一个新的内置角色。
如果定义了任何自定义角色,可以展开 Custom Roles(自定义角色)部分,并从 Custom Roles(自定义角色)下拉菜单中选择一个或多个角色。单击 Add Custom Role(添加自定义角色),以添加更多自定义角色。您还可以单击 Custom Roles(自定义角色)链接,以查看项目的自定义角色。
展开 Specific Privileges 部分,从 Specific Privileges 下拉菜单中选择一个或多个权限。点击 Add Specific Privilege,添加更多权限。这将为用户分配对单个数据库和集合的特定权限。
Atlas 可以将一个内置角色、多个自定义角色和多个特定权限应用到单个数据库用户。
要删除已应用的角色或权限,请单击要删除的角色或权限旁边的 Delete(删除)。
注意
如果只选择了一个选项,Atlas 不会在 Built-in Role(内置角色)、Custom Role(自定义角色)或 Specific Privilege(特定权限)选项旁边显示 Delete(删除)图标。应用了其他角色或权限后,就可以删除选定的角色或权限。
AWS IAM 连接字符串示例
使用 AWS IAM 身份验证与 mongosh 连接 Atlas 需要 shell 版本 v0.9.0 或更高版本。
请考虑以下内容:
使用 AWS IAM 凭证,将访问密钥 ID 作为用户名,将密钥作为密码。
authSource查询参数是$external,URL编码为%24external。authMechanism查询参数是MONGODB-AWS。例子
mongosh "mongodb+srv://<atlas-host-name>/test?authSource=%24external&authMechanism=MONGODB-AWS" --username <access-key-id> --password <secret-key>
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
完成上述步骤后,将显示数据库和网络访问页面。
打开 Add New Database User or Group(添加新的数据库用户)对话框。
单击 Add New Database User or Group(添加新的数据库用户)。
注意
在将 Workforce IdP 应用到 Atlas 之前,此按钮显示 Add New Database User。
选择 Federated Auth(Atlas SQL)。
在 Authentication Method 部分,选择 Federated Auth。
注意
在为组织启用 Workforce IdP 之前,您无法选中此复选框。
分配用户或群组权限。
要向新用户或群组分配权限,请执行以下一项或多项任务:
从 Built-in Role 下拉菜单中,选择一个内置角色。
您可以在 Atlas 用户界面中为每个数据库组选择一个内置角色。
如果删除默认选项,则可以单击Add Built-in Role选择新的内置角色。
选择或添加自定义角色。
如果您定义了任何自定义角色,则可以展开Custom Roles部分,然后从Custom Roles下拉菜单中选择一个或多个角色。
单击Add Custom Role以添加更多自定义角色。
单击Custom Roles链接可查看项目的自定义角色。
添加权限。
展开Specific Privileges部分,然后从Specific Privileges下拉菜单中选择一个或多个权限。
单击Add Specific Privilege可添加更多权限。 这将为群组分配对各个数据库和集合的特定权限。
删除已应用的角色或特权。
- 单击Delete旁边
- 要删除的角色或特权。
注意
如果只选择了一个选项,Atlas 不会在 Built-in Role(内置角色)、Custom Role(自定义角色)或 Specific Privilege(特定权限)选项旁边显示 Delete(删除)图标。应用了其他角色或权限后,就可以删除选定的角色或权限。
Atlas 可以将一个内置角色、多个自定义角色和多个特定权限应用到 数据库群组。
要了解有关授权的更多信息,请参阅 MongoDB 手册中的基于角色的访问控制和内置角色。
注意
从 MongoDB 8.0 开始,LDAP 身份验证和授权已过时。该功能可用,并将在 MongoDB 8 的整个生命周期内继续运行,无需更改。LDAP将在未来的主要版本中被删除。
有关详细信息,请参阅 LDAP 弃用。
按照步骤配置 LDAP 身份验证,然后按照步骤添加 LDAP 数据库用户或群组。
查看数据库用户和证书
查看数据库用户
如需使用 Atlas CLI 列出项目的所有 Atlas 数据库用户,请运行以下命令:
atlas dbusers list [options]
要使用 Atlas CLI 返回指定项目中单个 Atlas 数据库用户的详细信息,请运行以下命令:
atlas dbusers describe <username> [options]
要详细了解先前命令的语法和参数,请参阅 Atlas CLI 文档中的 atlas dbusers list 和 atlas dbusers describe。
查看数据库用户的 X.509 证书
如需使用 Atlas CLI 列出数据库用户的所有 Atlas 托管的未过期证书, 请运行以下命令:
atlas dbusers certs list <username> [options]
要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas dbusers certs list。
要使用 Atlas 管理 API 查看 Atlas 数据库用户,请参阅获取全部。
要在 Atlas 用户界面中查看 Atlas 数据库用户和 X.509 证书:
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
完成上述步骤后,将显示数据库和网络访问页面。
修改数据库用户
如需使用 Atlas CLI 更新项目的数据库用户,请运行以下命令:
atlas dbusers update <username> [options]
要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas dbusers update。
您可以通过 Atlas Administration API 更新数据库用户。要了解更多信息,请参阅更新一个。
要修改 Atlas 项目的现有用户:
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
完成上述步骤后,将显示数据库和网络访问页面。
删除数据库用户
如需使用 Atlas CLI 删除项目的数据库用户, 请运行以下命令:
atlas dbusers delete <username> [options]
要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas dbusers delete.。
您可以通过 Atlas Administration API 删除数据库用户。要了解更多信息,请参阅删除一个。
要使用 Atlas 用户界面删除 Atlas 项目的现有用户:
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
完成上述步骤后,将显示数据库和网络访问页面。