使用 Workload Identity Federation 配置MongoDB ,以对不同平台上的服务进行身份验证。 这增强了安全性并简化了服务身份管理。
重要
OpenID Connect (OIDC) 仅在Linux上受支持。
开始之前
Configure your external IdP. For more details, see Configure Workload Identity Federation.
步骤
使用 OpenID Connect (OIDC) 配置MongoDB服务器
要配置MongoDB服务器,启用MONGODB-OIDC身份验证机制并使用oidcIdentityProviders指定身份提供程序配置。
注意
为 Workload Identity Federation 配置MongoDB时,请将 中的supportsHumanFlows oidcIdentityProviders字段设立为false 。
您可以使用配置文件或命令行来配置MongoDB服务器。
要使用配置文件,请在文件中指定以下参数:
setParameter: authenticationMechanisms: "MONGODB-OIDC,SCRAM-SHA-256" oidcIdentityProviders: | [ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "authorizationClaim": "groups", "supportsHumanFlows": false } ]
要指定多个 IdP,请将其他对象添加到 oidcIdentityProviders数组中。示例:
setParameter: authenticationMechanisms: "MONGODB-OIDC,SCRAM-SHA-256" 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,SCRAM-SHA-256 --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "authorizationClaim": "groups", "supportsHumanFlows": false } ]'
要指定多个 IdP,请将其他对象添加到 oidcIdentityProviders数组中。示例:
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC,SCRAM-SHA-256 --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。此设置依靠用户 document 而不是来自身份提供程序 的授权声明,从而实现更灵活的用户管理。
重要
如果将 useAuthorizationClaim 设立为 false,则不要包含 authorizationClaim 字段。
setParameter: authenticationMechanisms: "MONGODB-OIDC,SCRAM-SHA-256" oidcIdentityProviders: | [ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "useAuthorizationClaim": false, "supportsHumanFlows": false } ]
要指定多个 IdP,请将其他对象添加到 oidcIdentityProviders数组中。示例:
setParameter: authenticationMechanisms: "MONGODB-OIDC,SCRAM-SHA-256" 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,SCRAM-SHA-256 --setParameter \ 'oidcIdentityProviders=[ { "issuer": "https://okta-test.okta.com", "audience": "example@kernel.mongodb.com", "authNamePrefix": "okta-issuer", "useAuthorizationClaim": false, "supportsHumanFlows": false } ]'
要指定多个 IdP,请将其他对象添加到 oidcIdentityProviders数组中。示例:
mongod --auth --setParameter authenticationMechanisms=MONGODB-OIDC,SCRAM-SHA-256 --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中的用户 document 获取授权权限。对于 IdP 用户每次基于 OIDC 的身份验证尝试,服务器都会搜索 _id 与 authNamePrefix/principalName 声明的值匹配的用户 document。
(有条件)内部 X509 TLS 的 CA 证书
对于使用由内部证书颁发机构 (CA) 签名的 X509 TLS 证书的环境,您必须将该 CA 证书添加到系统 CA 证书捆绑包中,以便 mongod 可以与身份提供程序通信。这应用于用户身份验证,也应用于使用回调方法时的工作负载身份验证。省略此步骤可能会导致 OIDC SSL 证书或 JWT 密钥验证错误。