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.