Require explicit canonical network readiness targets

This commit is contained in:
ms2k 2026-07-16 20:41:13 +09:00
commit fbd332c31f
2 changed files with 339 additions and 12 deletions

View file

@ -17,5 +17,10 @@ volumes = [
{ host = "{profile_dir}/agent-state", container = "/root/.local/state/agent", kind = "directory", access = "read-write", create = true },
]
[profiles.default.readiness]
denied = [{ address = "10.20.30.40", port = 443 }]
permitted = [{ address = "203.0.113.10", port = 443 }]
dns = [{ resolver = "198.51.100.53", query = "example.invalid" }]
[profiles.default.escalation]
enabled = false

View file

@ -36,9 +36,13 @@ tables, field aliases, and unknown enumeration values.
| profile | `persistent_dirs` | optional list of sandbox paths; defaults empty |
| profile | `allow_egress` | optional list of IPv4 prefixes; defaults empty |
| profile | `deny_egress` | optional list of IPv4 prefixes; defaults empty |
| profile | `readiness` | required at load for the selected profile; closed denied, permitted, and DNS target table |
| profile | `env` | optional map from sandbox environment name to `env:` reference; defaults empty |
| profile | `volumes` | optional list of volume tables; defaults empty |
| profile | `escalation` | optional table; defaults to disabled with no rules |
| `readiness` | `denied` | one to 32 unique `{ address = IPv4, port = nonzero }` targets denied by effective policy |
| `readiness` | `permitted` | one to 32 unique `{ address = IPv4, port = nonzero }` targets allowed by effective policy |
| `readiness` | `dns` | one to 32 unique `{ resolver = IPv4, query = strict DNS name }` targets |
| volume | `host` | required host path |
| volume | `container` | required sandbox path |
| volume | `kind` | required: `file` or `directory` |
@ -148,6 +152,7 @@ classDiagram
volumes
effective_allow_prefixes
effective_deny_prefixes
network_readiness
escalation_enabled
auto_approval_rules
}
@ -174,6 +179,13 @@ classDiagram
allow_extra_args
}
class ResolvedNetworkReadinessV1 {
<<serialized>>
denied
permitted
dns
}
class ConfinedPathPlan {
<<runtime>>
retained_ancestor
@ -190,6 +202,7 @@ classDiagram
ConfigurationFingerprintRecordV1 --> EnvironmentReference
ConfigurationFingerprintRecordV1 --> ResolvedVolume
ConfigurationFingerprintRecordV1 --> ResolvedAutoApprovalRule
ConfigurationFingerprintRecordV1 --> ResolvedNetworkReadinessV1
ResolvedDomainConfiguration --> ConfinedPathPlan
```