1. Envoy RBAC 如何实现角色访问控制?
Envoy 的 RBAC 过滤器如何实现角色访问控制?
- Envoy RBAC filter 基于 source/destination 与权限做允许/拒绝
- 语法:principal(主体)+ permissions(权限)
- 结合 header/连接/元数据匹配
Envoy 的 RBAC 过滤器(envoy.filters.http.rbac 或 network.rbac)基于"主体(principal)+ 权限(permissions)"做访问控制。规则定义某主体(如特定 IP、下游连接、header、metadata)是否拥有某权限(如访问特定路径、方法、端口)。匹配条件可基于 source IP、header、path、method、连接元数据。允许矩阵(permissive)或拒绝矩阵(deny)语义。它常用于服务网格:在 sidecar 上给服务配置访问控制(如只允许特定来源访问某 /admin 路径),实现零信任的细粒度授权。配置在 Envoy 的 filter 中声明 rules,与认证(JWT auth)配合。
Envoy RBAC 的核心是"主体+权限"的规则引擎,支持 source/destination/header 匹配。它把访问控制下沉到 L4/L7 代理,实现服务间授权。
http_filters:
- name: envoy.filters.http.rbac
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.rbac.v3.RBAC
rules:
action: ALLOW
policies:
admin_policy:
permissions:
- header: { name: ':path', prefix_match: '/admin' }
principals:
- remote_ip: { address_prefix: 10.0.0.0/8 }