envoyproxy / envoyproxy/gateway

Add support for dynamic metadata in http ext authz

Open
#4,163 7 comments 1 reaction 0 assignees View on GitHub
area/api help wanted
Dominant language
Go
Stars
3k
Forks
864
Avg merge
2d 2h
Merged PRs (30d)
140

Description

*Description*:
We have a use case that requires emitting specific information from the external authz service into the logs, and this can be achieved using dynamic metadata. In the grpc ext_authz, dynamic metadata can be included directly as part of `CheckResponse`. However, in the http ext_authz, the only method to pass this information is by sending it as response headers, which are then emitted via the `dynamic_metadata_from_headers`.

It would be great if the [dynamic_metadata_from_headers](https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/http/ext_authz/v3/ext_authz.proto#extensions-filters-http-ext-authz-v3-authorizationresponse) field can be exposed

*proposal*:
In the current implementation, `allowed_upstream_headers` is already implemented as `headersToBackend` with support for the `exact` match type only. We can extend the functionality to include `dynamic_metadata_from_headers` to support this.

`headersToMetadata` seems like a suitable option for `dynamic_metadata_from_headers`. However, I welcome any feedback and suggestions

```
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: SecurityPolicy
metadata:
name: ext-auth-example
spec:
extAuth:
failOpen: false
http:
backendRefs:
- group: ""
kind: Service
name: http-ext-auth
port: 9002
headersToMetadata:
- x-user-id
targetRefs:
- group: gateway.networking.k8s.io
kind: HTTPRoute
name: backend
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.