You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
update KMS guide to work with latest KES changes (minio#9498)
This commit updates the KMS guide to reflect the
latest changes in KES. Based on internal design
meetings we made some adjustments to the overall
KES configuration.
This commit ensures that the KMS guide contains
a working KES demo-setup with Vault.
└─┤ ┌──────────┴─┬─────┬──────┴─┤ KES Server ├─────────────────┤
30
+
└─┤MinIO├─────╯ └────────────┘ ┌────┴────┐
31
+
└────────────┘ │ KMS │
32
+
└─────────┘
30
33
```
31
-
32
-
MinIO supports commonly-used KMS implementations, like [AWS-KMS](https://aws.amazon.com/kms/) or
33
-
[Hashicorp Vault](https://www.vaultproject.io/) via our [KES project](https://github.com/minio/kes/wiki).
34
-
KES makes it possible to scale your KMS horizontally with your storage infrastructure (MinIO clusters).
35
-
Therefore, it wraps around the KMS implementation like this:
36
-
```
37
-
+-------+ +-------+
38
-
| MinIO | | MinIO |
39
-
+---+---+ +---+---+
40
-
| |
41
-
+----+-------------------------+----+---- KMS
42
-
| | | |
43
-
| +--+--+ +--+--+ |
44
-
| | KES +--+ +--+ KES | |
45
-
| +-----+ | +-------+ | +-----+ |
46
-
| +--+ Vault +--+ |
47
-
| +-----+ | +-------+ | +-----+ |
48
-
| | KES +--+ +--+ KES | |
49
-
| +--+--+ +--+--+ |
50
-
| | | |
51
-
+----+-------------------------+----+---- KMS
52
-
| |
53
-
+---+---+ +---+---+
54
-
| MinIO | | MinIO |
55
-
+-------+ +-------+
56
-
```
57
34
Observe that all MinIO clusters only have a connection to "their own" KES instance and no direct access to Vault (as one possible KMS implementation).
58
35
Each KES instance will handle all encrypton/decryption requests made by "its" MinIO cluster such that the central KMS implementation does not have to handle
59
36
a lot of traffic. Instead, each KES instance will use the central KMS implementation as secure key store and fetches the required master keys from it.
@@ -77,7 +54,7 @@ This guide shows how to set up three different servers on the same machine:
77
54
### 1 Prerequisites
78
55
79
56
Install MinIO, KES and Vault. For MinIO take a look at the [MinIO quickstart guide](https://docs.min.io/docs/minio-quickstart-guide).
80
-
Then download the [latest KES binary](https://github.com/minio/kes/releases/latest/) and the [latest Vault binary](https://github.com/hashicorp/vault/releases/latest/)
57
+
Then [install KES](https://github.com/minio/kes#install) and download the [latest Vault binary](https://www.vaultproject.io/downloads)
81
58
for your OS and platform.
82
59
83
60
### 2 Generate TLS certificates
@@ -88,30 +65,44 @@ TLS connections between MinIO, KES and Vault. Therefore, we need to generate at
88
65
#### 2.1 Generate a TLS certificate for Vault
89
66
90
67
To generate a new private key for Vault's certificate run the following openssl command:
> backend - like [etcd](https://www.vaultproject.io/docs/configuration/storage/etcd/) or [consul](https://learn.hashicorp.com/vault/operations/ops-vault-ha-consul).
157
148
158
149
Finally, start the Vault server via:
159
-
```
150
+
```sh
160
151
vault server -config vault-config.json
161
152
```
162
153
163
154
#### 3.1 Initialize and unseal Vault
164
155
165
156
In a separate terminal window set the `VAULT_ADDR` env. variable to your Vault server:
166
-
```
157
+
```sh
167
158
export VAULT_ADDR='https://127.0.0.1:8200'
168
159
```
169
160
@@ -172,7 +163,7 @@ certificate. When Vault serves a TLS certificate that has been issued by a CA th
172
163
by your machine - e.g. Let's Encrypt - then you don't need to run this command.
173
164
174
165
Then initialize Vault via:
175
-
```
166
+
```sh
176
167
vault operator init
177
168
```
178
169
@@ -203,12 +194,12 @@ existing unseal keys shares. See "vault operator rekey" for more information.
203
194
```
204
195
205
196
Now, set the env. variable `VAULT_TOKEN` to the root token printed by the command before:
206
-
```
197
+
```sh
207
198
export VAULT_TOKEN=s.zaU4Gbcu0Wh46uj2V3VuUde0
208
199
```
209
200
210
201
Then use any of the previously generated key shares to unseal Vault.
0 commit comments