外部授权

外部授权网络过滤器调用外部授权服务去检查传入请求是否被授权。如果请求被网络过滤器视为未经授权那么连接将会被关闭。

Tip

建议在过滤器链中首先配置此过滤器,以便可以在其他过滤器处理请求之前授权请求。

传递到授权服务的请求内容由 CheckRequest 来决定。

网络过滤器、gRPC 服务都可以在下面配置。你可以在 网络过滤器 上看到所有的配置选项。

示例

一个简单的过滤器配置如下:

filters:
  - name: envoy.filters.network.ext_authz
    typed_config:
      "@type": type.googleapis.com/envoy.extensions.filters.network.ext_authz.v3.ExtAuthz
      stat_prefix: ext_authz
      grpc_service:
        envoy_grpc:
          cluster_name: ext-authz
      include_peer_certificate: true

clusters:
  - name: ext-authz
    type: static
    http2_protocol_options: {}
    load_assignment:
      cluster_name: ext-authz
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 127.0.0.1
                port_value: 10003

统计信息

网络过滤器在 config.ext_authz. 命名空间中输出统计信息。

名称

类型

描述

total

Counter

来自过滤器的响应总数

error

Counter

连接外部服务的异常总数

denied

Counter

来自授权服务的拒绝的响应总数

disabled

Counter

由于过滤器未启用而未调用外部服务的通过请求总数

failure_mode_allowed

Counter

由于 failure_mode_allow 设置为 true 而允许的请求异常总数

ok

Counter

来自授权服务的允许通过的响应总数

cx_closed

Counter

关闭的连接总数

active

Gauge

当前传输到授权服务的活跃请求总数

动态元数据

只有当 gRPC 授权服务返回一个包含 检查响应 字段的 dynamic_metadata 时,外部授权过滤器才会将动态元数据以不透明的 google.protobuf.Struct 的形式发出。