使用指南:选择性启用 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 API gRPC 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/a subscribe (v1alpha1)
秘密 secrets (v1.0) secrets (v1)
actor actors (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