Skip to content

Commit 0e7ac6d

Browse files
authored
Merge pull request #36964 from windsonsea/encda
[zh]sync encrypt-data.md
2 parents 7059282 + d27bf0b commit 0e7ac6d

File tree

1 file changed

+93
-13
lines changed

1 file changed

+93
-13
lines changed

content/zh-cn/docs/tasks/administer-cluster/encrypt-data.md

Lines changed: 93 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ The configuration is provided as an API named
3636
[`EncryptionConfiguration`](/docs/reference/config-api/apiserver-encryption.v1/).
3737
An example configuration is provided below.
3838
-->
39-
## 配置并确定是否已启用静态数据加密
39+
## 配置并确定是否已启用静态数据加密 {#configuration-and-determing-wheter-encryption-at-rest-is-already-enabled}
4040

4141
`kube-apiserver` 的参数 `--encryption-provider-config` 控制 API 数据在 etcd 中的加密方式。
4242
该配置作为一个名为 [`EncryptionConfiguration`](/zh-cn/docs/reference/config-api/apiserver-encryption.v1/) 的 API 提供。
@@ -55,7 +55,7 @@ decrypt data stored in the etcd.
5555
<!--
5656
## Understanding the encryption at rest configuration.
5757
-->
58-
## 理解静态数据加密
58+
## 理解静态数据加密 {#understanding-the-encryption-at-rest-configuration}
5959

