加密组件规范
与 Dapr 交互的受支持的加密组件
Table headers to note:
| Header | Description | Example |
|---|
| Status | Component certification status | Alpha Beta Stable
|
| Component version | The version of the component | v1 |
| Since runtime version | The version of the Dapr runtime when the component status was set or updated | 1.11 |
Using the Dapr cryptography engine
Microsoft Azure
| Component | Status | Component version | Since runtime version |
|---|
| Azure Key Vault | Alpha | v1 | 1.11 |
1 - Azure Key Vault
Azure Key Vault 加密组件的详细信息
组件格式
Dapr crypto.yaml 组件文件具有以下结构:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: azurekeyvault
spec:
type: crypto.azure.keyvault
metadata:
- name: vaultName
value: mykeyvault
# See authentication section below for all options
- name: azureTenantId
value: ${{AzureKeyVaultTenantId}}
- name: azureClientId
value: ${{AzureKeyVaultServicePrincipalClientId}}
- name: azureClientSecret
value: ${{AzureKeyVaultServicePrincipalClientSecret}}
Warning
上面的示例使用纯文本字符串来存储密钥。建议使用密钥存储来管理密钥,如
此处所述。
使用 Microsoft Entra ID 进行身份验证
Azure Key Vault 加密组件仅支持使用 Microsoft Entra ID 进行身份验证。在启用此组件之前:
- 阅读向 Azure 进行身份验证文档。
- 创建 Microsoft Entra ID 应用程序(也称为服务主体)。
- 或者,为您的应用程序平台创建托管标识。
规范元数据字段
| Field | Required | Details | Example |
|---|
vaultName | Y | Azure Key Vault 名称 | "mykeyvault" |
| Auth metadata | Y | 有关更多信息,请参阅向 Azure 进行身份验证 | |
相关链接
2 - JSON Web Key Sets (JWKS)
JWKS 加密组件的详细信息
组件格式
此组件的用途是从 JSON Web Key Set(RFC 7517)加载密钥。这些是包含 1 个或多个 JWK(JSON Web Key)密钥的 JSON 文档;它们可以是公钥、私钥或共享密钥。
此组件支持以下方式加载 JWKS:
- 从本地文件加载;在此情况下,Dapr 会监视磁盘上的文件变化并自动重新加载。
- 从 HTTP(S) URL 加载,该 URL 会定期刷新。
- 通过在
jwks 元数据属性中传入实际的 JWKS,作为字符串(可选择是否进行 base64 编码)。
注意
此组件使用 Dapr 中的加密引擎来执行操作。虽然密钥永远不会暴露给你的应用程序,但 Dapr 可以访问原始密钥材料。Dapr crypto.yaml 组件文件具有以下结构:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: jwks
spec:
type: crypto.dapr.jwks
version: v1
metadata:
# 示例 1:从文件加载 JWKS
- name: "jwks"
value: "fixtures/crypto/jwks/jwks.json"
# 示例 2:从 HTTP(S) URL 加载 JWKS
# 仅需要 "jwks"
- name: "jwks"
value: "https://example.com/.well-known/jwks.json"
- name: "requestTimeout"
value: "30s"
- name: "minRefreshInterval"
value: "10m"
# 选项 3:包含实际的 JWKS
- name: "jwks"
value: |
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "…",
"n": "…",
"e": "…",
"issuer": "https://example.com"
}
]
}
# 选项 3b:包含 base64 编码的 JWKS
- name: "jwks"
value: |
eyJrZXlzIjpbeyJ…
警告
上述示例使用纯文本字符串作为密钥。建议使用密钥存储来管理密钥,如
此处所述。
规范元数据字段
| 字段 | 必填 | 详情 | 示例 |
|---|
jwks | Y | JWKS 文档的路径 | 本地文件:"fixtures/crypto/jwks/jwks.json" HTTP(S) URL:"https://example.com/.well-known/jwks.json" 嵌入的 JWKS:{"keys": […]}(可以是 base64 编码) |
requestTimeout | N | 从 HTTP(S) URL 获取 JWKS 文档时网络请求的超时时间,采用 Go duration 格式。默认值:“30s” | "5s" |
minRefreshInterval | N | 从 HTTP(S) 源后续刷新 JWKS 文档前等待的最小间隔,采用 Go duration 格式。默认值:“10m” | "1h" |
相关链接
加密构建块
3 - Kubernetes Secrets
有关 Kubernetes 密钥加密组件的详细信息
组件格式
此组件的目的是加载以密钥名称命名的 Kubernetes 密钥。
注意
此组件使用 Dapr 中的加密引擎执行操作。虽然密钥永远不会暴露给您的应用程序,但 Dapr 可以访问原始密钥材料。Dapr crypto.yaml 组件文件具有以下结构:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
spec:
type: crypto.dapr.kubernetes.secrets
version: v1
metadata:[]
警告
上述示例将密钥作为纯字符串使用。建议使用密钥存储来存储密钥,如
此处所述。
规范元数据字段
| 字段 | 必需 | 详细信息 | 示例 | |
|---|
defaultNamespace | N | 用于检索密钥的默认命名空间。如果未设置,则必须为每个密钥指定命名空间,格式为 namespace/secretName/key | "default-ns" | |
kubeconfigPath | N | kubeconfig 文件的路径。如果未指定,组件将使用群集内默认配置值 | "/path/to/kubeconfig" | |
相关链接
加密构建块
4 - Local storage
本地存储密码学组件的详细信息
组件格式
此组件的目的是从本地目录加载密钥。
该组件接受文件夹名称作为输入,并从该文件夹加载密钥。每个密钥都在其自己的文件中,当用户请求给定名称的密钥时,Dapr 将加载具有该名称的文件。
支持的文件格式:
- PEM 格式的公钥和私钥(支持:PKCS#1、PKCS#8、PKIX)
- JSON Web Key (JWK),包含公钥、私钥或对称密钥
- 对称密钥的原始密钥数据
注意
此组件使用 Dapr 中的密码学引擎执行操作。尽管密钥永远不会暴露给您的应用程序,但 Dapr 可以访问原始密钥材料。Dapr crypto.yaml 组件文件具有以下结构:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: mycrypto
spec:
type: crypto.dapr.localstorage
version: v1
metadata:
- name: path
value: /path/to/folder/
警告
上述示例将密钥作为纯字符串使用。建议使用密钥存储来管理密钥,具体说明请参阅
此处。
规范元数据字段
| 字段 | 必填 | 详情 | 示例 |
|---|
path | Y | 包含要加载的密钥的文件夹。加载密钥时,密钥名称将用作该文件夹中的文件名。 | /path/to/folder |
示例
假设您已设置 path=/mnt/keys,其中包含以下文件:
/mnt/keys/mykey1.pem/mnt/keys/mykey2
使用该组件时,您可以将密钥引用为 mykey1.pm 和 mykey2。
相关链接
密码学构建块