@@ -30,7 +30,9 @@ encrypted with those data encryption keys as permanently unreadable.
30
30
Client-side field level encryption supports the following KMS providers:
31
31
32
32
- :ref:`Amazon Web Services KMS <field-level-encryption-aws-kms>`
33
- - :ref:`Locally Managed Keyfile <field-level-encryption-local-kms>`
33
+ - :ref:`Azure Key Vault <field-level-encryption-azure-keyvault>`
34
+ - :ref:`Google Cloud Platform KMS <field-level-encryption-gcp-kms>`
35
+ - :ref:`Locally Managed Key <field-level-encryption-local-kms>`
34
36
35
37
.. _field-level-encryption-aws-kms:
36
38
@@ -51,27 +53,25 @@ The :binary:`~bin.mongo` shell supports two methods for configuring
51
53
access to an AWS KMS:
52
54
53
55
- Use the client-side field level encryption :ref:`command-line options
54
- <mongo-client-side-field-level-encryption-options>`,
55
-
56
- *or*
56
+ <mongo-client-side-field-level-encryption-options>`, or
57
57
58
58
- Use the :method:`Mongo()` constructor to create a database connection
59
59
with the required AWS :ref:`KMS configuration options
60
60
<ClientSideFieldLevelEncryptionOptions>`.
61
61
62
- Configuring access to an AWS KMS requires at minimum an AWS access key
63
- and its corresponding secret key. The IAM user associated to the access
64
- key *must* have at least one policy with the following actions:
65
-
66
- - ``kms:Decrypt``
67
- `(reference)
68
- <https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html>`__
62
+ Configuring access to an AWS KMS requires at minimum an AWS Access Key
63
+ and its corresponding Secret Key. The IAM User associated to the Access
64
+ Key must have at least one policy with the following actions:
69
65
70
66
- ``kms:Encrypt``
71
67
`(reference)
72
68
<https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html>`__
73
69
74
- .. admonition:: Implement Seperation of Least Privilege for KMS Access
70
+ - ``kms:Decrypt``
71
+ `(reference)
72
+ <https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html>`__
73
+
74
+ .. admonition:: Implement Principle of Least Privilege for KMS Access
75
75
:class: note
76
76
77
77
Consider configuring IAM user roles such that MongoDB has only the
@@ -97,8 +97,90 @@ key *must* have at least one policy with the following actions:
97
97
]
98
98
}
99
99
100
- For complete documentation on data encryption key management using AWS KMS, see
101
- :doc:`/tutorial/manage-client-side-encryption-data-keys`.
100
+ For complete documentation on data encryption key management using AWS
101
+ KMS, see :doc:`/tutorial/manage-client-side-encryption-data-keys` and
102
+ select the "Amazon Web Services KMS" tab.
103
+
104
+ .. _field-level-encryption-azure-keyvault:
105
+
106
+ Azure Key Vault
107
+ ~~~~~~~~~~~~~~~
108
+
109
+ .. versionadded:: 4.4.5
110
+
111
+ MongoDB client-side encryption supports using the
112
+ `Azure Key Vault Key Management Service
113
+ <https://docs.microsoft.com/en-us/azure/key-vault/>`__ for encrypting
114
+ and decrypting data encryption keys. Specifically, MongoDB securely
115
+ transmits the data encryption key to Azure Key Vault for encrypting or
116
+ decrypting using the specified Customer Master Key (CMK). The CMK never
117
+ leaves the Azure Key Vault.
118
+
119
+ The :binary:`~bin.mongo` shell supports specifying Azure Key Vault
120
+ as a KMS using the :method:`Mongo()` constructor using the
121
+ :ref:`KMS configuration options
122
+ <ClientSideFieldLevelEncryptionOptions>`.
123
+
124
+ Configuring access to Azure Key Vault requires at minimum an Azure
125
+ Tenant ID, Client ID, and Client Secret. The Tenant ID must have the
126
+ ability to perform the following actions:
127
+
128
+ - ``wrap key``
129
+ `(reference)
130
+ <https://docs.microsoft.com/en-us/rest/api/keyvault/wrapkey/wrapkey>`__
131
+
132
+ - ``unwrap key``
133
+ `(reference)
134
+ <https://docs.microsoft.com/en-us/rest/api/keyvault/unwrapkey/unwrapkey>`__
135
+
136
+ .. note::
137
+
138
+ MongoDB does *not* support Azure's client certificate authentication
139
+ (also known as TLS mutual authentication).
140
+
141
+ For complete documentation on data encryption key management using
142
+ Azure Key Vault, see
143
+ :doc:`/tutorial/manage-client-side-encryption-data-keys` and select the
144
+ "Azure Key Vault" tab.
145
+
146
+ .. _field-level-encryption-gcp-kms:
147
+
148
+ Google Cloud Platform KMS
149
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
150
+
151
+ .. versionadded:: 4.4.5
152
+
153
+ MongoDB client-side encryption supports using the
154
+ `Google Cloud KMS <https://cloud.google.com/kms/docs/>`__ for encrypting
155
+ and decrypting data encryption keys. Specifically, MongoDB securely
156
+ transmits the data encryption key to Google Cloud KMS for encrypting or
157
+ decrypting using the specified Customer Master Key (CMK). The CMK never
158
+ leaves the Google Cloud KMS.
159
+
160
+ The :binary:`~bin.mongo` shell supports specifying Google Cloud KMS
161
+ as a KMS using the :method:`Mongo()` constructor using the
162
+ :ref:`KMS configuration options
163
+ <ClientSideFieldLevelEncryptionOptions>`.
164
+
165
+ Configuring access to Google Cloud KMS requires at minimum a Google
166
+ Cloud Email and associated Private Key. The Google Cloud Email account
167
+ must have the following IAM permissions for the specified Private Key:
168
+
169
+ - ``cloudkms.cryptoKeyVersions.useToEncrypt``
170
+
171
+ - ``cloudkms.cryptoKeyVersions.useToDecrypt``
172
+
173
+ These IAM permissions are included in certain
174
+ `Google Cloud predefined roles
175
+ <https://cloud.google.com/kms/docs/reference/permissions-and-roles#predefined>`__
176
+ or can be included in a
177
+ `Google Cloud custom role
178
+ <https://cloud.google.com/kms/docs/reference/permissions-and-roles#custom_roles>`__.
179
+
180
+ For complete documentation on data encryption key management using
181
+ Google Cloud KMS, see
182
+ :doc:`/tutorial/manage-client-side-encryption-data-keys` and select the
183
+ "Google Cloud KMS" tab.
102
184
103
185
.. _field-level-encryption-local-kms:
104
186
@@ -111,7 +193,8 @@ be a 96-byte long string.
111
193
112
194
For complete documentation on data encryption key management using a
113
195
locally managed key, see
114
- :doc:`/tutorial/manage-client-side-encryption-data-keys`.
196
+ :doc:`/tutorial/manage-client-side-encryption-data-keys` and select the
197
+ "Local Keyfile" tab.
115
198
116
199
.. _field-level-encryption-keyvault:
117
200
0 commit comments