11title : Create an AWS IAM User
22ref : create-an-aws-iam-user
33content : |
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.
817
918 .. note:: Client IAM User Credentials
1019
@@ -15,26 +24,28 @@ content: |
1524title : Create the Master Key
1625ref : create-the-master-key
1726content : |
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.
2129
2230 .. image:: /figures/CSFLE_Master_Key_KMS.png
2331 :alt: Diagram that describes creating a master key when using a KMS provider
2432
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.
2837
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.
3342
3443 .. important::
3544
3645 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.
3849 ---
3950title : Specify the AWS KMS Provider Credentials
4051ref : specify-the-aws-kms-provider-credentials
@@ -44,10 +55,30 @@ content: |
4455 it accepts the :guilabel:`Access Key ID` and :guilabel:`Secret Access
4556 Key` configurations that point to the master key. The IAM user must have
4657 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
4874
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:
5182
5283 .. tabs-drivers::
5384
@@ -113,22 +144,39 @@ content: |
113144title : Create a New Data Encryption Key
114145ref : create-a-new-data-key
115146content : |
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**:
118151
119152 .. image:: /figures/CSFLE_Data_Key_KMS.png
120153 :alt: Diagram that describes creating a data encryption key when using a KMS provider
121154
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
125164
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.
129169
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:
132180
133181 .. tabs-drivers::
134182
@@ -255,6 +303,9 @@ content: |
255303title : Update the Automatic Encryption JSON Schema
256304ref : update-the-json-schema
257305content : |
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