Documentation
¶
Overview ¶
Copyright (c) Microsoft Corporation. Licensed under the MIT License. Package policy defines AgentSuite enforcement policy contracts.
Index ¶
- Constants
- func CanonicalBytes(p EffectivePolicy) ([]byte, error)
- func Digest(data []byte) string
- func Validate(p SuitePolicy) error
- func VerifyPayload(p ProviderPayload) error
- type AdministrativePolicy
- type EffectivePolicy
- type NetworkEndpoint
- type NetworkPolicy
- type ProviderPayload
- type SuitePolicy
Constants ¶
const ( SchemaVersion = "agentsuite.policy/v1" SchemaVersionV2 = "agentsuite.policy/v2" FilesystemDenyWrite = "filesystem/deny-write/v1" NetworkEgressAllow = "network/egress-allow/v1" )
Variables ¶
This section is empty.
Functions ¶
func CanonicalBytes ¶
func CanonicalBytes(p EffectivePolicy) ([]byte, error)
CanonicalBytes emits at most 4 MiB of deterministic UTF-8 JSON for a fully valid effective policy.
func Validate ¶
func Validate(p SuitePolicy) error
func VerifyPayload ¶
func VerifyPayload(p ProviderPayload) error
Types ¶
type AdministrativePolicy ¶
type AdministrativePolicy struct {
DenyWritePaths []string `json:"denyWritePaths,omitempty"`
Network *NetworkPolicy `json:"network,omitempty"`
}
AdministrativePolicy adds mandatory restrictions; composition never removes user restrictions.
func DecodeAdministrativePolicy ¶
func DecodeAdministrativePolicy(data []byte) (AdministrativePolicy, error)
DecodeAdministrativePolicy decodes the closed filesystem-only v1 administrative profile.
func DecodeAdministrativePolicyForVersion ¶ added in v0.3.0
func DecodeAdministrativePolicyForVersion(data []byte, version string) (AdministrativePolicy, error)
DecodeAdministrativePolicyForVersion decodes restrictions for one policy profile. In v2 an omitted network is neutral; an explicit empty egressAllow denies all.
type EffectivePolicy ¶
type EffectivePolicy struct {
Version string `json:"version"`
DenyWritePaths []string `json:"denyWritePaths,omitempty"`
Network *NetworkPolicy `json:"network,omitempty"`
RequiredCapabilities []string `json:"requiredCapabilities"`
}
EffectivePolicy is normalized, fully composed policy.
func Resolve ¶
func Resolve(s SuitePolicy, a AdministrativePolicy) (EffectivePolicy, error)
Resolve validates and monotonically composes requested and administrative restrictions.
type NetworkEndpoint ¶ added in v0.3.0
type NetworkEndpoint struct {
Address string `json:"address"`
Protocol string `json:"protocol"`
Port int `json:"port"`
}
NetworkEndpoint is one literal canonical IPv4 address, TCP protocol, and explicit port.
type NetworkPolicy ¶ added in v0.3.0
type NetworkPolicy struct {
EgressAllow []NetworkEndpoint `json:"egressAllow"`
}
NetworkPolicy is an exact endpoint allow ceiling. An explicit empty list denies all egress.
type ProviderPayload ¶
type ProviderPayload struct {
Version string `json:"version"`
PolicyBytes []byte `json:"policyBytes"`
PolicyDigest string `json:"policyDigest"`
RequiredCapabilities []string `json:"requiredCapabilities"`
}
ProviderPayload carries authoritative canonical bytes. Consumers must preserve PolicyBytes.
func Payload ¶
func Payload(p EffectivePolicy) (ProviderPayload, error)
type SuitePolicy ¶
type SuitePolicy struct {
Version string `json:"version"`
DenyWritePaths []string `json:"denyWritePaths,omitempty"`
Network *NetworkPolicy `json:"network,omitempty"`
RequiredCapabilities []string `json:"requiredCapabilities,omitempty"`
}
SuitePolicy is strict user intent: filesystem restrictions in v1, network restrictions in v2.
func DecodeSuitePolicy ¶
func DecodeSuitePolicy(data []byte) (SuitePolicy, error)
DecodeSuitePolicy strictly decodes exactly one JSON object.