rbac: add support for upstream ip policy. (#17645)
Based on the dicsussion in the issue https://github.com/envoyproxy/envoy/issues/17410, this PR adds implementation for ability to add rbac policy to filter upstream ip addresses for dynamically resolved domains (by dynamic proxy filter). Signed-off-by: Jojy George Varghese <jojy_varghese@apple.com> Mirrored from https://github.com/envoyproxy/envoy @ 53f95570a7e9d7fa5414a4bc145852524fa017edpull/624/head
parent
eb207d5661
commit
0ba1805d60
6 changed files with 62 additions and 1 deletions
@ -0,0 +1,13 @@ |
||||
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||
|
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
deps = [ |
||||
"//envoy/config/core/v3:pkg", |
||||
"//envoy/type/v3:pkg", |
||||
"@com_github_cncf_udpa//udpa/annotations:pkg", |
||||
], |
||||
) |
@ -0,0 +1,35 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.extensions.rbac.matchers.upstream_ip_port.v3; |
||||
|
||||
import "envoy/config/core/v3/address.proto"; |
||||
import "envoy/type/v3/range.proto"; |
||||
|
||||
import "udpa/annotations/status.proto"; |
||||
|
||||
option java_package = "io.envoyproxy.envoy.extensions.rbac.matchers.upstream_ip_port.v3"; |
||||
option java_outer_classname = "UpstreamIpPortMatcherProto"; |
||||
option java_multiple_files = true; |
||||
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||
|
||||
// [#protodoc-title: RBAC upstream IP and port matcher plugin] |
||||
// [#extension: envoy.rbac.matchers.upstream_ip_port] |
||||
|
||||
// This is configuration for matching upstream ip and port. |
||||
// Note that although both fields are optional, at least one of IP or port must be supplied. If only |
||||
// one is supplied the other is a wildcard match. |
||||
// This matcher requires a filter in the chain to have saved the upstream address in the |
||||
// filter state before the matcher is executed by RBAC filter. The state should be saved with key |
||||
// `envoy.stream.upstream_address` (See |
||||
// :repo:`upstream_address.h<source/common/stream_info/upstream_address.h>`). |
||||
// Also, See :repo:`proxy_filter.cc< |
||||
// source/extensions/filters/http/dynamic_forward_proxy/proxy_filter.cc>` for an example of a |
||||
// filter which populates the FilterState. |
||||
message UpstreamIpPortMatcher { |
||||
// A CIDR block that will be used to match the upstream IP. |
||||
// Both Ipv4 and Ipv6 ranges can be matched. |
||||
config.core.v3.CidrRange upstream_ip = 1; |
||||
|
||||
// A port range that will be used to match the upstream port. |
||||
type.v3.Int64Range upstream_port_range = 2; |
||||
} |
Loading…
Reference in new issue