The documentation you are viewing is for Dapr v1.12 which is an older version of Dapr. For up-to-date documentation, see the latest version.
操作方法:加密应用程序状态
Preview feature
状态存储加密目前为 预览版。介绍
应用程序状态通常需要静态加密,以便在企业工作负载或受监管环境中提供更强的安全性。 Dapr 提供基于 AES256 的自动客户端加密。
除了自动加密之外,Dapr 还支持主密钥和辅助加密密钥,使开发人员和运营团队能够更轻松地启用密钥轮换策略。 所有 Dapr 状态存储都支持此功能。
加密密钥是从密钥中提取的,不能作为明文值提供在 metadata
部分。
启用自动加密
- 使用标准 Dapr 配置启用状态加密预览功能:
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: stateconfig
spec:
features:
- name: State.Encryption
enabled: true
- 将以下
metadata
部分添加到任何 Dapr 支持的状态存储中:
metadata:
- name: primaryEncryptionKey
secretKeyRef:
name: mysecret
key: mykey # key is optional.
例如,这是 Redis 加密状态存储的完整 YAML
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: statestore
spec:
type: state.redis
version: v1
metadata:
- name: redisHost
value: localhost:6379
- name: redisPassword
value: ""
- name: primaryEncryptionKey
secretKeyRef:
name: mysecret
key: mykey
现在你有一个 Dapr 状态存储,它被配置为从一个名为 mysecret
的秘密中获取加密密钥,在一个名为 mykey
的密钥中包含实际的加密密钥。 实际的加密密钥 必须 是 AES256 加密密钥。 如果加密密钥无效,Dapr 将出错并退出。
请注意,秘密存储不一定要支持keys
密钥轮换
为了支持密钥轮换,Dapr 提供了一种指定辅助加密密钥的方法:
metadata:
- name: primaryEncryptionKey
secretKeyRef:
name: mysecret
key: mykey
- name: secondaryEncryptionKey
secretKeyRef:
name: mysecret2
key: mykey2
当Dapr启动时,它将获取包含 metadata
部分中列出的加密密钥的秘密。 Dapr 知道哪个状态项已使用哪个密钥自动加密,因为它会将 secretKeyRef.name
字段附加到实际状态密钥的末尾。
要轮换密钥,只需将 primaryEncryptionKey
更改为指向包含新密钥的机密,然后将旧的主加密密钥移动到 secondaryEncryptionKey
。 新数据将使用新密钥进行加密,检索到的旧数据将使用辅助密钥进行解密。 对使用旧密钥加密的数据项的任何更新都将使用新密钥重新加密。
相关链接
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.