agent-substrate / agent-substrate/substrate

Generalize EgressPolicy header modification with literal and secret-backed values

オープン
#1,538 コメント 0 件 リアクション 1 件 担当者 0 名 GitHub で見る
area/api area/network kind/feature
主要言語
Go
スター
1.8k
フォーク
316
平均マージ
2日 43分
マージ済み PR(30日)
287

説明

The current `inject_static_headers` API requires a credential reference for every header. Replace this credential-specific model with a generic request header modifier supporting `set`, `add`, and `remove`, with secrets as one possible value source.

```yaml
effects:
requestHeaderModifier:
set:
- name: X-Client-Version
value: "2026-09"
- name: Authorization
secret:
uri: substrate-secret://example.com/provider/api-token
prefix: "Bearer "
add:
- name: X-Client-Tag
value: substrate
remove:
- X-Internal-Debug
```

Proposed types:

```proto
message RequestHeaderModifier {
repeated HeaderValue set = 1;
repeated HeaderValue add = 2;
repeated string remove = 3;
}

message HeaderValue {
string name = 1;

oneof source {
string value = 2;
SecretHeaderValue secret = 3;
}
}

message SecretHeaderValue {
string uri = 1;
string prefix = 2;
}
```

Expose `RequestHeaderModifier` through `EgressRuleEffects.request_header_modifier`. This follows Gateway API’s `RequestHeaderModifier` operation model while extending header values to support secret references.

**Behavior**

- `set` replaces all existing values for the named header.
- `add` appends a value while preserving existing values.
- `remove` deletes all values for the named header; an absent header is a no-op.
- Header names are case-insensitive. Each header may appear only once across the operations, making operation order irrelevant.
- Values are either literals or secret references. Secret-backed values are constructed as `prefix + resolved secret`, preserving support for `Bearer ` without a template language.
- The modifier applies only to requests authorized by the first matching hostname rule.

Related: #1317 — Add extension points to egress policy.

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。