Skip to content

Commit 5e98e46

Browse files
authored
Adds recs sections to security pages (#37)
1 parent bce78df commit 5e98e46

File tree

3 files changed

+145
-46
lines changed

3 files changed

+145
-46
lines changed

source/auditing-logging.txt

Lines changed: 63 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,21 @@ Auditing and Logging
99
.. contents:: On this page
1010
:local:
1111
:backlinks: none
12-
:depth: 1
12+
:depth: 2
1313
:class: onecol
1414

1515
To monitor and log |service| platform activities, use auditing and logs.
1616

17-
{+service+} Features and Best Practices for Auditing and Logging
18-
----------------------------------------------------------------
17+
{+service+} Features and Recommendations for Auditing and Logging
18+
-----------------------------------------------------------------
19+
20+
Features
21+
~~~~~~~~
1922

2023
.. _auditing:
2124

2225
Auditing
23-
~~~~~~~~
26+
````````
2427

2528
Database auditing lets you track system activity for deployments with
2629
multiple users. As a |service| administrator, you can:
@@ -53,7 +56,7 @@ multiple users. As a |service| administrator, you can:
5356
.. _accessing-audit-logs:
5457

5558
Accessing Audit Logs
56-
~~~~~~~~~~~~~~~~~~~~~
59+
````````````````````
5760

5861
.. include:: /includes/cloud-docs/logs.rst
5962

@@ -77,9 +80,61 @@ for an organization or project.
7780
To perform a full audit, you can use a combination of audit logs,
7881
the ``mongodb.log``, and :ref:`the project activity feed <view-activity-feed>`.
7982

80-
You can use the ``atlas deployments logs`` command in the {+atlas-cli+}
81-
to retrieve deployment logs. To learn more,
82-
see :atlas:`Atlas Deployment Logs </cli/current/command/atlas-deployments-logs/>`.
83+
Recommendations for Auditing
84+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85+
86+
For development and testing environments, do not enable auditing. This
87+
saves costs in your non-production environments.
88+
89+
For staging and production environments, enable auditing for
90+
additional security. We recommend that you audit the following events at a minimum:
91+
92+
- Failed logon
93+
- Session activity
94+
- Logon and logoff
95+
- Attempts to perform unauthorized functions
96+
- Password change
97+
- Database User Access Changes
98+
- DDL & System configuration stored procedures
99+
- Modification of Native audit
100+
- Run a backup or restore
101+
- Alter DBMS native audit settings
102+
- Alter security
103+
- Database Start and Stop Commands
104+
105+
For all of the previous events, you should include the following
106+
information at a minimum:
107+
108+
- Session ID
109+
- Client hostname and IP address
110+
- Database server hostname and IP address
111+
- Database user
112+
- OS user
113+
- Database name
114+
- Service/instance name
115+
- Port
116+
- Application
117+
- Query
118+
- SQL command
119+
- Object
120+
- Timestamp
121+
- Error code (if applicable)
122+
123+
Recommendations for Audit Logs
124+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
125+
126+
To integrate with tools beyond the built-in integrations, we recommend
127+
that you retrieve logs with the following tools and feed the JSON-formatted output to your external tools:
128+
129+
- Use the ``atlas deployments logs`` command in the {+atlas-cli+}
130+
to retrieve deployment logs. To learn more,
131+
see :atlas:`Atlas Deployment Logs
132+
</cli/current/command/atlas-deployments-logs/>`.
133+
- Use the {+atlas-admin-api+} endpoints for :oas-atlas-tag:`Logs <MongoDB-Cloud-Users>` and :oas-atlas-tag:`Project Events <Events>` to
134+
retrieve deployment logs and lists of project events.
135+
- If you use |aws|, you can continually push logs to an |aws| S3
136+
bucket. To learn more, see the
137+
:oas-atlas-tag:`Push-Based Log Export <Push-Based-Log-Export>` {+atlas-admin-api+} endpoints.
83138

84139
Examples
85140
--------

source/data-encryption.txt

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,44 +9,59 @@ Data Encryption
99
.. contents:: On this page
1010
:local:
1111
:backlinks: none
12-
:depth: 1
12+
:depth: 2
1313
:class: onecol
1414

15-
|service| offers encryption features to protect data while in transit, at rest, and in use—safeguarding data through its full lifecycle.
15+
|service| offers encryption features to protect data while in transit, at rest, and in use to safeguard data through its full lifecycle.
1616

17-
Encryption in transit
18-
~~~~~~~~~~~~~~~~~~~~~~~
17+
{+service+} Features and Recommendations for Data Encryption
18+
------------------------------------------------------------
19+
20+
Features
21+
~~~~~~~~
22+
23+
Encryption in Transit
24+
`````````````````````
1925

2026
Encryption in transit secures data during transmission between clients and servers, preventing unauthorized access or tampering.
2127
In |service|, all network traffic to {+clusters+} is protected by Transport Layer Security (TLS), which is enabled by default and cannot be disabled.
2228
Data transmitted to and between nodes is encrypted in transit using TLS, ensuring secure communication throughout.
2329

24-
Encryption at rest
25-
~~~~~~~~~~~~~~~~~~~~
30+
Encryption at Rest
31+
``````````````````
2632

2733
Encryption at rest ensures that all data on disk are encrypted.
2834
In |service|, customer data is automatically encrypted at rest.
2935
This process utilizes your cloud provider's disk encryption, with the provider managing the encryption keys.
3036
Additionally, you have the option to enable database-level encryption, allowing you to use :ref:`your own encryption keys <security-kms-encryption>`
31-
via AWS Key Management Service (KMS), Google Cloud KMS, or Azure Key Vault.
37+
with AWS Key Management Service (KMS), Google Cloud KMS, or Azure Key Vault.
3238

3339
In-use Encryption
34-
~~~~~~~~~~~~~~~~~~~
40+
`````````````````
3541

3642
Encryption in use secures data while it's being processed.
3743
MongoDB has two features for encryption in use to meet your data protection needs: Client-Side Field-Level Encryption and Queryable Encryption.
3844

3945
Client-Side Field-Level Encryption
40-
```````````````````````````````````
46+
##################################
4147

4248
:ref:`Client-Side Field-Level Encryption <manual-csfle-feature>` (CSFLE) is an in-use encryption capability
4349
that enables a client application to encrypt sensitive data before storing it in the MongoDB database.
4450
Sensitive data is transparently encrypted, remains encrypted throughout its lifecycle, and is only decrypted on the client side.
4551

4652
Queryable Encryption
47-
`````````````````````
53+
####################
4854

4955
:ref:`Queryable Encryption <qe-manual-feature-qe>` helps organizations protect sensitive data when it is queried.
5056
It allows applications to encrypt sensitive data on the client side, securely store it in the database, and perform equality
5157
and range queries directly on the encrypted data.
5258
This ensures protection for sensitive information without sacrificing the ability to perform queries on it.
59+
60+
Recommendations
61+
~~~~~~~~~~~~~~~
62+
63+
For development and testing environments, do not enable added encryption with :ref:`your own encryption keys <security-kms-encryption>` through AWS Key Management Service (KMS), Google Cloud KMS, or Azure Key Vault. This saves costs in your
64+
non-production environments.
65+
66+
For staging and production environments, enable added encryption with :ref:`your own encryption keys <security-kms-encryption>` through AWS Key Management Service (KMS), Google Cloud KMS, or Azure Key Vault for
67+
additional security.

source/network-security.txt

Lines changed: 57 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Network Security
1717
.. contents:: On this page
1818
:local:
1919
:backlinks: none
20-
:depth: 1
20+
:depth: 2
2121
:class: onecol
2222

2323
{+service+} provides secure network configuration defaults for your
@@ -34,8 +34,8 @@ needs and preferences.
3434
Use the recommendations on this page to plan for the network security
3535
configuration of your {+clusters+}.
3636

37-
{+service+} Features for Network Security
38-
-----------------------------------------
37+
{+service+} Features and Recommendations for Network Security
38+
-------------------------------------------------------------
3939

4040
{+service+} enforces |tls-ssl| encryption for all connections to your
4141
databases.
@@ -51,8 +51,13 @@ You must explicitly enable access by one of the following methods:
5151
- Use |vpc| / {+vnet+} peering to add private IP addresses
5252
- Add private endpoints
5353

54+
You can also use multiple methods together for added security.
55+
56+
Features
57+
~~~~~~~~
58+
5459
|tls|
55-
~~~~~~~~~
60+
```````````
5661

5762
{+service+} enforces mandatory |tls| encryption of connections to your
5863
databases. |tls| 1.2 is the default protocol; you can select |tls| 1.1
@@ -62,7 +67,7 @@ or |tls| 1.0 if necessary. To learn more, see the
6267
<create-cluster-additional-settings>`.
6368

6469
{+ip-access-list+}s
65-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70+
```````````````````````````````
6671

6772
As a |service| administrator, you can:
6873

@@ -80,16 +85,8 @@ that expire automatically after a user-defined period.
8085

8186
You can create one access list per project.
8287

83-
We recommend the following as best practices:
84-
85-
- Use temporary access list entries in situations where team members
86-
require access to your environment from temporary work locations.
87-
- Define {+ip-access-list+} entries covering the smallest network segments
88-
possible. To do this, favor individual IP addresses where possible,
89-
and avoid large |cidr| blocks.
90-
9188
Firewall Configuration
92-
~~~~~~~~~~~~~~~~~~~~~~
89+
``````````````````````
9390

9491
If you use a firewall that blocks outbound network connections, you
9592
must also configure your firewall to allow your applications to make
@@ -107,7 +104,7 @@ to sharded cluster <scale-cluster-sharding>`, the
107104
change <scale-cluster-region>` require that you use new IP addresses.
108105

109106
VPC/{+vnet+} Peering
110-
~~~~~~~~~~~~~~~~~~~~~~~~~~
107+
`````````````````````````````
111108

112109
Network peering allows you to connect your own |vpc|\s with |a-service|
113110
|vpc| to route traffic privately and isolate your data flow from the
@@ -127,20 +124,8 @@ peer to. {+service+} limits the number of MongoDB instances per |vpc|
127124
based on the |cidr| block. For example, a project with a |cidr| block of
128125
``/24`` is limited to the equivalent of 273-node replica sets.
129126

130-
We recommend the following as best practices:
131-
132-
- To maintain tight network trust boundaries, configure security groups
133-
and :aws:`network ACLs </vpc/latest/userguide/vpc-network-acls.html>`
134-
to prevent inbound access to systems inside your application |vpc|\s
135-
from the {+service+}-side |vpc|.
136-
137-
- Create new |vpc|\s to act as intermediaries between sensitive
138-
application infrastructure and your {+service+} |vpc|\s. |vpc|\s are
139-
intransitive, allowing you to only expose those components of your
140-
application that need access to {+service+}.
141-
142127
Private Endpoints
143-
~~~~~~~~~~~~~~~~~~~~~
128+
`````````````````
144129

145130
A private endpoint facilitates a one-way connection from your own |vpc|
146131
to your {+service+} |vpc|, without permitting {+service+} to initiate a
@@ -155,6 +140,50 @@ private endpoints are available:
155140
- :gcp:`Private Service Connect </vpc/docs/private-service-connect>`, for
156141
connections from {+gcp+}
157142

143+
Recommendations for IP Access Lists
144+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
145+
146+
We recommend that you configure an {+ip-access-list+} for your API keys
147+
to allow access only from trusted IP addresses.
148+
149+
When you configure your {+ip-access-list+}, we recommend that you:
150+
151+
- Use temporary access list entries in situations where team members
152+
require access to your environment from temporary work locations.
153+
- Define {+ip-access-list+} entries covering the smallest network segments
154+
possible. To do this, favor individual IP addresses where possible,
155+
and avoid large |cidr| blocks.
156+
157+
Recommendations for VPC/{+vnet+} Peering
158+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
159+
160+
If you configure |vpc| or {+vnet+} peering, we recommend that you:
161+
162+
- To maintain tight network trust boundaries, configure security groups
163+
and :aws:`network ACLs </vpc/latest/userguide/vpc-network-acls.html>`
164+
to prevent inbound access to systems inside your application |vpc|\s
165+
from the {+service+}-side |vpc|.
166+
167+
- Create new |vpc|\s to act as intermediaries between sensitive
168+
application infrastructure and your {+service+} |vpc|\s. |vpc|\s are
169+
intransitive, allowing you to only expose those components of your
170+
application that need access to {+service+}.
171+
172+
Recommendations for Private Endpoints
173+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
174+
175+
We recommend that you set up private endpoints for all new staging and production projects to limit the extension of your network trust
176+
boundary.
177+
178+
When you configure your private endpoints, we recommend that you don't
179+
share private endpoints across multiple projects to ensure isolation
180+
of configuration settings.
181+
182+
To learn more about private endpoints
183+
in {+service+}, including limitations and considerations, see :atlas:`Learn About Private Endpoints in {+service+} </security-private-endpoint/>`. To learn how to set up private
184+
endpoints for your {+clusters+}, see
185+
:atlas:`Set Up a Private Endpoint for a Dedicated Cluster </security-cluster-private-endpoint/>`.
186+
158187
Examples
159188
--------
160189

0 commit comments

Comments
 (0)