使用 Workload Identity Federation 配置MongoDB ,以对不同平台上的服务进行身份验证。 这增强了安全性并简化了服务身份管理。
重要
OpenID Connect (OIDC) 仅在Linux上受支持。
开始之前
确保您使用的是 MongoDB Enterprise。
要验证您是否正在使用MongoDB Enterprise,请将
--version命令行选项传递给mongod或mongos:mongod --version 在该命令的输出中,请查找字符串
modules: subscription或modules: enterprise,以确认您使用的是 MongoDB Enterprise 二进制文件。配置外部身份提供商。有关更多详细信息,请参阅为工作负载身份验证配置外部身份提供者。
步骤
使用 OpenID Connect (OIDC) 配置MongoDB服务器
要配置 MongoDB Server,请启用 MONGODB-OIDC 身份验证机制,并使用 oidcIdentityProviders 指定身份提供商 (IDP) 配置。
注意
为 Workload Identity Federation 配置MongoDB时,请将 中的supportsHumanFlows oidcIdentityProviders字段设立为false 。
您可以使用配置文件或命令行来配置MongoDB服务器。
要使用配置文件,请在文件中指定以下参数:
setParameter:    authenticationMechanisms: MONGODB-OIDC    oidcIdentityProviders: '[ {       "issuer": "https://okta-test.okta.com",       "audience": "example@kernel.mongodb.com",       "authNamePrefix": "okta-issuer",       "authorizationClaim": "groups",       "supportsHumanFlows": false,    } ]' 
要指定多个身份提供者,请将其他对象添加到 oidcIdentityProviders大量中。当您指定多个身份提供者时,必须为每个提供商指定 matchPattern。示例:
setParameter:    authenticationMechanisms: MONGODB-OIDC    oidcIdentityProviders: '[ {       "issuer": "https://okta-test.okta.com",       "audience": "example@kernel.mongodb.com",       "authNamePrefix": "okta-issuer",       "authorizationClaim": "groups",       "supportsHumanFlows": false,    }, {       "issuer": "https://azure-test.azure.com",       "audience": "example2@kernel.mongodb.com",       "authNamePrefix": "azure-issuer",       "authorizationClaim": "groups",       "supportsHumanFlows": false,    } ]' 
要使用命令行,请指定以下初创企业选项:
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ {    "issuer": "https://okta-test.okta.com",    "audience": "example@kernel.mongodb.com",    "authNamePrefix": "okta-issuer",    "authorizationClaim": "groups",    "supportsHumanFlows": false, } ]' 
要指定多个身份提供者,请将其他对象添加到 oidcIdentityProviders大量中。当您指定多个身份提供者时,必须为每个提供商指定 matchPattern。示例:
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ {    "issuer": "https://okta-test.okta.com",    "audience": "example@kernel.mongodb.com",    "authNamePrefix": "okta-issuer",    "authorizationClaim": "groups",    "supportsHumanFlows": false }, {    "issuer": "https://azure-test.azure.com",    "audience": "example2@kernel.mongodb.com",    "authNamePrefix": "azure-issuer",    "authorizationClaim": "groups",    "supportsHumanFlows": false } ]' 
(可选)启用内部授权
要启用内部授权,请将 oidcIdentityProviders 参数的 useAuthorizationClaim字段设立为 false。 此设置依赖于用户文档而不是来自身份提供商的授权声明,从而实现更灵活的用户管理。
重要
如果将 useAuthorizationClaim 设立为 false,则不要包含 authorizationClaim 字段。
setParameter:    authenticationMechanisms: MONGODB-OIDC    oidcIdentityProviders: '[ {       "issuer": "https://okta-test.okta.com",       "audience": "example@kernel.mongodb.com",       "authNamePrefix": "okta-issuer",       "useAuthorizationClaim": false,       "supportsHumanFlows": false,    } ]' 
要指定多个身份提供者,请将其他对象添加到 oidcIdentityProviders大量中。示例:
setParameter:    authenticationMechanisms: MONGODB-OIDC       oidcIdentityProviders: '[ {          "issuer": "https://okta-test.okta.com",          "audience": "example@kernel.mongodb.com",          "authNamePrefix": "okta-issuer",          "useAuthorizationClaim": false,          "supportsHumanFlows": false,       }, {          "issuer": "https://azure-test.azure.com",          "audience": "example2@kernel.mongodb.com",          "authNamePrefix": "azure-issuer",          "useAuthorizationClaim": false,          "supportsHumanFlows": false,       } ]' 
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ {    "issuer": "https://okta-test.okta.com",    "audience": "example@kernel.mongodb.com",    "authNamePrefix": "okta-issuer",    "useAuthorizationClaim": false,    "supportsHumanFlows": false, } ]' 
要指定多个身份提供者,请将其他对象添加到 oidcIdentityProviders大量中。示例:
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC --setParameter \ 'oidcIdentityProviders=[ {       "issuer": "https://okta-test.okta.com",       "audience": "example@kernel.mongodb.com",       "authNamePrefix": "okta-issuer",       "useAuthorizationClaim": false,       "supportsHumanFlows": false,    }, {       "issuer": "https://azure-test.azure.com",       "audience": "example2@kernel.mongodb.com",       "authNamePrefix": "azure-issuer",       "useAuthorizationClaim": false,       "supportsHumanFlows": false,    } ]' 
当您将useAuthorizationClaim设立为false时,使用MONGODB-OIDC机制进行身份验证的用户将从$external中的用户文档获取授权权限。 对于身份提供商者的用户,每次基于 OIDC 的身份验证尝试时,服务器都会搜索 _id 与 authNamePrefix/principalName 声明的值匹配的用户文档。