This is the multi-page printable view of this section.
Click here to print.
Return to the regular view of this page.
密码学组件规范
与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
# 请参阅下文的身份验证部分以了解所有配置选项
- name: azureTenantId
value: ${{AzureKeyVaultTenantId}}
- name: azureClientId
value: ${{AzureKeyVaultServicePrincipalClientId}}
- name: azureClientSecret
value: ${{AzureKeyVaultServicePrincipalClientSecret}}
警告
上述示例中使用了明文字符串来表示密钥。建议使用密钥存储来保护密钥,详情请参阅
此处。
通过 Microsoft Entra ID 进行身份验证
Azure Key Vault 加密组件仅支持通过 Microsoft Entra ID 进行身份验证。在启用此组件之前:
- 阅读 Azure 身份验证 文档。
- 创建一个 Microsoft Entra ID 应用程序(也称为服务主体)。
- 或者,为您的应用程序平台创建一个 托管身份。
元数据字段说明
字段 |
必需 |
详情 |
示例 |
vaultName |
是 |
Azure Key Vault 的名称 |
"mykeyvault" |
身份验证元数据 |
是 |
更多信息请参阅 Azure 身份验证 |
|
相关链接
2 - JSON Web Key Sets (JWKS)
JWKS 加密组件的详细信息
组件格式
该组件用于从 JSON Web Key Set (RFC 7517) 中加载密钥。JSON Web Key Set 是包含一个或多个密钥的 JSON 文档,密钥以 JWK (JSON Web Key) 格式表示;这些密钥可以是公钥、私钥或共享密钥。
该组件支持从以下来源加载 JWKS:
- 本地文件;在这种情况下,Dapr 会监视文件的变化并自动重新加载。
- HTTP(S) 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 |
是 |
JWKS 文档的路径 |
本地文件: "fixtures/crypto/jwks/jwks.json" HTTP(S) URL: "https://example.com/.well-known/jwks.json" 嵌入的 JWKS: {"keys": […]} (可以是 base64 编码) |
requestTimeout |
否 |
从 HTTP(S) URL 获取 JWKS 文档时的网络请求超时时间,格式为 Go duration。默认值: “30s” |
"5s" |
minRefreshInterval |
否 |
从 HTTP(S) 源刷新 JWKS 文档前的最小等待时间,格式为 Go duration。默认值: “10m” |
"1h" |
相关链接
加密构建块
3 - Kubernetes Secrets
关于Kubernetes secret加密组件的详细信息
组件格式
此组件旨在加载以密钥名称命名的Kubernetes secret。
注意
此组件依赖于Dapr的加密引擎进行操作。虽然密钥不会直接暴露给您的应用程序,但Dapr可以访问原始密钥材料。
一个Dapr crypto.yaml
组件文件的结构如下:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
spec:
type: crypto.dapr.kubernetes.secrets
version: v1
metadata:[]
警告
上述示例中使用了明文字符串形式的secrets。建议使用secret存储来保存secrets,具体方法请参见
此处。
规格元数据字段
字段 |
必需 |
详情 |
示例 |
|
defaultNamespace |
否 |
用于检索secrets的默认命名空间。如果未设置,必须为每个密钥指定命名空间,例如namespace/secretName/key |
"default-ns" |
|
kubeconfigPath |
否 |
kubeconfig文件的路径。如果未指定,组件将使用默认的集群内配置 |
"/path/to/kubeconfig" |
|
相关链接
加密构建块
4 - 本地存储
本地存储加密组件的详细信息
组件格式
该组件用于从本地目录加载密钥。
组件接受文件夹名称作为输入,并从该文件夹加载密钥。每个密钥存储在单独的文件中,当用户请求某个名称的密钥时,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
metadata:
version: v1
- name: path
value: /path/to/folder/
警告
上述示例中使用了明文字符串作为密钥。建议使用密钥存储来保存密钥,具体方法请参见
此处。
规格元数据字段
字段 |
必需 |
详情 |
示例 |
path |
Y |
包含要加载的密钥的文件夹。加载密钥时,密钥的名称将用作此文件夹中文件的名称。 |
/path/to/folder |
示例
假设您设置了 path=/mnt/keys
,其中包含以下文件:
/mnt/keys/mykey1.pem
/mnt/keys/mykey2
使用组件时,您可以将密钥引用为 mykey1.pem
和 mykey2
。
相关链接
加密构建块