在零信任网络环境中,或通过前端将 Dapr Sidecar 暴露给外部流量时,建议仅启用应用程序实际使用的 Dapr Sidecar API。这样可以减少潜在的攻击风险,并确保 Dapr API 仅限于应用程序的实际需求。
Dapr 允许您通过使用 Dapr 配置 设置 API 白名单或黑名单来控制应用程序可以访问哪些 API。
如果未指定 API 白名单或黑名单,默认情况下将允许访问所有 Dapr API。
例如,以下配置为 HTTP 和 gRPC 启用所有 API:
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: myappconfig
namespace: default
spec:
tracing:
samplingRate: "1"
以下示例启用 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
以下示例启用 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
以下示例禁用 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
以下示例禁用 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
name
字段用于指定您想启用的 Dapr API 名称。
请参考以下列表获取不同 Dapr API 的名称:
API 组 | HTTP API | gRPC API |
---|---|---|
服务调用 | invoke (v1.0 ) | invoke (v1 ) |
状态 | state (v1.0 和 v1.0-alpha1 ) | state (v1 和 v1alpha1 ) |
发布/订阅 | publish (v1.0 和 v1.0-alpha1 ) | publish (v1 和 v1alpha1 ) |
输出绑定 | 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.0 和 v1.0-alpha1 ) | configuration (v1 和 v1alpha1 ) |
分布式锁 | 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 ) |