1
1
title : Create an AWS IAM User
2
2
ref : create-an-aws-iam-user
3
3
content : |
4
- Create a new programmatic IAM user in the AWS management console.
5
- CSFLE-enabled clients authenticate with AWS KMS using the IAM user to
6
- encrypt and decrypt the remote master key. The IAM user must be granted
7
- full ``List`` and ``Read`` permissions for the KMS service.
4
+ 1. Create a new programmatic IAM user in the AWS management console by
5
+ following the official AWS documentation on `Adding a User <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html>`__.
6
+ CSFLE-enabled clients authenticate with AWS KMS using the IAM user to
7
+ encrypt and decrypt the remote master key. Take note of the following
8
+ credentials needed to authenticate with the KMS:
9
+
10
+ - **access key ID**
11
+ - **secret access key**
12
+
13
+ 2. Grant the IAM user full ``List`` and ``Read`` permissions for the KMS
14
+ service. See Amazon's official documentation on
15
+ `Adding permissions to a user <https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html>`__
16
+ to set these permissions.
8
17
9
18
.. note:: Client IAM User Credentials
10
19
@@ -15,26 +24,28 @@ content: |
15
24
title : Create the Master Key
16
25
ref : create-the-master-key
17
26
content : |
18
-
19
- The following diagram shows how the **master key** is created and stored
20
- when using a KMS provider:
27
+ The following diagram shows the steps required to create a new
28
+ **master key** on a KMS provider.
21
29
22
30
.. image:: /figures/CSFLE_Master_Key_KMS.png
23
31
:alt: Diagram that describes creating a master key when using a KMS provider
24
32
25
- In AWS management console, create a new symmetric master key in the KMS
26
- section. Choose a name and description that helps you identify it; these
27
- fields do not affect the functionality or configuration.
33
+ 1. To create a master key, log into your AWS management console and create
34
+ a new symmetric master key in the KMS section. Choose a name and
35
+ description that helps you identify it; these fields do not affect the
36
+ functionality or configuration.
28
37
29
- In the :guilabel:`Usage Permissions` step of the key generation
30
- process, add the full KMS ``List`` and ``Read`` permissions to the IAM
31
- user you created in the previous step. This authorizes the user to encrypt
32
- and decrypt the new master key.
38
+ 2. In the :guilabel:`Usage Permissions` step of the key generation
39
+ process, add the full KMS ``List`` and ``Read`` permissions to the IAM
40
+ user you created in the previous step. This authorizes the user to
41
+ encrypt and decrypt the new master key.
33
42
34
43
.. important::
35
44
36
45
The new client IAM User *should not* have administrative permissions
37
- for the master key.
46
+ for the master key. We recommend that you follow the
47
+ `principle of least privilege <https://en.wikipedia.org/wiki/Principle_of_least_privilege>`__
48
+ to keep your data secure.
38
49
---
39
50
title : Specify the AWS KMS Provider Credentials
40
51
ref : specify-the-aws-kms-provider-credentials
@@ -44,10 +55,30 @@ content: |
44
55
it accepts the :guilabel:`Access Key ID` and :guilabel:`Secret Access
45
56
Key` configurations that point to the master key. The IAM user must have
46
57
the permissions set up in the previous step in order for the client to
47
- use the KMS to encrypt and decrypt data encryption keys.
58
+ use the KMS to encrypt and decrypt data encryption keys. Follow the steps
59
+ below to specify your credentials:
60
+
61
+ 1. First, identify the following authentication credentials on AWS KMS:
62
+
63
+ .. list-table::
64
+ :header-rows: 1
65
+ :stub-columns: 1
66
+
67
+ * - Field
68
+ - Required
69
+ - Description
70
+
71
+ * - Access Key ID
72
+ - Yes
73
+ - Identifies the account user
48
74
49
- Update the KMS Provider configuration in your CSFLE-enabled client
50
- creation code:
75
+ * - Secret Access Key
76
+ - Yes
77
+ - Contains the authentication credentials of the account user
78
+
79
+
80
+ 2. Next, add your authentication credentials to your CSFLE-enabled client
81
+ code:
51
82
52
83
.. tabs-drivers::
53
84
@@ -113,22 +144,39 @@ content: |
113
144
title : Create a New Data Encryption Key
114
145
ref : create-a-new-data-key
115
146
content : |
116
- The following diagram shows how the **customer master key** is created and
117
- stored when using a KMS provider:
147
+ To encrypt your data, you need a data encryption key generated from your
148
+ KMS-hosted **master key**. The following diagram shows the requests you need
149
+ to make from the client application to create and store a new **data
150
+ encryption key**:
118
151
119
152
.. image:: /figures/CSFLE_Data_Key_KMS.png
120
153
:alt: Diagram that describes creating a data encryption key when using a KMS provider
121
154
122
- You must generate a new **data encryption key** using the **master key**
123
- in the remote KMS. The original data encryption key was encrypted by
124
- your locally-managed master key.
155
+ 1. First, specify the following information to access the master key:
156
+
157
+ .. list-table::
158
+ :header-rows: 1
159
+ :stub-columns: 1
160
+
161
+ * - Field
162
+ - Required
163
+ - Description
125
164
126
- Specify the `Amazon Resource Number <https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn>`_
127
- (ARN) of the new CMK in the CSFLE-enabled client settings. Use the client
128
- to create a new data encryption key as follows:
165
+ * - key
166
+ - Yes
167
+ - `Amazon Resource Number (ARN) <https://docs.aws.amazon.com/kms/latest/developerguide/viewing-keys.html#find-cmk-id-arn>`__
168
+ of the master key.
129
169
130
- Once you have the required information, run the following code to
131
- generate the new data encryption key:
170
+ * - region
171
+ - No
172
+ - AWS region of your master key, e.g. "us-west-2"; required only if not specified in your ARN.
173
+
174
+ * - endpoint
175
+ - No
176
+ - Custom hostname for the AWS endpoint if configured for your account.
177
+
178
+ 2. Once you have the required information, update and run the following code
179
+ to generate the new data encryption key:
132
180
133
181
.. tabs-drivers::
134
182
@@ -255,6 +303,9 @@ content: |
255
303
title : Update the Automatic Encryption JSON Schema
256
304
ref : update-the-json-schema
257
305
content : |
258
- If you embedded the key id of your data encryption key in your
259
- automatic encryption rules, you will need to update the :ref:`JSON
260
- Schema <fle-define-a-json-schema>` with the new data encryption key id.
306
+ If you previously embedded the key ID of your data encryption key in your
307
+ automatic encryption rules, update the :ref:`JSON Schema <fle-define-a-json-schema>`
308
+ with your new data encryption key ID.
309
+
310
+ Your client application is now ready to automatically encrypt your data
311
+ using the master key on your KMS provider.
0 commit comments