使用工作负载身份联合配置 MongoDB
使用工作负载身份联合配置 MongoDB,以在不同平台间对服务进行身份验证。这增强了安全性并简化了服务身份管理。
开始之前
确保您正在使用 MongoDB Enterprise。
为了验证您正在使用 MongoDB Enterprise,请将
--version
命令行选项传递给mongod
或mongos
:mongod --version 在命令输出的结果中查找字符串
modules: subscription
或modules: enterprise
以确认您正在使用 MongoDB Enterprise 二进制文件。配置您的外部身份提供者。更多详细信息,请参阅配置外部身份提供者。
步骤
使用 OpenID Connect (OIDC) 配置 MongoDB 服务器
为了配置MongoDB服务器,启用MONGODB-OIDC身份验证机制,并使用oidcIdentityProviders
来指定身份提供者(IDP)配置。
注意:
当配置MongoDB以负载身份联盟时,将oidcIdentityProviders
中的supportsHumanFlows
字段设置为false
。
您可以使用配置文件或命令行来配置MongoDB服务器。
要使用配置文件,在文件中指定两个参数:
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: [ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "matchPattern": "@mongodb.com$", "JWKSPollSecs": 86400 } ]
要使用命令行,指定以下内容:
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "matchPattern": "@mongodb.com$", "JWKSPollSecs": 86400 } ]'
(可选) 启用内部授权
要启用内部授权,将oidcIdentityProviders
参数中的useAuthorizationClaim
字段设置为false
。此设置通过依赖于用户文档而不是来自身份提供者的授权声明,启用更灵活的用户管理。
setParameter: authenticationMechanisms: MONGODB-OIDC oidcIdentityProviders: [ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "matchPattern": "@mongodb.com$", "useAuthorizationClaim": "false", "JWKSPollSecs": 86400 } ]
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "matchPattern": "@mongodb.com$", "useAuthorizationClaim": "false", "JWKSPollSecs": 86400 } ]'
当将useAuthorizationClaim
设置为false
时,使用MONGODB-OIDC
机制进行身份验证的用户从$external
中的用户文档中获取其授权权限。服务器为您的身份提供者的每个用户进行基于OIDC的身份验证尝试时,都会搜索一个具有与authNamePrefix/principalName
声明值匹配的_id
的用户文档。
重要
如果此字段设置为false
,不要包含authorizationClaim
字段。