Documentation
¶
Index ¶
- func GetStringConfig(config map[string]interface{}, key string) string
- func WithIdentity(ctx context.Context, identity *Identity) context.Context
- type Action
- type AuditEntry
- type AuditFilter
- type AuditPlugin
- type AuthPlugin
- type AuthRequest
- type Capability
- type Identity
- type Plugin
- type PolicyDecision
- type PolicyPlugin
- type PolicyRequest
- type Registry
- func (r *Registry) AuditAll(ctx context.Context, entry *AuditEntry)
- func (r *Registry) Auth() AuthPlugin
- func (r *Registry) Init(ctx context.Context, configs map[string]map[string]interface{}) error
- func (r *Registry) ListAll() []Plugin
- func (r *Registry) Policy() PolicyPlugin
- func (r *Registry) Register(p Plugin) error
- func (r *Registry) ShutdownAll(ctx context.Context) error
- type Resource
- type SecretsPlugin
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetStringConfig ¶
Types ¶
type Action ¶
type Action struct {
Method string
Action string // read, write, execute, delete
Resource string // e.g., "stack:web", "container:nginx"
}
Action represents an operation being performed
type AuditEntry ¶
type AuditFilter ¶
type AuditFilter struct {
AgentID string
UserID string
Action string
StartTime *time.Time
EndTime *time.Time
Limit int
}
AuditFilter for querying audit logs
type AuditPlugin ¶
type AuditPlugin interface {
Plugin
// Log writes an audit entry (must not fail)
Log(ctx context.Context, entry *AuditEntry)
// Query retrieves audit logs
Query(ctx context.Context, filter *AuditFilter) ([]AuditEntry, error)
}
AuditPlugin logs all security-relevant events
type AuthPlugin ¶
type AuthPlugin interface {
Plugin
// Authenticate validates credentials and returns identity
Authenticate(ctx context.Context, req *AuthRequest) (*Identity, error)
// Authorize checks if identity can perform action
Authorize(ctx context.Context, identity *Identity, action *Action) error
}
AuthPlugin handles authentication and authorization
type AuthRequest ¶
AuthRequest for authentication
type Capability ¶
type Capability string
const ( CapabilityAuth Capability = "auth" CapabilityAudit Capability = "audit" CapabilitySecrets Capability = "secrets" CapabilityPolicy Capability = "policy" CapabilityStorage Capability = "storage" CapabilityMonitor Capability = "monitoring" CapabilityNotify Capability = "notifications" CapabilitySecurity Capability = "security" )
type Identity ¶
type Identity struct {
UserID string
DeviceID string
Roles []string
Attributes map[string]string
Certificate []byte
}
Identity represents an authenticated entity
func IdentityFromContext ¶
type Plugin ¶
type Plugin interface {
// Name returns unique plugin identifier
Name() string
// Version returns semantic version
Version() string
// Init is called once during plugin load
Init(ctx context.Context, config map[string]interface{}) error
// Shutdown gracefully stops the plugin
Shutdown(ctx context.Context) error
// Capabilities returns what this plugin provides
Capabilities() []Capability
}
Plugin is the core interface all Mandau plugins must implement
type PolicyDecision ¶
type PolicyPlugin ¶
type PolicyPlugin interface {
Plugin
// Evaluate checks if action is permitted
Evaluate(ctx context.Context, req *PolicyRequest) (*PolicyDecision, error)
}
PolicyPlugin enforces fine-grained access control
type PolicyRequest ¶
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry manages plugin lifecycle
func NewRegistry ¶
func NewRegistry() *Registry
func (*Registry) AuditAll ¶
func (r *Registry) AuditAll(ctx context.Context, entry *AuditEntry)
AuditAll logs to all audit plugins
func (*Registry) Auth ¶
func (r *Registry) Auth() AuthPlugin
Auth returns the first auth plugin (chain support later)
func (*Registry) Policy ¶
func (r *Registry) Policy() PolicyPlugin
Policy returns the first policy plugin
type Resource ¶
type Resource struct {
Type string // stack, container, image, file
Identifier string
Labels map[string]string
}
Resource represents the target of an action
type SecretsPlugin ¶
type SecretsPlugin interface {
Plugin
// Get retrieves a secret by key
Get(ctx context.Context, key string) ([]byte, error)
// Set stores a secret
Set(ctx context.Context, key string, value []byte) error
// Delete removes a secret
Delete(ctx context.Context, key string) error
// InjectEnv injects secrets into environment map
InjectEnv(ctx context.Context, env map[string]string) error
}
SecretsPlugin manages secret injection
Click to show internal directories.
Click to hide internal directories.