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:

HeaderDescriptionExample
StatusComponent certification statusAlpha
Beta
Stable
Component versionThe version of the componentv1
Since runtime versionThe version of the Dapr runtime when the component status was set or updated1.11

Using the Dapr cryptography engine

ComponentStatusComponent versionSince runtime version
JSON Web Key Sets (JWKS)Alphav11.11
Kubernetes secretsAlphav11.11
Local storageAlphav11.11

Microsoft Azure

ComponentStatusComponent versionSince runtime version
Azure Key VaultAlphav11.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}}

使用 Microsoft Entra ID 进行身份验证

Azure Key Vault 加密组件仅支持使用 Microsoft Entra ID 进行身份验证。在启用此组件之前:

  1. 阅读向 Azure 进行身份验证文档。
  2. 创建 Microsoft Entra ID 应用程序(也称为服务主体)。
  3. 或者,为您的应用程序平台创建托管标识

规范元数据字段

FieldRequiredDetailsExample
vaultNameYAzure Key Vault 名称"mykeyvault"
Auth metadataY有关更多信息,请参阅向 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 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…

规范元数据字段

字段必填详情示例
jwksYJWKS 文档的路径本地文件:"fixtures/crypto/jwks/jwks.json"
HTTP(S) URL:"https://example.com/.well-known/jwks.json"
嵌入的 JWKS:{"keys": […]}(可以是 base64 编码)
requestTimeoutN从 HTTP(S) URL 获取 JWKS 文档时网络请求的超时时间,采用 Go duration 格式。默认值:“30s”"5s"
minRefreshIntervalN从 HTTP(S) 源后续刷新 JWKS 文档前等待的最小间隔,采用 Go duration 格式。默认值:“10m”"1h"

相关链接

加密构建块

3 - Kubernetes Secrets

有关 Kubernetes 密钥加密组件的详细信息

组件格式

此组件的目的是加载以密钥名称命名的 Kubernetes 密钥。

Dapr crypto.yaml 组件文件具有以下结构:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
spec:
  type: crypto.dapr.kubernetes.secrets
  version: v1
  metadata:[]

规范元数据字段

字段必需详细信息示例
defaultNamespaceN用于检索密钥的默认命名空间。如果未设置,则必须为每个密钥指定命名空间,格式为 namespace/secretName/key"default-ns"
kubeconfigPathNkubeconfig 文件的路径。如果未指定,组件将使用群集内默认配置值"/path/to/kubeconfig"

相关链接

加密构建块

4 - Local storage

本地存储密码学组件的详细信息

组件格式

此组件的目的是从本地目录加载密钥。

该组件接受文件夹名称作为输入,并从该文件夹加载密钥。每个密钥都在其自己的文件中,当用户请求给定名称的密钥时,Dapr 将加载具有该名称的文件。

支持的文件格式:

  • PEM 格式的公钥和私钥(支持:PKCS#1、PKCS#8、PKIX)
  • JSON Web Key (JWK),包含公钥、私钥或对称密钥
  • 对称密钥的原始密钥数据

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/

规范元数据字段

字段必填详情示例
pathY包含要加载的密钥的文件夹。加载密钥时,密钥名称将用作该文件夹中的文件名。/path/to/folder

示例

假设您已设置 path=/mnt/keys,其中包含以下文件:

  • /mnt/keys/mykey1.pem
  • /mnt/keys/mykey2

使用该组件时,您可以将密钥引用为 mykey1.pmmykey2

相关链接

密码学构建块