6060
```yaml
6161
apiVersion: apiserver.config.k8s.io/v1
@@ -184,7 +184,7 @@ retrieve the plaintext values, providing a higher level of security than locally
184184

185185
Create a new encryption config file:
186186
-->
187-
## 加密你的数据
187+
## 加密你的数据 {#encrypting-you-data}
188188

189189
创建一个新的加密配置文件:
190190

@@ -219,19 +219,67 @@ To create a new Secret, perform the following steps:
219219
1. Place that value in the `secret` field of the `EncryptionConfiguration` struct.
220220
1. Set the `--encryption-provider-config` flag on the `kube-apiserver` to point to
221221
the location of the config file.
222-
1. Restart your API server.
222+
223+
You will need to mount the new encryption config file to the `kube-apiserver` static pod. Here is an example on how to do that:
223224
-->
224225
2. 将这个值放入到 `EncryptionConfiguration` 结构体的 `secret` 字段中。
225226
3. 设置 `kube-apiserver` 的 `--encryption-provider-config` 参数,将其指向配置文件所在位置。
227+
228+
你将需要把新的加密配置文件挂载到 `kube-apiserver` 静态 Pod。以下是这个操作的示例:
229+
230+
<!--
231+
1. Save the new encryption config file to `/etc/kubernetes/enc/enc.yaml` on the control-plane node.
232+
1. Edit the manifest for the `kube-apiserver` static pod: `/etc/kubernetes/manifests/kube-apiserver.yaml` similarly to this:
233+
-->
234+
1. 将新的加密配置文件保存到控制平面节点上的 `/etc/kubernetes/enc/enc.yaml`。
235+
2. 编辑 `kube-apiserver` 静态 Pod 的清单:`/etc/kubernetes/manifests/kube-apiserver.yaml`,
236+
代码范例如下:
237+
238+
```yaml
239+
apiVersion: v1
240+
kind: Pod
241+
metadata:
242+
annotations:
243+
kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint: 10.10.30.4:6443
244+
creationTimestamp: null
245+
labels:
246+
component: kube-apiserver
247+
tier: control-plane
248+
name: kube-apiserver
249+
namespace: kube-system
250+
spec:
251+
containers:
252+
- command:
253+
- kube-apiserver
254+
...
255+
- --encryption-provider-config=/etc/kubernetes/enc/enc.yaml # <-- 增加这一行
256+
volumeMounts:
257+
...
258+
- name: enc # <-- 增加这一行
259+
mountPath: /etc/kubernetes/enc # <-- 增加这一行
260+
readonly: true # <-- 增加这一行
261+
...
262+
volumes:
263+
...
264+
- name: enc # <-- 增加这一行
265+
hostPath: # <-- 增加这一行
266+
path: /etc/kubernetes/enc # <-- 增加这一行
267+
type: DirectoryOrCreate # <-- 增加这一行
268+
...
269+
```
270+
271+
<!--
272+
1. Restart your API server.
273+
-->
226274
4. 重启你的 API 服务器。
227275

276+
{{< caution >}}
228277
<!--
229278
Your config file contains keys that can decrypt the contents in etcd, so you must properly restrict
230279
permissions on your control-plane nodes so only the user who runs the `kube-apiserver` can read it.
231280
-->
232-
{{< caution >}}
233-
你的配置文件包含可以解密 etcd 内容的密钥,因此你必须正确限制主控节点的访问权限,
234-
以便只有能运行 kube-apiserver 的用户才能读取它。
281+
你的配置文件包含可以解密 etcd 内容的密钥,因此你必须正确限制控制平面节点的访问权限,
282+
以便只有能运行 `kube-apiserver` 的用户才能读取它。
235283
{{< /caution >}}
236284

237285
<!--
@@ -243,7 +291,7 @@ program to retrieve the contents of your Secret.
243291

244292
1. Create a new Secret called `secret1` in the `default` namespace:
245293
-->
246-
## 验证数据已被加密
294+
## 验证数据已被加密 {#verifying-that-data-is-encryped}
247295

248296
数据在写入 etcd 时会被加密。重新启动你的 `kube-apiserver` 后,任何新创建或更新的密码在存储时都应该被加密。
249297
如果想要检查,你可以使用 `etcdctl` 命令行程序来检索你的加密内容。
@@ -268,6 +316,38 @@ program to retrieve the contents of your Secret.
268316
-->
269317
这里的 `[...]` 是用来连接 etcd 服务的额外参数。
270318

319+
<!--
320+
For example:
321+
-->
322+
例如:
323+
324+
```shell
325+
ETCDCTL_API=3 etcdctl \
326+
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
327+
--cert=/etc/kubernetes/pki/etcd/server.crt \
328+
--key=/etc/kubernetes/pki/etcd/server.key \
329+
get /registry/secrets/default/secret1 | hexdump -C
330+
```
331+
332+
<!--
333+
The output is similar to this (abbreviated):
334+
-->
335+
输出类似于(有删减):
336+
337+
```hexdump
338+
00000000 2f 72 65 67 69 73 74 72 79 2f 73 65 63 72 65 74 |/registry/secret|
339+
00000010 73 2f 64 65 66 61 75 6c 74 2f 73 65 63 72 65 74 |s/default/secret|
340+
00000020 31 0a 6b 38 73 3a 65 6e 63 3a 61 65 73 63 62 63 |1.k8s:enc:aescbc|
341+
00000030 3a 76 31 3a 6b 65 79 31 3a c7 6c e7 d3 09 bc 06 |:v1:key1:.l.....|
342+
00000040 25 51 91 e4 e0 6c e5 b1 4d 7a 8b 3d b9 c2 7c 6e |%Q...l..Mz.=..|n|
343+
00000050 b4 79 df 05 28 ae 0d 8e 5f 35 13 2c c0 18 99 3e |.y..(..._5.,...>|
344+
[...]
345+
00000110 23 3a 0d fc 28 ca 48 2d 6b 2d 46 cc 72 0b 70 4c |#:..(.H-k-F.r.pL|
346+
00000120 a5 fc 35 43 12 4e 60 ef bf 6f fe cf df 0b ad 1f |..5C.N`..o......|
347+
00000130 82 c4 88 53 02 da 3e 66 ff 0a |...S..>f..|
348+
0000013a
349+
```
350+
271351
<!--
272352
1. Verify the stored Secret is prefixed with `k8s:enc:aescbc:v1:` which indicates
273353
the `aescbc` provider has encrypted the resulting data.
@@ -296,7 +376,7 @@ program to retrieve the contents of your Secret.
296376
297377
Since Secrets are encrypted on write, performing an update on a Secret will encrypt that content.
298378
-->
299-
## 确保所有 Secret 都被加密
379+
## 确保所有 Secret 都被加密 {#ensure-all-secrets-are-encrypted}
300380

301381
由于 Secret 是在写入时被加密,因此对 Secret 执行更新也会加密该内容。
302382

@@ -335,10 +415,10 @@ the presence of a highly-available deployment where multiple `kube-apiserver` pr
335415
336416
When running a single `kube-apiserver` instance, step 2 may be skipped.
337417
-->
338-
## 轮换解密密钥
418+
## 轮换解密密钥 {#rotating-a-decryption-key}
339419

340-
在不发生停机的情况下更改 Secret 需要多步操作,特别是在有多个 `kube-apiserver` 进程正在运行的
341-
高可用环境中
420+
在不发生停机的情况下更改 Secret 需要多步操作,特别是在有多个 `kube-apiserver`
421+
进程正在运行的高可用环境中
342422

343423
1. 生成一个新密钥并将其添加为所有服务器上当前提供程序的第二个密钥条目
344424
1. 重新启动所有 `kube-apiserver` 进程以确保每台服务器都可以使用新密钥进行解密
@@ -356,7 +436,7 @@ When running a single `kube-apiserver` instance, step 2 may be skipped.
356436
To disable encryption at rest, place the `identity` provider as the first entry in the config
357437
and restart all `kube-apiserver` processes.
358438
-->
359-
## 解密所有数据
439+
## 解密所有数据 {#decrypting-all-data}
360440

361441
要禁用静态加密,请将 `identity` provider
362442
作为配置中的第一个条目并重新启动所有 `kube-apiserver` 进程。

0 commit comments

Comments
 (0)