// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 syntax = "proto3"; package hashicorp.consul.mesh.v2beta1.pbproxystate; message TrafficPermissions { repeated Permission allow_permissions = 1; repeated Permission deny_permissions = 2; // default_allow determines if the workload is in default allow mode. This is determined // by combining the cluster's default allow setting with the is_default property on // computed traffic permissions. bool default_allow = 4; } message Permission { repeated Principal principals = 1; // In the case of multiple ports, the sidecar proxy controller is responsible for filtering // per-port permissions. repeated DestinationRule destination_rules = 2; } message Principal { Spiffe spiffe = 1; repeated Spiffe exclude_spiffes = 2; } message Spiffe { // regex is the regular expression for matching spiffe ids. string regex = 1; // xfcc_regex specifies that Envoy needs to find the spiffe id in an xfcc header. // It is currently unused, but considering this is important for to avoid breaking changes. string xfcc_regex = 2; } message DestinationRule { string path_exact = 1; string path_prefix = 2; string path_regex = 3; repeated string methods = 4; repeated DestinationRuleHeader destination_rule_header = 5; repeated ExcludePermissionRule exclude = 6; } message DestinationRuleHeader { string name = 1; bool present = 2; string exact = 3; string prefix = 4; string suffix = 5; string regex = 6; bool invert = 7; } message ExcludePermissionRule { string path_exact = 1; string path_prefix = 2; string path_regex = 3; repeated string methods = 4; repeated DestinationRuleHeader headers = 5; }