@@ -66,33 +66,25 @@ authentication methods for each |service| resource ensure that
66
66
authentication is both secure and adaptable. |service| provides the
67
67
following authentication mechanisms:
68
68
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
-
91
69
Recommendations for {+atlas-ui+}
92
70
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
93
71
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.
96
88
97
89
Federated Authentication
98
90
````````````````````````
@@ -105,8 +97,7 @@ Language)` 2.0. You can use any :abbr:`SAML (Security Assertion
105
97
Markup Language)` compatible identity provider such as Okta, Microsoft
106
98
Entra ID, or Ping Identity to enforce security policies such as password
107
99
complexity, 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.
110
101
111
102
You must configure the IP access list in the {+atlas-ui+} to allow only connections
112
103
from IP ranges that include your users and application servers.
@@ -144,13 +135,14 @@ use :ref:`Workforce Identity Federation <oidc-authentication-workforce>` with {+
144
135
145
136
To configure workload (application) access to your |service|
146
137
database 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.
148
140
149
- We recommend :manual:`SCRAM </core/security-scram>`
150
- password authentication only for use in development or testing environments.
141
+ |service| also supports:
151
142
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>`
154
146
155
147
Workforce Identity Federation
156
148
`````````````````````````````
@@ -164,23 +156,25 @@ security policies such as password complexity, credential rotation, and
164
156
165
157
To learn more, see :ref:`oidc-authentication-workforce`.
166
158
167
- Workload Identity Federation
168
- ````````````````````````````
159
+ Workload Identity Federation and AWS IAM Role Authentication
160
+ ````````````````````````````````````````````````````````````
169
161
170
162
Workload 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
172
164
|service| without the need to manage separate database user credentials.
173
165
With Workload Identity Federation, you can manage |service| database
174
166
users 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
177
168
management and enhance security by allowing for passwordless access to
178
169
the |service| database.
179
170
180
171
We recommend Workload Identity Federation for all applications running in
181
172
production. You shouldn't allow human users to connect except in the most
182
173
extreme break-glass emergency scenarios.
183
174
175
+ You can also authenticate
176
+ through |aws| |iam| roles.
177
+
184
178
To learn more, see the following:
185
179
186
180
- :ref:`oidc-authentication-workload`
@@ -193,13 +187,18 @@ We recommend that you use Workforce or Workload Identity Federation
193
187
through an identity provider for security and ease of access to all aspects of the
194
188
|service| control and data plane.
195
189
196
- If you don't have an identity provider for federation, then
190
+ If you don't have an identity provider for federation,
197
191
|service| {+clusters+} also support X.509 client certificates for
198
192
user 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.
200
199
201
200
|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.
203
202
204
203
If you leverage X.509 or SCRAM authentication, we recommend that you use
205
204
third-party secrets manager like
@@ -211,6 +210,8 @@ To learn more, see the following manual pages:
211
210
- :manual:`X.509 </core/security-x.509/>`
212
211
- :manual:`SCRAM </core/security-scram/>`
213
212
213
+ .. _arch-center-just-in-time:
214
+
214
215
Just-in-Time Access
215
216
```````````````````
216
217
@@ -224,6 +225,8 @@ created for the following periods:
224
225
225
226
To learn more, see :ref:`mongodb-users`.
226
227
228
+ .. _arch-center-secrets:
229
+
227
230
Secrets Management
228
231
``````````````````
229
232
@@ -251,13 +254,22 @@ keys in Vault, see the blog
251
254
`Manage MongoDB Atlas Database Secrets in HashiCorp Vault <https://www.mongodb.com/blog/post/manage-atlas-database-secrets-hashicorp-vault>`__.
252
255
253
256
To 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>`.
258
265
259
266
To learn more, see :ref:`api-authentication`.
260
267
268
+ Recommendations for Deployments
269
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
270
+
271
+ To learn our recommendations for deployments, which relate to authentication, see :ref:`arch-center-hierarchy`.
272
+
261
273
{+service+} Features and Recommendations for Authorization
262
274
----------------------------------------------------------
263
275
@@ -317,7 +329,14 @@ commonly used roles can serve as a general guideline:
317
329
to a human, as it has the ability to change organization-wide settings and delete
318
330
configurations. This role should be assigned to a service account which you use
319
331
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.
321
340
322
341
* The ``Organization Member`` role should be for admins on the operations and
323
342
platform team that can view settings and configuration for the organization.
@@ -346,12 +365,14 @@ commonly used roles can serve as a general guideline:
346
365
Don't allow this role in production environments. It has the
347
366
ability to view and edit data, including creating and dropping databases,
348
367
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
352
370
can grant them read-only access to the {+cluster+}\'s data and performance
353
371
statistics with the ``Project Data Access Read Only`` role.
354
372
373
+ To grant read-only access to the {+cluster+}'s
374
+ data in production environments, use the ``Project Observability Viewer`` role.
375
+
355
376
To learn more, see :ref:`user-roles`.
356
377
357
378
Recommendations for Database
@@ -514,7 +535,7 @@ The following examples configure authentication and custom roles using
514
535
.. include:: /includes/examples/cli-example-auth-okta-stagingprod.rst
515
536
516
537
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
518
539
settings.
519
540
520
541
.. include:: /includes/examples/cli-example-auth-oidc-stagingprod.rst
0 commit comments