@@ -20,9 +20,9 @@ Authorization and Authentication
2020 :depth: 2
2121 :class: onecol
2222
23- Authentication is the process of verifying the identity of a client .
24- When access control (authorization) is enabled, |service| requires all
25- clients to authenticate themselves in order to determine their access.
23+ Authentication is the process of verifying the identity of a user .
24+ |service| requires all users to authenticate themselves in order
25+ to determine their access.
2626
2727Although authentication and authorization are closely connected,
2828authentication is distinct from authorization:
@@ -52,16 +52,15 @@ Features
5252|service-fullname| supports a variety of authentication methods to
5353ensure robust security.
5454
55- - The best practice for user authentication, |service| integrates
56- seamlessly with identity
57- providers (IdP) using federated authentication through OpenID Connect
58- (OIDC) or SAML 2.0, and enhances security with Multi-Factor
59- Authentication (MFA) ensuring a modern authentication and security posture.
55+ - The best practice for user authentication is utilizing |service|'s
56+ seamless integration with identity providers using federated authentication
57+ through OpenID Connect (OIDC) or SAML 2.0, and enhancing security with Multi-Factor
58+ Authentication (MFA) to ensure a modern authentication and security posture.
6059- For workload authentication, |service| supports OAuth2.0, allowing
6160 seamless compatibility with authorization services and integration
6261 into your federated :abbr:`IdP (Identity Provider)`.
6362
64- |service| requires all clients to authenticate to access {+atlas-ui+},
63+ |service| requires all users to authenticate to access {+atlas-ui+},
6564|service| database, and {+atlas-admin-api+}. The following
6665authentication methods for each |service| resource ensure that
6766authentication is both secure and adaptable. |service| provides the
@@ -104,15 +103,13 @@ central identity provider. For UI access, |service| supports workforce
104103identity federation using :abbr:`SAML (Security Assertion Markup
105104Language)` 2.0. You can use any :abbr:`SAML (Security Assertion
106105Markup Language)` compatible identity provider such as Okta, Microsoft
107- Entra ID, or PingOne to enforce security policies such as password
106+ Entra ID, or Ping Identity to enforce security policies such as password
108107complexity, credential rotation, and :abbr:`MFA (Multi-Factor
109108Authentication)` within your identity provider. |service| also supports
110109Google or Github account authentication.
111110
112- {+atlas-ui+} manages user identities in a MongoDB-controlled Okta
113- instance, encrypted and stored securely. You must also configure the IP
114- access list to allow only connections from IP ranges that include your
115- users and application servers.
111+ You must configure the IP access list in the {+atlas-ui+} to allow only connections
112+ from IP ranges that include your users and application servers.
116113
117114To learn more, see :ref:`atlas-federated-authentication`.
118115
@@ -139,35 +136,29 @@ To learn more, see :ref:`atlas-enable-mfa`.
139136Recommendations for |service| Database
140137~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
141138
142- |service| supports the following options for |service| database
143- authentication. In development and test environments, create a separate
144- project with {+cluster+} and grant users ``Project Data Access
145- Admin`` roles. In staging and production environments, we recommend
146- granting only programmatic access by using :atlas:`Workforce Identity
147- Federation </workforce-oidc/>`.
139+ |service| supports various database authentication mechanisms.
148140
149- |service| also supports creating temporary database users
150- that automatically expire after the predefined times. A user can be
151- created for the following periods:
141+ To configure workforce (human user) access to your |service|
142+ database via tools such as {+mongodbsh+} and Compass,
143+ use :ref:`Workforce Identity Federation <oidc-authentication-workforce>` with {+oidc+}.
152144
153- - 6 hours
154- - 1 day
155- - 1 week
145+ To configure workload (application) access to your |service|
146+ database using MongoDB drivers, use :ref:`Workload Identity Federation <oidc-authentication-workload>`,
147+ AWS-IAM authentication, or X.509 certificate authentication.
156148
157- We recommend using a secrets manager like `HashiCorp Vault
158- <https://developer.hashicorp.com/vault/docs/secrets/databases/mongodbatlas>`__
159- to generate database credentials dynamically based on configured
160- roles for |service| databases. To learn more, see :website:`Manage
161- MongoDB Atlas Database Secrets in HashiCorp Vault
162- </blog/post/manage-atlas-database-secrets-hashicorp-vault>`.
149+ We recommend :manual:`SCRAM </core/security-scram>`
150+ password authentication only for use in development or testing environments.
151+
152+ |Service| also supports creating temporary database users to configure just-in-time
153+ database access.
163154
164155Workforce Identity Federation
165156`````````````````````````````
166157
167158Workforce Identity Federation allows you to manage all authentication to
168159the |service| database through your identity provider. For database
169- access, we recommend :abbr:`OIDC (OpenID Connect)` -compatible identity
170- provider such as Okta, Microsoft Entra ID, or PingOne to enforce
160+ access, we recommend {+oidc+} -compatible identity
161+ providers such as Okta, Microsoft Entra ID, or Ping Identity to enforce
171162security policies such as password complexity, credential rotation, and
172163:abbr:`MFA (Multi-Factor Authentication)` within your identity provider.
173164
@@ -176,16 +167,17 @@ To learn more, see :ref:`oidc-authentication-workforce`.
176167Workload Identity Federation
177168````````````````````````````
178169
179- Workload identity federation enables applications running in cloud
170+ Workload Identity Federation enables applications running in cloud
180171environments like |aws|, |azure|, and Google Cloud to authenticate with
181172|service| without the need to manage separate database user credentials.
182- With workload identity federation , you can manage |service| database
173+ With Workload Identity Federation , you can manage |service| database
183174users using |azure| Managed Identities, Google Service Accounts, or any
184175OAuth 2.0-compliant service. You can also use |aws| workload federation
185176through |aws| |iam| roles. These authentication mechanisms simplify
186177management and enhance security by allowing for passwordless access to
187178the |service| database.
188- We recommend workload identity federation for all applications running in
179+
180+ We recommend Workload Identity Federation for all applications running in
189181production. You shouldn't allow human users to connect except in the most
190182extreme break-glass emergency scenarios.
191183
@@ -197,29 +189,64 @@ To learn more, see the following:
197189X.509 Client Certificates and SCRAM
198190```````````````````````````````````
199191
200- We recommend that you leverage a third-party federated identity provider
201- for accessing all aspects of the |service| control and data plane.
202- |service| {+clusters+} do support :manual:`x.509
203- </core/security-x.509/>` client certificates and :manual:`SCRAM
204- </core/security-scram/>` for user authentication, but you should use these
205- only if you don't have an identity provider for federation.
192+ We recommend that you use Workforce or Workload Identity Federation
193+ through an identity provider for security and ease of access to all aspects of the
194+ |service| control and data plane.
195+
196+ If you don't have an identity provider for federation, then
197+ |service| {+clusters+} also support X.509 client certificates for
198+ user authentication. X.509 certificates provide the security of mutual TLS,
199+ making them suitable for staging and production environments.
206200
207- If you
208- leverage x.509 or SCRAM authentication, we recommend that you use complex
209- passwords and store credentials in a third-party secrets manager like
201+ |service| {+clusters+} also support SCRAM password authentication for user authentication,
202+ but we only recommend SCRAM for use in development and test environments.
203+
204+ If you leverage X.509 or SCRAM authentication, we recommend that you use
205+ third-party secrets manager like
210206`HashiCorp Vault <https://developer.hashicorp.com/vault/docs/secrets/databases/mongodbatlas>`__
211- or |aws|. Alternatively, implement automatic credential rotation or
212- create a one-time password through your PAM system for each access.
207+ or |aws| Secrets Manager to generate and store complex database credentials.
208+
209+ To learn more, see the following manual pages:
210+
211+ - :manual:`X.509 </core/security-x.509/>`
212+ - :manual:`SCRAM </core/security-scram/>`
213+
214+ Just-in-Time Access
215+ ```````````````````
216+
217+ |service| also supports creating temporary database users
218+ that automatically expire after the predefined times. A user can be
219+ created for the following periods:
220+
221+ - 6 hours
222+ - 1 day
223+ - 1 week
224+
225+ To learn more, see :ref:`mongodb-users`.
226+
227+ Secrets Management
228+ ``````````````````
229+
230+ We recommend using a third-party secrets manager like `HashiCorp Vault
231+ <https://developer.hashicorp.com/vault/docs/secrets/databases/mongodbatlas>`__
232+ or |aws| Secrets Manager to generate and store complex database credentials.
233+ A secrets manager can generate database credentials dynamically based on configured
234+ roles for |service| databases.
235+
236+ To learn more, see the blog :website:`Manage
237+ MongoDB Atlas Database Secrets in HashiCorp Vault
238+ </blog/post/manage-atlas-database-secrets-hashicorp-vault>`.
239+
213240
214241Recommendations for {+atlas-admin-api+}
215242~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
216243
217244|service| provides |api| key-based authentication to securely manage
218- programmatic access. It uses |http| Digest to protect requests, where
219- the |api| public key functions as the username, and the corresponding
245+ programmatic access. It uses |http| Digest authentication to protect requests.
246+ The |api| public key functions as the username, and the corresponding
220247private key serves as the password.
221248You should store these keys in a third party secrets management system,
222- such as |aws| or {+vault+}. To learn how to securely store these
249+ such as |aws| Secrets Manager or {+vault+}. To learn how to securely store these
223250keys in Vault, see the blog
224251`Manage MongoDB Atlas Database Secrets in HashiCorp Vault <https://www.mongodb.com/blog/post/manage-atlas-database-secrets-hashicorp-vault>`__.
225252
@@ -247,7 +274,7 @@ to the data access required for the role to perform its function.
247274This approach enables you to follow the principle of least privilege.
248275
249276Additionally, by integrating |service| with a federated identity provider,
250- you can map identity provider groups automatically to |service| roles.
277+ you can use just-in-time provisioning by mapping identity provider groups to |service| roles.
251278This streamlines access management and ensures secure and organized role
252279assignments throughout the platform. You can grant access programmatically
253280based on the provisioning process of your orchestration layer.
@@ -266,7 +293,7 @@ both. Use Identity Federation to manage access by linking your identity
266293provider groups to |service| roles through group-role mappings.
267294
268295We recommend that you use a modern federated Identity Provider (IdP) that
269- provides SSO, OIDC, and SAML login such as Azure Entra ID, Okta, or Ping
296+ provides SSO with SAML such as Azure Entra ID, Okta, or Ping Identity
270297as this makes the authorization process more secure and supports the
271298flexibility needed to programmatically assign :abbr:`IdP (Identity Provider)`
272299groups to |service| roles. You should restrict your company's domain from
@@ -319,8 +346,9 @@ commonly used roles can serve as a general guideline:
319346 Don't allow this role in production environments. It has the
320347 ability to view and edit data, including creating and dropping databases,
321348 collections, and indexes on the {+cluster+}, which is useful for rapid
322- experimentation and development. If you are uncomfortable giving
323- development teams this level of access in the development environment, you
349+ experimentation and development. To grant read-only access to the {+cluster+}'s
350+ data in production environments, use the ``Project Observability Viewer`` role.
351+ If you are uncomfortable giving development teams this level of access in the development environment, you
324352 can grant them read-only access to the {+cluster+}\'s data and performance
325353 statistics with the ``Project Data Access Read Only`` role.
326354
@@ -337,9 +365,7 @@ access management by linking your Identity Provider (IdP) to |service|
337365for a more modern and streamlined authentication and authorization flow
338366for data access.
339367
340- Only allow workload authentication in production. You can leverage workforce
341- authentication during development and in lower environments. By configuring
342- :atlas:`Group Membership </workforce-oidc/>` in your :abbr:`IdP (Identity
368+ By configuring :atlas:`Group Membership </workforce-oidc/>` in your :abbr:`IdP (Identity
343369Provider)`, you can map groups to database users, simplifying access
344370control within the :abbr:`IdP (Identity Provider)`. However, for
345371workload identities, we recommend assigning roles directly using the
0 commit comments