使用指南:选择性启用 Dapr Sidecar 的 API

选择应用程序可以使用的 Dapr Sidecar API

在零信任网络环境中,或通过前端将 Dapr Sidecar 暴露给外部流量时,建议仅启用应用程序实际使用的 Dapr Sidecar API。这样可以减少潜在的攻击风险,并确保 Dapr API 仅限于应用程序的实际需求。

Dapr 允许您通过使用 Dapr 配置 设置 API 白名单或黑名单来控制应用程序可以访问哪些 API。

默认设置

如果未指定 API 白名单或黑名单,默认情况下将允许访问所有 Dapr API。

  • 如果只定义了黑名单,则除黑名单中定义的 API 外,所有 Dapr API 都被允许访问。
  • 如果只定义了白名单,则仅允许白名单中列出的 Dapr API。
  • 如果同时定义了白名单和黑名单,则黑名单中的 API 优先于白名单。
  • 如果两者都未定义,则允许访问所有 API。

例如,以下配置为 HTTP 和 gRPC 启用所有 API:

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: myappconfig
  namespace: default
spec:
  tracing:
    samplingRate: "1"

使用白名单

启用特定的 HTTP API

以下示例启用 state v1.0 HTTP API,并禁用所有其他 HTTP API:

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: myappconfig
  namespace: default
spec:
  api:
    allowed:
      - name: state
        version: v1.0
        protocol: http

启用特定的 gRPC API

以下示例启用 state v1 gRPC API,并禁用所有其他 gRPC API:

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: myappconfig
  namespace: default
spec:
  api:
    allowed:
      - name: state
        version: v1
        protocol: grpc

使用黑名单

禁用特定的 HTTP API

以下示例禁用 state v1.0 HTTP API,允许所有其他 HTTP API:

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: myappconfig
  namespace: default
spec:
  api:
    denied:
      - name: state
        version: v1.0
        protocol: http

禁用特定的 gRPC API

以下示例禁用 state v1 gRPC API,允许所有其他 gRPC API:

apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
  name: myappconfig
  namespace: default
spec:
  api:
    denied:
      - name: state
        version: v1
        protocol: grpc

Dapr API 列表

name 字段用于指定您想启用的 Dapr API 名称。

请参考以下列表获取不同 Dapr API 的名称:

API 组HTTP APIgRPC API
服务调用invoke (v1.0)invoke (v1)
状态state (v1.0v1.0-alpha1)state (v1v1alpha1)
发布/订阅publish (v1.0v1.0-alpha1)publish (v1v1alpha1)
输出绑定bindings (v1.0)bindings (v1)
订阅n/asubscribe (v1alpha1)
秘密secrets (v1.0)secrets (v1)
actoractors (v1.0)actors (v1)
元数据metadata (v1.0)metadata (v1)
配置configuration (v1.0v1.0-alpha1)configuration (v1v1alpha1)
分布式锁lock (v1.0-alpha1)
unlock (v1.0-alpha1)
lock (v1alpha1)
unlock (v1alpha1)
加密crypto (v1.0-alpha1)crypto (v1alpha1)
工作流workflows (v1.0)workflows (v1)
健康检查healthz (v1.0)n/a
关闭shutdown (v1.0)shutdown (v1)

后续步骤

配置 Dapr 使用 gRPC