pub struct DeclaredAuthoritySurface {
pub egress_rules: Vec<EgressRule>,
pub secret_refs: Vec<String>,
pub dns_queries: Vec<String>,
}Expand description
Capability surface declared by the in-VM guest agent.
Distinct from AuthorityCapability (what the host has authorized) —
DeclaredAuthoritySurface is what the workload CLAIMS it will use. The
host validates declared ⊆ authorized via
validate_declared_authority_surface before accepting any guest-side
telemetry per ADR-0006 §3.
All three fields are bare-data: no derivation bookkeeping, no signature,
no ADG. The surface is treated as an input to host-side validation, not
as evidence in itself. Backing evidence for individual events lives in
crate::authority::DeclaredAuthority.
An empty surface (all three fields empty) is valid — it means the workload claims the minimal authority surface, which is always a subset of any authorized capability.
Fields§
§egress_rules: Vec<EgressRule>Egress rules the workload declares it will exercise. Checked as a
subset of the authorizing AuthorityCapability::egress_rules under
the same host/port/protocol equality the host-side superset check uses
(host case-insensitive, port and protocol exact).
secret_refs: Vec<String>Secret refs the workload declares it will request from the broker.
Checked as a subset of AuthorityCapability::secret_refs.
dns_queries: Vec<String>Hostname patterns the workload declares it will resolve. Kept as a
distinct list from egress_rules because DNS resolution can target
hostnames the cell does not subsequently dial (e.g. health-check
lookups, telemetry of getaddrinfo calls). The host does not
subset-check these against egress_rules — DNS authority lives on its
own dimension (see crate::types::DnsAuthority). The list is
retained here so the host can later cross-reference against
dnsAuthority.hostnameAllowlist if the surface is wired into the
SEC-21 / SEC-22 dataplane validators; F2 itself only audits presence.
Implementations§
Trait Implementations§
Source§impl Clone for DeclaredAuthoritySurface
impl Clone for DeclaredAuthoritySurface
Source§fn clone(&self) -> DeclaredAuthoritySurface
fn clone(&self) -> DeclaredAuthoritySurface
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DeclaredAuthoritySurface
impl Debug for DeclaredAuthoritySurface
Source§impl Default for DeclaredAuthoritySurface
impl Default for DeclaredAuthoritySurface
Source§fn default() -> DeclaredAuthoritySurface
fn default() -> DeclaredAuthoritySurface
Source§impl<'de> Deserialize<'de> for DeclaredAuthoritySurface
impl<'de> Deserialize<'de> for DeclaredAuthoritySurface
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for DeclaredAuthoritySurface
impl PartialEq for DeclaredAuthoritySurface
Source§fn eq(&self, other: &DeclaredAuthoritySurface) -> bool
fn eq(&self, other: &DeclaredAuthoritySurface) -> bool
self and other values to be equal, and is used by ==.