@@ -20,9 +20,9 @@ Authorization and Authentication
20
20
:depth: 2
21
21
:class: onecol
22
22
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.
26
26
27
27
Although authentication and authorization are closely connected,
28
28
authentication is distinct from authorization:
@@ -52,16 +52,15 @@ Features
52
52
|service-fullname| supports a variety of authentication methods to
53
53
ensure robust security.
54
54
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.
60
59
- For workload authentication, |service| supports OAuth2.0, allowing
61
60
seamless compatibility with authorization services and integration
62
61
into your federated :abbr:`IdP (Identity Provider)`.
63
62
64
- |service| requires all clients to authenticate to access {+atlas-ui+},
63
+ |service| requires all users to authenticate to access {+atlas-ui+},
65
64
|service| database, and {+atlas-admin-api+}. The following
66
65
authentication methods for each |service| resource ensure that
67
66
authentication is both secure and adaptable. |service| provides the
@@ -104,15 +103,13 @@ central identity provider. For UI access, |service| supports workforce
104
103
identity federation using :abbr:`SAML (Security Assertion Markup
105
104
Language)` 2.0. You can use any :abbr:`SAML (Security Assertion
106
105
Markup 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
108
107
complexity, credential rotation, and :abbr:`MFA (Multi-Factor
109
108
Authentication)` within your identity provider. |service| also supports
110
109
Google or Github account authentication.
111
110
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.
116
113
117
114
To learn more, see :ref:`atlas-federated-authentication`.
118
115
@@ -139,35 +136,29 @@ To learn more, see :ref:`atlas-enable-mfa`.
139
136
Recommendations for |service| Database
140
137
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
141
138
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.
148
140
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+}.
152
144
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.
156
148
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.
163
154
164
155
Workforce Identity Federation
165
156
`````````````````````````````
166
157
167
158
Workforce Identity Federation allows you to manage all authentication to
168
159
the |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
171
162
security policies such as password complexity, credential rotation, and
172
163
:abbr:`MFA (Multi-Factor Authentication)` within your identity provider.
173
164
@@ -176,16 +167,17 @@ To learn more, see :ref:`oidc-authentication-workforce`.
176
167
Workload Identity Federation
177
168
````````````````````````````
178
169
179
- Workload identity federation enables applications running in cloud
170
+ Workload Identity Federation enables applications running in cloud
180
171
environments like |aws|, |azure|, and Google Cloud to authenticate with
181
172
|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
183
174
users using |azure| Managed Identities, Google Service Accounts, or any
184
175
OAuth 2.0-compliant service. You can also use |aws| workload federation
185
176
through |aws| |iam| roles. These authentication mechanisms simplify
186
177
management and enhance security by allowing for passwordless access to
187
178
the |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
189
181
production. You shouldn't allow human users to connect except in the most
190
182
extreme break-glass emergency scenarios.
191
183
@@ -197,29 +189,64 @@ To learn more, see the following:
197
189
X.509 Client Certificates and SCRAM
198
190
```````````````````````````````````
199
191
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.
206
200
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
210
206
`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
+
213
240
214
241
Recommendations for {+atlas-admin-api+}
215
242
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
216
243
217
244
|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
220
247
private key serves as the password.
221
248
You 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
223
250
keys in Vault, see the blog
224
251
`Manage MongoDB Atlas Database Secrets in HashiCorp Vault <https://www.mongodb.com/blog/post/manage-atlas-database-secrets-hashicorp-vault>`__.
225
252
@@ -247,7 +274,7 @@ to the data access required for the role to perform its function.
247
274
This approach enables you to follow the principle of least privilege.
248
275
249
276
Additionally, 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.
251
278
This streamlines access management and ensures secure and organized role
252
279
assignments throughout the platform. You can grant access programmatically
253
280
based on the provisioning process of your orchestration layer.
@@ -266,7 +293,7 @@ both. Use Identity Federation to manage access by linking your identity
266
293
provider groups to |service| roles through group-role mappings.
267
294
268
295
We 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
270
297
as this makes the authorization process more secure and supports the
271
298
flexibility needed to programmatically assign :abbr:`IdP (Identity Provider)`
272
299
groups to |service| roles. You should restrict your company's domain from
@@ -319,8 +346,9 @@ commonly used roles can serve as a general guideline:
319
346
Don't allow this role in production environments. It has the
320
347
ability to view and edit data, including creating and dropping databases,
321
348
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
324
352
can grant them read-only access to the {+cluster+}\'s data and performance
325
353
statistics with the ``Project Data Access Read Only`` role.
326
354
@@ -337,9 +365,7 @@ access management by linking your Identity Provider (IdP) to |service|
337
365
for a more modern and streamlined authentication and authorization flow
338
366
for data access.
339
367
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
343
369
Provider)`, you can map groups to database users, simplifying access
344
370
control within the :abbr:`IdP (Identity Provider)`. However, for
345
371
workload identities, we recommend assigning roles directly using the
0 commit comments