外部授权

外部授权网络过滤器调用外部授权服务以检查传入请求是否被授权。如果网络过滤器认为请求未经授权,则连接将被关闭。

小贴士

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

传递到授权服务的请求内容由 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
    typed_extension_protocol_options:
      envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
        "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
        explicit_http_config:
          http2_protocol_options: {}
    load_assignment:
      cluster_name: ext-authz
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 127.0.0.1
                port_value: 10003

发送到指定身份验证服务的示例请求主体如下所示

{
  "source":{
    "address":{
      "socket_address":{
        "address": "172.17.0.1",
        "port_value": 56746
      }
    }
  }
  "destination":{
    "service": "www.bing.com",
    "address":{
      "socket_address": {
        "address": "127.0.0.1",
        "port_value": 10003
      }
    }
  }
}

统计信息

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

名称

类型

描述

total

计数器

来自过滤器的总响应。

error

计数器

联系外部服务的总错误。

denied

计数器

来自授权服务的总响应,这些响应将拒绝流量。

disabled

计数器

由于过滤器被禁用,因此无需调用外部服务即可允许的总请求。

failure_mode_allowed

计数器

由于 failure_mode_allow 设置为 true,因此出现错误但允许的总请求。

ok

计数器

来自授权服务的总响应,这些响应将允许流量。

cx_closed

计数器

已关闭的总连接。

active

仪表

正在传输到授权服务的总活动请求。

动态元数据

外部授权过滤器仅在 gRPC 授权服务器返回具有非空 CheckResponse 字段的 dynamic_metadata 时才作为不透明的 google.protobuf.Struct 发射动态元数据。