You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ess verify bindings reads ess-observed-bindings/2, whose optional foreign_containers
acknowledges, per bound workload, a container or native sidecar the service does not build (a
mesh proxy, a vendor agent) by name and nonempty reason. OBS-BIND-008 counts it as
accounted for instead of requiring a binding that would misstate it, and the report lists it
under the binding's acknowledged, not as a binding. An acknowledged container running a
binding's declared image or an implementation's artifact locator, or the same @sha256: digest
under another repository or tag, or a container artifact's identity digest, violates OBS-BIND-008; tags alone are not compared. An
acknowledgement naming no observed container or native sidecar leaves OBS-BIND-008 unknown, naming it: the infrastructure model does not record plain init containers, so it
may name one. One naming a bound container, a workload no binding binds, a duplicate or a
blank reason is refused before collection. ess-observed-bindings/1 is read unchanged,
acknowledges nothing and keeps its binding digest; a /1 document carrying the key, even as [], is refused, and older readers refuse /2. The report is now ess-observed-bindings-report/3: it adds acknowledged, and a
satisfied OBS-BIND-008 no longer means every entry is bound.
Security
A full Kubernetes scan no longer writes a digest or length of any Secret value. It used to write
each value's unsalted SHA-256 and exact byte length, so anyone holding the observation file could
confirm a guess of a low-entropy secret such as hunter2. The scanner now writes infra-observation/3, where each Secret data/stringData value is {"present": true}: the
key name and that a value exists. The observation reader refuses anything else beside the marker
(INFRA-SECRET-003).
Compiling any full observation with a Secret key, infra-observation/1 included, writes infra-ir/3, whose Secret keys hold the same marker and nothing derived from the value. A
legacy /1 observation is still read; its digests are checked for shape and discarded. An IR
without a Secret key keeps infra-ir/1 and its bytes.
A legacy infra-ir/1 is read with its own digest checked and then returned with each Secret
key reduced to presence, as infra-ir/3. ess infra import kubernetes --path <legacy> --out
writes that IR/3, and every derived document — graph source_digest, drift from/to,
the simulation snapshot, the projection snapshot_digest and SUMMARY.md, and the
observed-bindings observation digest — names its model digest. None of them chains to the
legacy file's own digest any more: that digest, computed over the unsalted Secret digests, would
confirm a guessed value beside the IR/3 written from the same file.
A Secret item in an observation, or a Secret block in an IR document, that does not read as its
shape is refused with fixed text (INFRA-OBJECT-001, INFRA-IR-003). The refusal used to be
the parser's message, which quotes the value it could not read, such as invalid type: string "…".
Changed
ess infra diff writes infra-drift/3 for full scans and no longer detects a rotated Secret
value. For a Secret, config_content_changed names added and removed keys, and changed_keys
is always empty, including between two legacy infra-ir/1 documents, whose digests are
dropped when they are read. An empty list therefore means "not known"
where infra-drift/1 meant "not rotated", hence the new version; /2 stays the namespace
topology profile. Detecting a rotation needs a record derived from the value, and an unsalted
digest of a low-entropy secret is a guess oracle. Configmap content changes are detected as
before.
A lowering targets Entity Runtime 0.24.1: entity-core moves from 0.23.0 and ENTITY_RUNTIME_REVISION names 4746bd7c, the locked commit. The new starts_with and ends_with conditions are not emitted, so lowered definitions are unchanged apart from the
target revision they name.