Help us shape the future of Go! Take the 2026 Go Developer Survey

orgpolicy

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 28, 2026 License: EUPL-1.2 Imports: 19 Imported by: 0

Documentation

Overview

Package orgpolicy charge, vérifie et applique la politique d'organisation signée (policy.toml + signature minisign). Ce fichier contient la vérification des signatures minisign (Ed25519, formats "Ed" et "ED").

Index

Constants

This section is empty.

Variables

View Source
var ErrPolicy = errors.New("policy violation")

ErrPolicy est l'erreur racine : toute erreur de politique l'enveloppe.

Functions

func HostOf

func HostOf(rawURL string) string

HostOf renvoie l'hôte de l'URL en minuscules, sans port ; "" en cas d'erreur.

func Resolve

func Resolve(getenv func(string) string) (dir string, system bool)

Resolve détermine le répertoire de politique : le répertoire système s'il contient policy.toml (system = true), sinon TENON_POLICY_DIR.

func SystemDir

func SystemDir() string

SystemDir renvoie le répertoire système des politiques.

func Verify

func Verify(pk PublicKey, msg, sig []byte) (trustedComment string, err error)

Verify vérifie la signature minisign sig de msg avec pk et renvoie le commentaire de confiance (authentifié par la signature globale).

Types

type ACP added in v0.9.0

type ACP struct {
	NoEditorMCP bool
}

ACP : [acp] de la politique. NoEditorMCP : « accept_editor_mcp = false » (« true » est refusé : une politique ne peut qu'interdire).

type AuditTimestamp

type AuditTimestamp struct {
	URL string
	CA  []byte
}

AuditTimestamp : horodatage RFC 3161 imposé. CA : PEM des racines de confiance de l'autorité (nil = racines système).

type Budget added in v0.8.0

type Budget struct {
	SessionTokens int64 `toml:"session_tokens"`
}

Budget : [budget] de la politique. Seul session_tokens est imposable ; la valeur est strictement positive (0 = non imposé).

type Classification

type Classification struct {
	Paths   []string `toml:"paths"`
	Markers []string `toml:"markers"`
}

Classification : règles de sensibilité imposées ([classification]).

type MCP

type MCP struct {
	Mode          string   `toml:"mode"`
	AllowHosts    []string `toml:"allow_hosts"`
	AllowCommands []string `toml:"allow_commands"`
}

MCP restreint les serveurs MCP ; Mode "" équivaut à "any".

type Memory added in v0.8.0

type Memory struct {
	Disabled         bool
	NoProject        bool
	MaxRetentionDays int
}

Memory : [memory] de la politique. Disabled : « enabled = false » (« true » est sans effet) ; NoProject : « project = false » ; MaxRetentionDays : plafond de rétention (0 = non imposé).

type Policy

type Policy struct {
	ID         string
	Version    int
	Profile    profile.Name    // plancher ; "" = aucun
	Providers  *Providers      // nil : pas de liste blanche
	Rules      []Rule          // [[permissions.rules]]
	Redaction  []Redaction     // [[redaction.rules]]
	AuditLevel string          // [audit] level ; "" = non imposé
	Timestamp  *AuditTimestamp // [audit.timestamp] ; nil = non imposé
	MCP        MCP
	Sandbox    Sandbox // [sandbox] ; Mode "" = non imposé
	// Classification : chemins et marqueurs ajoutés à ceux de la config.
	Classification Classification
	// Routing : fournisseur local imposé ("" = non imposé).
	Routing Routing
	// Budget : plafond de tokens par session imposé (0 = non imposé).
	Budget Budget
	// Memory : coupures et plafond de rétention de la mémoire imposés.
	Memory Memory
	// ACP : coupure des serveurs MCP de l'éditeur imposée.
	ACP   ACP
	KeyID string // renseigné par Load
}

Policy est la politique d'organisation décodée et validée.

func Load

func Load(dir string, checkPermsOn bool) (*Policy, error)

Load lit, vérifie et décode la politique de dir. Renvoie nil, nil si dir est vide ou si policy.toml est absent.

func Parse

func Parse(b []byte) (Policy, error)

Parse décode et valide strictement une politique.

func (*Policy) AllowsHost

func (p *Policy) AllowsHost(host string) bool

AllowsHost indique si un fournisseur sur cet hôte est admis. Un *Policy nil n'impose rien.

func (*Policy) AllowsMCP

func (p *Policy) AllowsMCP(transport, rawURL, command0 string) bool

AllowsMCP indique si un serveur MCP est admis (transport "http" ou "stdio").

type ProviderDef

type ProviderDef struct {
	ID            string `toml:"id"`
	Name          string `toml:"name"`
	BaseURL       string `toml:"base_url"`
	APIKeyEnv     string `toml:"api_key_env"`
	Model         string `toml:"model"`
	Country       string `toml:"country"`
	Jurisdiction  string `toml:"jurisdiction"`
	ContextWindow int    `toml:"context_window"`
	// Qualifications : qualifications déclarées par l'organisation.
	Qualifications []string `toml:"qualifications"`
}

ProviderDef est un fournisseur fourni par l'organisation.

type Providers

type Providers struct {
	AllowHosts []string      `toml:"allow_hosts"`
	AllowLocal bool          `toml:"allow_local"`
	Define     []ProviderDef `toml:"define"`
}

Providers porte la liste blanche et les fournisseurs imposés.

type PublicKey

type PublicKey struct {
	KeyID [8]byte
	Key   ed25519.PublicKey
}

PublicKey est une clé publique minisign.

func ParsePublicKey

func ParsePublicKey(b []byte) (PublicKey, error)

ParsePublicKey accepte le fichier .pub (commentaire + base64) ou la ligne base64 seule.

func (PublicKey) ID

func (k PublicKey) ID() string

ID renvoie l'identifiant de clé tel qu'affiché par minisign.

type Redaction

type Redaction struct {
	Name    string `toml:"name"`
	Pattern string `toml:"pattern"`
}

Redaction est un motif de masquage imposé.

type Routing

type Routing struct {
	Local string `toml:"local"`
}

Routing : [routing] de la politique. Seul local est imposable ; le fournisseur est vérifié à l'application (config.ApplyPolicy).

type Rule

type Rule struct {
	Tool     string `toml:"tool"`
	Match    string `toml:"match"`
	Decision string `toml:"decision"`
}

Rule est une règle de permission (deny ou ask uniquement).

type Sandbox

type Sandbox struct {
	Mode     string   `toml:"mode"`
	DenyRead []string `toml:"deny_read"`
}

Sandbox : confinement imposé. Mode : "auto" ou "required" ("off" refusé). Les chemins sont absolus ou commencent par « ~/ ».

Directories

Path Synopsis
Package orgpolicytest fournit des aides de test : génération d'une clé Ed25519 éphémère et écriture d'une politique signée au format minisign.
Package orgpolicytest fournit des aides de test : génération d'une clé Ed25519 éphémère et écriture d'une politique signée au format minisign.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL