Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultExpiration ¶
func DefaultExpiration() string
DefaultExpiration returns the default certificate expiration duration
func DefaultExtensions ¶
DefaultExtensions returns the default SSH certificate extensions
Types ¶
type DefaultPolicy ¶
type DefaultPolicy struct {
Allow map[string][]string `yaml:"allow,omitempty" json:"allow,omitempty"` // principal → allowed tags
Expiration string `yaml:"expiration,omitempty" json:"expiration,omitempty"` // Default cert expiration (e.g., "5m")
Extensions map[string]string `yaml:"extensions,omitempty" json:"extensions,omitempty"` // Default cert extensions
}
DefaultPolicy defines default policy settings
type HostPolicy ¶
type HostPolicy struct {
Allow map[string][]string `yaml:"allow,omitempty" json:"allow,omitempty"` // principal → allowed tags
Expiration string `yaml:"expiration,omitempty" json:"expiration,omitempty"` // Override expiration
Extensions map[string]string `yaml:"extensions,omitempty" json:"extensions,omitempty"` // Override extensions
}
HostPolicy defines per-host policy overrides
type OIDCConfig ¶
type OIDCConfig struct {
Issuer string `yaml:"issuer" json:"issuer"`
Audience string `yaml:"audience" json:"audience"`
}
OIDCConfig represents OIDC configuration
type PolicyConfig ¶
type PolicyConfig struct {
CAPublicKey string `yaml:"ca_public_key" json:"ca_public_key"`
OIDC OIDCConfig `yaml:"oidc" json:"oidc"`
Users map[string][]string `yaml:"users" json:"users"` // user identity → tags
Defaults *DefaultPolicy `yaml:"defaults,omitempty" json:"defaults,omitempty"`
Hosts map[string]*HostPolicy `yaml:"hosts,omitempty" json:"hosts,omitempty"` // hostname → host policy
}
PolicyConfig represents the policy server configuration
func LoadFromFile ¶
func LoadFromFile(path string) (*PolicyConfig, error)
LoadFromFile loads policy configuration from a file or directory.
For .cue files: Uses CUE's load.Instances to support CUE packages with imports and modules. For .yaml/.yml/.json files: Uses direct parsing for standalone data files. For directories: Loads all .cue files as a package (supports imports between files).
Examples:
- Single YAML: LoadFromFile("policy.yaml")
- Single CUE: LoadFromFile("policy.cue")
- CUE directory: LoadFromFile("./config") // loads all .cue files as a package
- With imports: CUE files in a directory can import each other
func (*PolicyConfig) Validate ¶
func (c *PolicyConfig) Validate() error
Validate checks that the configuration is valid