@@ -66,33 +66,25 @@ authentication methods for each |service| resource ensure that
6666authentication is both secure and adaptable. |service| provides the
6767following authentication mechanisms:
6868
69- Recommendations for Deployment
70- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71-
72- In a dedicated deployment, resources are allocated exclusively. We
73- recommend this as it provides high security and performance. However,
74- you must configure strict access controls.
75-
76- We recommend using a dedicated {+cluster+} deployment for each
77- application as this ensures that resources are allocated exclusively
78- to a single access point and provides isolation for both security and
79- performance.
80-
81- While a shared deployment model--where multiple applications and
82- development teams share a multi-tenant {+cluster+}--can increase the
83- cost efficiency of the deployment, it requires tight coordination
84- between the applications' data models and access patterns. These must
85- be integrated into the provisioning process of the {+cluster+} to
86- ensure that fine-grained custom roles are programmatically configured,
87- providing strong isolation between the access of different applications
88- and teams. As a result, this pattern is generally used
89- in development environments where the risk of exposure is lower.
90-
9169Recommendations for {+atlas-ui+}
9270~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
9371
94- |service| supports the following options for {+atlas-ui+}
95- authentication.
72+ We recommend federated authentication for {+atlas-ui+} access. To
73+ configure federated authentication, you must create {+service+}
74+ credentials or log in with Google or Github.
75+
76+ For {+service+} credentials,
77+ we recommend that you use a strong password accompanied by a
78+ phishing-resistant :abbr:`MFA (Multi-Factor Authentication)`, such as
79+ biometrics. We highly recommend that you set up a secondary
80+ :abbr:`MFA (Multi-Factor Authentication)` factor
81+ to avoid account lock-outs. To ensure
82+ :abbr:`MFA (Multi-Factor Authentication)` access for {+service+}
83+ credentials, turn on :abbr:`MFA (Multi-Factor Authentication)`
84+ enforcement in the Organization Settings. After you set up federation
85+ for your domain, you should use {+service+} credentials to
86+ authenticate only in the emergency break-glass scenarios when federated
87+ authentication is broken.
9688
9789Federated Authentication
9890````````````````````````
@@ -105,8 +97,7 @@ Language)` 2.0. You can use any :abbr:`SAML (Security Assertion
10597Markup Language)` compatible identity provider such as Okta, Microsoft
10698Entra ID, or Ping Identity to enforce security policies such as password
10799complexity, credential rotation, and :abbr:`MFA (Multi-Factor
108- Authentication)` within your identity provider. |service| also supports
109- Google or Github account authentication.
100+ Authentication)` within your identity provider.
110101
111102You must configure the IP access list in the {+atlas-ui+} to allow only connections
112103from IP ranges that include your users and application servers.
@@ -144,13 +135,14 @@ use :ref:`Workforce Identity Federation <oidc-authentication-workforce>` with {+
144135
145136To configure workload (application) access to your |service|
146137database using MongoDB drivers, use :ref:`Workload Identity Federation <oidc-authentication-workload>`,
147- AWS-IAM authentication, or X.509 certificate authentication.
138+ AWS-IAM authentication, or X.509 certificate authentication. We recommend :manual:`SCRAM </core/security-scram>`
139+ password authentication for use only in development or testing environments.
148140
149- We recommend :manual:`SCRAM </core/security-scram>`
150- password authentication only for use in development or testing environments.
141+ |service| also supports:
151142
152- |Service| also supports creating temporary database users to configure just-in-time
153- database access.
143+ - :ref:`Creating temporary database users <arch-center-just-in-time>`
144+ with just-in-time database access
145+ - :ref:`Third-party secrets manangement <arch-center-secrets>`
154146
155147Workforce Identity Federation
156148`````````````````````````````
@@ -164,23 +156,25 @@ security policies such as password complexity, credential rotation, and
164156
165157To learn more, see :ref:`oidc-authentication-workforce`.
166158
167- Workload Identity Federation
168- ````````````````````````````
159+ Workload Identity Federation and AWS IAM Role Authentication
160+ ````````````````````````````````````````````````````````````
169161
170162Workload Identity Federation enables applications running in cloud
171- environments like |aws|, | azure|, and Google Cloud to authenticate with
163+ environments like |azure| and Google Cloud to authenticate with
172164|service| without the need to manage separate database user credentials.
173165With Workload Identity Federation, you can manage |service| database
174166users using |azure| Managed Identities, Google Service Accounts, or any
175- OAuth 2.0-compliant service. You can also use |aws| workload federation
176- through |aws| |iam| roles. These authentication mechanisms simplify
167+ OAuth 2.0-compliant service. These authentication mechanisms simplify
177168management and enhance security by allowing for passwordless access to
178169the |service| database.
179170
180171We recommend Workload Identity Federation for all applications running in
181172production. You shouldn't allow human users to connect except in the most
182173extreme break-glass emergency scenarios.
183174
175+ You can also authenticate
176+ through |aws| |iam| roles.
177+
184178To learn more, see the following:
185179
186180- :ref:`oidc-authentication-workload`
@@ -193,13 +187,18 @@ We recommend that you use Workforce or Workload Identity Federation
193187through an identity provider for security and ease of access to all aspects of the
194188|service| control and data plane.
195189
196- If you don't have an identity provider for federation, then
190+ If you don't have an identity provider for federation,
197191|service| {+clusters+} also support X.509 client certificates for
198192user authentication. X.509 certificates provide the security of mutual TLS,
199- making them suitable for staging and production environments.
193+ making them suitable for staging and production environments, and you
194+ can bring your own certificate authority for use with X.509.
195+ The disadvantage of X.509 is that you must manage certificates and
196+ the security of these certificates on the application side, while
197+ Workload Identity Federation allows for passwordless access and easier
198+ application security.
200199
201200|service| {+clusters+} also support SCRAM password authentication for user authentication,
202- but we only recommend SCRAM for use in development and test environments.
201+ but we recommend SCRAM only for use in development and test environments.
203202
204203If you leverage X.509 or SCRAM authentication, we recommend that you use
205204third-party secrets manager like
@@ -211,6 +210,8 @@ To learn more, see the following manual pages:
211210- :manual:`X.509 </core/security-x.509/>`
212211- :manual:`SCRAM </core/security-scram/>`
213212
213+ .. _arch-center-just-in-time:
214+
214215Just-in-Time Access
215216```````````````````
216217
@@ -224,6 +225,8 @@ created for the following periods:
224225
225226To learn more, see :ref:`mongodb-users`.
226227
228+ .. _arch-center-secrets:
229+
227230Secrets Management
228231``````````````````
229232
@@ -251,13 +254,22 @@ keys in Vault, see the blog
251254`Manage MongoDB Atlas Database Secrets in HashiCorp Vault <https://www.mongodb.com/blog/post/manage-atlas-database-secrets-hashicorp-vault>`__.
252255
253256To further enhance security and
254- minimize the risk of unauthorized access, follow best practices for
255- rotating |api| keys regularly. To learn how to rotate these keys with
256- {+vault+}, see
257- `the Hashicorp documentation <https://developer.hashicorp.com/vault/docs/secrets/mongodbatlas>`__.
257+ minimize the risk of unauthorized access:
258+
259+ - Follow best practices for
260+ rotating |api| keys regularly. To learn how to rotate these keys with
261+ {+vault+}, see `the Hashicorp documentation <https://developer.hashicorp.com/vault/docs/secrets/mongodbatlas>`__.
262+
263+ - Use the IP access list for your API keys. To learn more, see
264+ :atlas:`Require an IP Access List for the {+atlas-admin-api+} </configure-api-access/#optional--require-an-ip-access-list-for-the-atlas-administration-api>`.
258265
259266To learn more, see :ref:`api-authentication`.
260267
268+ Recommendations for Deployments
269+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
270+
271+ To learn our recommendations for deployments, which relate to authentication, see :ref:`arch-center-hierarchy`.
272+
261273{+service+} Features and Recommendations for Authorization
262274----------------------------------------------------------
263275
@@ -317,7 +329,14 @@ commonly used roles can serve as a general guideline:
317329 to a human, as it has the ability to change organization-wide settings and delete
318330 configurations. This role should be assigned to a service account which you use
319331 only to initially set up and configure the organization. Minimize configuration
320- changes after the initial creation.
332+ changes after the initial creation. To avoid account lockouts, you
333+ can create the following items:
334+
335+ - SAML Organization Owner group with
336+ :ref:`arch-center-just-in-time`.
337+ - API key with the Organization Owner role. Keep it in a
338+ secure place with strong access management for break-glass
339+ emergency scenarios.
321340
322341* The ``Organization Member`` role should be for admins on the operations and
323342 platform team that can view settings and configuration for the organization.
@@ -346,12 +365,14 @@ commonly used roles can serve as a general guideline:
346365 Don't allow this role in production environments. It has the
347366 ability to view and edit data, including creating and dropping databases,
348367 collections, and indexes on the {+cluster+}, which is useful for rapid
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
368+ experimentation and development.
369+ If you are not comfortable giving development teams this level of access in the development environment, you
352370 can grant them read-only access to the {+cluster+}\'s data and performance
353371 statistics with the ``Project Data Access Read Only`` role.
354372
373+ To grant read-only access to the {+cluster+}'s
374+ data in production environments, use the ``Project Observability Viewer`` role.
375+
355376To learn more, see :ref:`user-roles`.
356377
357378Recommendations for Database
@@ -514,7 +535,7 @@ The following examples configure authentication and custom roles using
514535 .. include:: /includes/examples/cli-example-auth-okta-stagingprod.rst
515536
516537 Run the following command to create an :abbr:`OIDC (OpenID
517- Connect)`-compatible identity provider from your federation
538+ Connect)`-compatible identity providers from your federation
518539 settings.
519540
520541 .. include:: /includes/examples/cli-example-auth-oidc-stagingprod.rst
0 commit comments