安全概览
Envoy 作为服务网格和 API 网关的流量枢纽,内置了丰富的安全能力,帮助企业实现零信任架构、细粒度访问控制和全链路加密。
核心安全能力
- TLS/mTLS 加密:支持下游(客户端到 Envoy)和上游(Envoy 到服务)双向 TLS,保障数据传输安全。
- JWT 认证:内置 JWT 令牌校验,支持多种签名算法,常用于 API 认证和微服务间身份验证。
- 外部授权(ext_authz):支持与外部授权服务(如 OPA、Auth0)集成,实现灵活的访问控制策略。
- RBAC(基于角色的访问控制):可配置细粒度的访问权限,限制不同用户/服务的操作范围。
- WAF(Web 应用防火墙):可集成 Coraza、ModSecurity 等 WAF,防护常见 Web 攻击。
典型配置片段
下游 TLS 配置:
transport_socket:
name: envoy.transport_sockets.tls
typed_config:
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext
common_tls_context:
tls_certificates:
- certificate_chain: { filename: "/etc/envoy/certs/server.crt" }
private_key: { filename: "/etc/envoy/certs/server.key" }
上游 TLS 配置:
transport_socket:
name: envoy.transport_sockets.tls
typed_config:
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
common_tls_context:
validation_context:
trusted_ca: { filename: "/etc/envoy/certs/ca.crt" }
JWT 认证配置:
http_filters:
- name: envoy.filters.http.jwt_authn
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.jwt_authn.v3.JwtAuthentication
providers:
my_jwt_provider:
issuer: "https://issuer.example.com"
audiences: ["api"]
remote_jwks:
http_uri:
uri: "https://issuer.example.com/.well-known/jwks.json"
cluster: jwt_cluster
timeout: 5s
外部授权配置:
http_filters:
- name: envoy.filters.http.ext_authz
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthz
grpc_service:
envoy_grpc:
cluster_name: ext-authz
timeout: 0.5s
工程实践建议
- 强制开启 mTLS,保障服务间通信安全。
- 结合 JWT、RBAC、ext_authz,实现多层次、细粒度的访问控制。
- 配合 WAF 防护常见 Web 攻击,提升整体安全性。
安全是微服务架构的基石,建议在设计之初就纳入全链路加密与访问控制策略。