Documentation
¶
Overview ¶
Package middleware provides HTTP middleware for audit logging
Package middleware provides authentication and authorization middleware for the KubeChat API ¶
Package middleware provides comprehensive authentication audit logging for security compliance ¶
Package middleware provides enhanced error context and debugging for RBAC validation (Story 2.5)
Package middleware provides interactive permission resolution for KubeChat (Story 2.5)
Package middleware provides JWT token management for secure authentication ¶
Package middleware provides multi-factor authentication support for KubeChat ¶
Package middleware provides integration between MFA components (Story 2.4 Task 5)
Package middleware provides MFA policy management for enterprise MFA integration ¶
Package middleware provides MFA session state management for KubeChat ¶
Package middleware provides namespace access validation for Kubernetes RBAC integration ¶
Package middleware provides RBAC permission suggestion engine for KubeChat (Story 2.5)
Package middleware provides RBAC permission validation for secure Kubernetes operations ¶
Package middleware provides SAML authentication fallback for legacy enterprise systems ¶
Package middleware provides enhanced security features for authentication ¶
Package middleware provides administrative session management interface for security compliance ¶
Package middleware provides session security hardening for enhanced protection
Index ¶
- Variables
- func CreateFallbackHandler(authMiddleware *AuthMiddleware, samlProvider *SAMLProvider) fiber.Handler
- func CreateSAMLRoutes(app fiber.Router, samlProvider *SAMLProvider)
- func EncodePrivateKeyToPEM(privateKey *rsa.PrivateKey) string
- func GenerateSecretKey() (string, error)
- func GetSAMLProviderTemplates() map[string]SAMLConfig
- func GetSupportedProviders() map[string]OIDCProvider
- func NewAuditMiddleware(config AuditConfig) fiber.Handler
- func SessionLifecycleAuditMiddleware(collector EventCollectorInterface, serviceName, serviceVersion string) fiber.Handler
- func ValidateProviderConfiguration(provider OIDCProvider) error
- type AccessRequest
- type AdminSessionManager
- func (asm *AdminSessionManager) BulkExtendSessions(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) BulkTerminateSessions(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) GenerateActivityReport(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) GenerateComplianceAudit(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) GetSecurityEvents(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) GetSessionActivity(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) GetSessionDetails(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) GetSessionMetrics(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) GetUserSessions(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) ListActiveSessions(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) SetupAdminRoutes(router *mux.Router)
- func (asm *AdminSessionManager) TerminateSession(w http.ResponseWriter, r *http.Request)
- func (asm *AdminSessionManager) TerminateUserSessions(w http.ResponseWriter, r *http.Request)
- type ApprovalInfo
- type ApprovalStatus
- type AuditConfig
- type AuditEntry
- type AuditSeverity
- type AuthAuditConfig
- type AuthAuditEntry
- type AuthAuditLogger
- func (a *AuthAuditLogger) GetAuditMetrics() map[string]interface{}
- func (a *AuthAuditLogger) LogAuthEvent(ctx context.Context, event *AuthAuditEntry) error
- func (a *AuthAuditLogger) LogCommandExecution(ctx context.Context, userID, sessionID string, claims *JWTClaims, ...) error
- func (a *AuthAuditLogger) LogLoginAttempt(ctx context.Context, userID, username, email string, success bool, ...) error
- func (a *AuthAuditLogger) LogSessionEvent(ctx context.Context, eventType AuthEvent, sessionID, userID, reason string) error
- func (a *AuthAuditLogger) LogSuspiciousActivity(ctx context.Context, userID, sessionID, activity string, riskScore int, ...) error
- func (a *AuthAuditLogger) VerifySignature(entry *AuthAuditEntry) bool
- type AuthEvent
- type AuthMiddleware
- func (m *AuthMiddleware) GetAuthURL(providerName string, state string) (string, error)
- func (m *AuthMiddleware) GetProviders() []string
- func (m *AuthMiddleware) HandleCallback(c fiber.Ctx) error
- func (m *AuthMiddleware) ListProviders() fiber.Handler
- func (m *AuthMiddleware) RequireAuthentication() fiber.Handler
- type AuthenticationError
- type BruteForceEntry
- type BruteForceProtection
- type BulkSessionOperation
- type CacheAccess
- type CircuitBreaker
- func (cb *CircuitBreaker) Execute(fn func() error) error
- func (cb *CircuitBreaker) ForceClose()
- func (cb *CircuitBreaker) ForceOpen()
- func (cb *CircuitBreaker) GetMetrics() map[string]interface{}
- func (cb *CircuitBreaker) IsClosed() bool
- func (cb *CircuitBreaker) IsHalfOpen() bool
- func (cb *CircuitBreaker) IsOpen() bool
- type CircuitBreakerConfig
- type CircuitBreakerError
- type CircuitBreakerState
- type ComplianceConfig
- type ComplianceContext
- type ComplianceFramework
- type ComplianceReport
- type ComplianceViolation
- type ConflictingPolicy
- type ControlStatus
- type CorrelationEntry
- type EmergencyAccessConfig
- type EnhancedErrorDetails
- type EnhancedRBACContext
- func (ctx *EnhancedRBACContext) AnalyzePermissionFailure(reqCtx context.Context, userClaims *JWTClaims, request *PermissionRequest, ...) (*models.PermissionError, error)
- func (ctx *EnhancedRBACContext) EvaluatePermissionWithContext(reqCtx context.Context, userClaims *JWTClaims, request *PermissionRequest) (*PermissionEvaluationContext, error)
- func (ctx *EnhancedRBACContext) GetPermissionTrace(reqCtx context.Context, requestID string) (*PermissionEvaluationContext, error)
- type EnhancedRBACContextConfig
- type EvaluatedRule
- type EvaluationStep
- type EventCollectorInterface
- type HardwareTokenConfig
- type IPSessionCount
- type InputRequirement
- type InputValidation
- type InteractivePermissionResolver
- func (r *InteractivePermissionResolver) CancelSession(ctx context.Context, sessionID string) error
- func (r *InteractivePermissionResolver) CreateEscalationRequest(ctx context.Context, sessionID, reason string) error
- func (r *InteractivePermissionResolver) ExecuteNextStep(ctx context.Context, sessionID string, userInput map[string]interface{}) (*InteractiveResolutionSession, error)
- func (r *InteractivePermissionResolver) GetAvailableAlternatives(ctx context.Context, sessionID string) ([]models.AlternativeAction, error)
- func (r *InteractivePermissionResolver) GetSession(ctx context.Context, sessionID string) (*InteractiveResolutionSession, error)
- func (r *InteractivePermissionResolver) ListActiveSessions(ctx context.Context, userID string) ([]string, error)
- func (r *InteractivePermissionResolver) StartInteractiveResolution(ctx context.Context, userClaims *JWTClaims, permError *models.PermissionError) (*InteractiveResolutionSession, error)
- func (r *InteractivePermissionResolver) TestPermissionsWithDifferentRoles(ctx context.Context, sessionID string, roles []string) ([]PermissionTestResult, error)
- type InteractiveResolutionSession
- type JWTClaims
- type JWTConfig
- type JWTService
- func (j *JWTService) BlacklistToken(sessionID string) error
- func (j *JWTService) CleanupExpiredSessions() error
- func (j *JWTService) GenerateToken(userID, email, name string) (*TokenPair, error)
- func (j *JWTService) GenerateTokenWithClaims(claims *JWTClaims) (*TokenPair, error)
- func (j *JWTService) GenerateTokenWithNamespaceValidation(claims *JWTClaims, validateNamespaces bool) (*TokenPair, error)
- func (j *JWTService) GetAllActiveSessions(userID string) ([]*SessionInfo, error)
- func (j *JWTService) GetMFAStatus(sessionID string) (*MFASessionStatus, error)
- func (j *JWTService) GetPublicKey() *rsa.PublicKey
- func (j *JWTService) GetPublicKeyPEM() (string, error)
- func (j *JWTService) GetSessionInfo(sessionID string) (*SessionInfo, error)
- func (j *JWTService) GetSessionMetrics() *SessionMetrics
- func (j *JWTService) InvalidateMFAForSessions(userID string) error
- func (j *JWTService) MigrateLegacyClaims(claims *JWTClaims) *JWTClaims
- func (j *JWTService) RefreshToken(refreshToken string) (*TokenPair, error)
- func (j *JWTService) RefreshTokenWithNamespaceValidation(refreshToken string, validateNamespaces bool) (*TokenPair, error)
- func (j *JWTService) RequiresMFAStepUp(sessionID string, operation string) (bool, error)
- func (j *JWTService) SetMFAHandler(handler *MFAHandler)
- func (j *JWTService) SetMFAStepUpRequirement(sessionID string, required bool, operation string) error
- func (j *JWTService) SetNamespaceValidator(validator *NamespaceValidator)
- func (j *JWTService) SetSessionTimeoutPolicies(idle, absolute time.Duration) error
- func (j *JWTService) TerminateAllUserSessions(userID string, reason string) error
- func (j *JWTService) TerminateSession(sessionID string, reason string) error
- func (j *JWTService) UpdateMFAStatus(sessionID string, mfaCompleted bool, method string, validity time.Duration) error
- func (j *JWTService) UpdateSessionActivity(sessionID string) error
- func (j *JWTService) ValidateMFAForOperation(sessionID string, operation string) (bool, error)
- func (j *JWTService) ValidateToken(tokenString string) (*JWTClaims, error)
- func (j *JWTService) ValidateTokenWithRefresh(tokenString string, refreshPermissions bool) (*JWTClaims, error)
- type JWTServiceInterface
- type KubernetesAPICall
- type MFAChallenge
- type MFAComplianceReport
- type MFAConfig
- type MFAHandler
- func (h *MFAHandler) CheckEmergencyAccess(ctx context.Context, userID, emergencyCode string) (bool, error)
- func (h *MFAHandler) CreateChallenge(ctx context.Context, userID string, method MFAMethod, ...) (*MFAChallenge, error)
- func (h *MFAHandler) CreateRetryStrategy(challenge *MFAChallenge, failureReason string) map[string]interface{}
- func (h *MFAHandler) GenerateTOTPSecret(accountName string) (string, string, error)
- func (h *MFAHandler) GetMFAErrorMessage(errorType string, method MFAMethod, context map[string]interface{}) string
- func (h *MFAHandler) GetMFAMethodDisplayName(method MFAMethod) string
- func (h *MFAHandler) GetMFAStepGuidance(method MFAMethod) []string
- func (h *MFAHandler) GetSupportedMethods() []MFAMethod
- func (h *MFAHandler) GetUserFriendlyInstruction(method MFAMethod, step string) string
- func (h *MFAHandler) HandleEmergencyAccess() fiber.Handler
- func (h *MFAHandler) HandleMFAChallenge() fiber.Handler
- func (h *MFAHandler) HandleMFAMethodSwitch() fiber.Handler
- func (h *MFAHandler) HandleMFAValidation() fiber.Handler
- func (h *MFAHandler) IsHighRiskOperation(operation string) bool
- func (h *MFAHandler) RequiresMFA(ctx context.Context, claims *JWTClaims, clientIP string, userAgent string) (bool, []MFAMethod, error)
- func (h *MFAHandler) UpdateMFAStatus(claims *JWTClaims, method MFAMethod, validityDuration time.Duration)
- func (h *MFAHandler) ValidateChallenge(ctx context.Context, challengeID string, response map[string]interface{}) (*MFAResponse, error)
- type MFAIntegrationConfig
- type MFAIntegrationDecision
- type MFAIntegrationService
- func (s *MFAIntegrationService) EvaluateAccess(ctx context.Context, request AccessRequest) (*MFAIntegrationDecision, error)
- func (s *MFAIntegrationService) GenerateComplianceReport(ctx context.Context, startTime, endTime time.Time) (*MFAComplianceReport, error)
- func (s *MFAIntegrationService) GetUserMFAStatus(ctx context.Context, userID string) (*UserMFAStatus, error)
- func (s *MFAIntegrationService) HealthCheck(ctx context.Context) map[string]interface{}
- func (s *MFAIntegrationService) InvalidateUserMFA(ctx context.Context, userID string, reason string) error
- func (s *MFAIntegrationService) RefreshPolicies(ctx context.Context) error
- func (s *MFAIntegrationService) ValidateMFAChallenge(ctx context.Context, challengeID string, response map[string]interface{}) (*MFAValidationResult, error)
- type MFAMethod
- type MFAOperationConfig
- type MFAOperationRisk
- type MFAPolicy
- type MFAPolicyConfig
- type MFAPolicyEngine
- func (e *MFAPolicyEngine) CreatePolicy(policy *MFAPolicy) error
- func (e *MFAPolicyEngine) DeletePolicy(policyName string) error
- func (e *MFAPolicyEngine) EvaluatePolicy(ctx context.Context, evalCtx PolicyEvaluationContext) (*PolicyDecision, error)
- func (e *MFAPolicyEngine) GenerateComplianceReport(startTime, endTime time.Time) (*MFAComplianceReport, error)
- func (e *MFAPolicyEngine) GetPolicy(policyName string) (*MFAPolicy, error)
- func (e *MFAPolicyEngine) ListPolicies() map[string]*MFAPolicy
- func (e *MFAPolicyEngine) UpdatePolicy(policy *MFAPolicy) error
- type MFAPolicyEngineConfig
- type MFARequiredAction
- type MFAResponse
- type MFASessionManager
- func (m *MFASessionManager) CompleteMFAStepUp(ctx context.Context, sessionID, operation, method string) error
- func (m *MFASessionManager) GetMFAOperationRequirements() fiber.Handler
- func (m *MFASessionManager) GetMFAStatus(ctx context.Context, sessionID string) (*MFASessionStatus, error)
- func (m *MFASessionManager) GetSessionMFAStatus() fiber.Handler
- func (m *MFASessionManager) InvalidateMFAForSessions(ctx context.Context, userID string) error
- func (m *MFASessionManager) InvalidateSessionMFA() fiber.Handler
- func (m *MFASessionManager) RequiresMFAMiddleware(operation string) fiber.Handler
- func (m *MFASessionManager) SetMFAStepUpRequirement(ctx context.Context, sessionID string, required bool, operation string) error
- func (m *MFASessionManager) UpdateMFAStatus(ctx context.Context, sessionID, userID string, mfaCompleted bool, ...) error
- func (m *MFASessionManager) ValidateMFAForOperation(ctx context.Context, sessionID, operation string) (bool, error)
- type MFASessionStatus
- type MFAValidationResult
- type NamespaceAccessResult
- type NamespaceValidator
- func (nv *NamespaceValidator) GetCacheHitRatio() float64
- func (nv *NamespaceValidator) GetCacheStats(ctx context.Context) (map[string]interface{}, error)
- func (nv *NamespaceValidator) GetMetrics() *ValidationMetrics
- func (nv *NamespaceValidator) InvalidateAllCache(ctx context.Context) error
- func (nv *NamespaceValidator) InvalidateUserCache(ctx context.Context, kubernetesUser string) error
- func (nv *NamespaceValidator) IsPerformanceTarget() map[string]bool
- func (nv *NamespaceValidator) ResetMetrics()
- func (nv *NamespaceValidator) ValidateNamespaceAccess(ctx context.Context, request ValidationRequest) (*NamespaceAccessResult, error)
- type NamespaceValidatorConfig
- type OIDCProvider
- type OperationStat
- type PermissionEvaluationContext
- type PermissionEvaluationResult
- type PermissionGap
- type PermissionRecommendations
- type PermissionRequest
- type PermissionResponse
- type PermissionTestResult
- type PolicyDecision
- type PolicyEvaluationContext
- type PolicyStats
- type ProviderConfig
- type PushConfig
- type RBACAdvisor
- func (advisor *RBACAdvisor) AnalyzePermissionGap(ctx context.Context, userContext *JWTClaims, ...) (*PermissionGap, error)
- func (advisor *RBACAdvisor) GenerateKubectlCommands(ctx context.Context, userContext *JWTClaims, ...) ([]string, error)
- func (advisor *RBACAdvisor) GetMetrics() *RBACAdvisorMetrics
- func (advisor *RBACAdvisor) GetRoleSuggestions(ctx context.Context, requiredPermissions []models.RequiredPermission) ([]RoleRecommendation, error)
- func (advisor *RBACAdvisor) SuggestMinimalPermissions(ctx context.Context, requiredPermissions []models.RequiredPermission) ([]models.RequiredPermission, error)
- type RBACAdvisorConfig
- type RBACAdvisorMetrics
- type RBACValidationMetrics
- type RBACValidator
- func (r *RBACValidator) GetCacheHitRatio() float64
- func (r *RBACValidator) GetMetrics() *RBACValidationMetrics
- func (r *RBACValidator) InvalidateUserCache(ctx context.Context, kubernetesUser string) error
- func (r *RBACValidator) IsPerformanceTarget() map[string]bool
- func (r *RBACValidator) ValidatePermission(ctx context.Context, request PermissionRequest) (*PermissionResponse, error)
- type RBACValidatorConfig
- type RateLimitEntry
- type RateLimiter
- type RelatedIssue
- type RequestInfo
- type ResolutionStep
- type ResolutionStepType
- type ResolverConfig
- type ResourceAccess
- type ResponseInfo
- type RiskAction
- type RiskBasedMFAConfig
- type RiskFactor
- type RiskFactorType
- type RoleBindingRecommendation
- type RoleRecommendation
- type RuleMatchDetails
- type SAMLAssertion
- type SAMLConfig
- type SAMLError
- type SAMLProvider
- func (sp *SAMLProvider) GenerateMetadata() (string, error)
- func (sp *SAMLProvider) GetAuthURL(relayState string) (string, error)
- func (sp *SAMLProvider) GetMetadata() fiber.Handler
- func (sp *SAMLProvider) GetSupportedSAMLBindings() []string
- func (sp *SAMLProvider) HandleAssertion() fiber.Handler
- func (sp *SAMLProvider) HandleSingleLogout() fiber.Handler
- func (sp *SAMLProvider) ProcessAssertion(samlResponse string, clientIP, userAgent string) (*JWTClaims, bool, error)
- func (sp *SAMLProvider) ValidateAssertion(samlResponse string) (*SAMLAssertion, error)
- type SAMLUserMapper
- type SIEMConfig
- type SIEMEvent
- type SIEMIntegrationManager
- func (s *SIEMIntegrationManager) Close() error
- func (s *SIEMIntegrationManager) GenerateComplianceReport(framework ComplianceFramework, period string) (*ComplianceReport, error)
- func (s *SIEMIntegrationManager) SendAuthEvent(entry AuthAuditEntry) error
- func (s *SIEMIntegrationManager) SendSecurityEvent(eventType, description, userID, sessionID, ipAddress string, ...) error
- type SIEMProvider
- type SMSConfig
- type SecurityConfig
- type SecurityContext
- type SecurityMiddleware
- func (s *SecurityMiddleware) BruteForceProtectionMiddleware() fiber.Handler
- func (s *SecurityMiddleware) Cleanup()
- func (s *SecurityMiddleware) GetSecurityMetrics() map[string]interface{}
- func (s *SecurityMiddleware) RateLimitMiddleware() fiber.Handler
- func (s *SecurityMiddleware) TokenRotationMiddleware() fiber.Handler
- type SessionActivityReport
- type SessionAdminConfig
- type SessionCookieConfig
- type SessionFilters
- type SessionInfo
- type SessionListResponse
- type SessionMetrics
- type SessionSecurityConfig
- type SessionSecurityManager
- func (ssm *SessionSecurityManager) CleanupExpiredSessions()
- func (ssm *SessionSecurityManager) CreateSessionWithSecurity(ctx context.Context, userID, email, name string, r *http.Request) (*TokenPair, error)
- func (ssm *SessionSecurityManager) GetSecurityMetrics() map[string]interface{}
- func (ssm *SessionSecurityManager) SecureSessionMiddleware(next http.Handler) http.Handler
- type SessionStatus
- type SessionTerminationRequest
- type SessionTerminationResponse
- type SessionTimeoutPolicy
- type StepOption
- type StepStatus
- type SuspiciousTracker
- type TOTPConfig
- type TimeWindow
- type TokenPair
- type TokenRotator
- type TokenValidationError
- type TroubleshootingStep
- type UserComplianceStats
- type UserMFAStatus
- type UserPermissionInfo
- type ValidationMetrics
- type ValidationRequest
Constants ¶
This section is empty.
Variables ¶
var DefaultMFAOperations = map[string]MFAOperationConfig{ "delete-namespace": { Operation: "delete-namespace", RiskLevel: MFARiskCritical, RequiresMFA: true, MFAValidity: 5 * time.Minute, AllowedMethods: []MFAMethod{MFAMethodTOTP, MFAMethodHardwareToken, MFAMethodWebAuthn}, Description: "Delete Kubernetes namespace", }, "delete-cluster-resource": { Operation: "delete-cluster-resource", RiskLevel: MFARiskHigh, RequiresMFA: true, MFAValidity: 10 * time.Minute, AllowedMethods: []MFAMethod{MFAMethodTOTP, MFAMethodHardwareToken, MFAMethodSMS}, Description: "Delete cluster-scoped resources", }, "modify-rbac": { Operation: "modify-rbac", RiskLevel: MFARiskHigh, RequiresMFA: true, MFAValidity: 15 * time.Minute, AllowedMethods: []MFAMethod{MFAMethodTOTP, MFAMethodHardwareToken}, Description: "Modify RBAC permissions", }, "access-secrets": { Operation: "access-secrets", RiskLevel: MFARiskHigh, RequiresMFA: true, MFAValidity: 10 * time.Minute, AllowedMethods: []MFAMethod{MFAMethodTOTP, MFAMethodHardwareToken, MFAMethodWebAuthn}, Description: "Access Kubernetes secrets", }, "production-deployment": { Operation: "production-deployment", RiskLevel: MFARiskMedium, RequiresMFA: true, MFAValidity: 30 * time.Minute, AllowedMethods: []MFAMethod{MFAMethodTOTP, MFAMethodPush, MFAMethodSMS}, Description: "Deploy to production environment", }, }
High-risk operations that require MFA step-up
Functions ¶
func CreateFallbackHandler ¶
func CreateFallbackHandler(authMiddleware *AuthMiddleware, samlProvider *SAMLProvider) fiber.Handler
CreateFallbackHandler creates a handler that attempts OIDC first, falls back to SAML
func CreateSAMLRoutes ¶
func CreateSAMLRoutes(app fiber.Router, samlProvider *SAMLProvider)
CreateSAMLRoutes creates all SAML-related routes
func EncodePrivateKeyToPEM ¶
func EncodePrivateKeyToPEM(privateKey *rsa.PrivateKey) string
EncodePrivateKeyToPEM encodes an RSA private key to PEM format
func GenerateSecretKey ¶
GenerateSecretKey generates a base64-encoded secret key for HMAC
func GetSAMLProviderTemplates ¶
func GetSAMLProviderTemplates() map[string]SAMLConfig
SAMLProviderTemplate provides configuration templates for common SAML providers
func GetSupportedProviders ¶
func GetSupportedProviders() map[string]OIDCProvider
GetSupportedProviders returns a list of pre-configured provider templates
func NewAuditMiddleware ¶
func NewAuditMiddleware(config AuditConfig) fiber.Handler
NewAuditMiddleware creates a new audit middleware with the provided configuration
func SessionLifecycleAuditMiddleware ¶
func SessionLifecycleAuditMiddleware(collector EventCollectorInterface, serviceName, serviceVersion string) fiber.Handler
SessionLifecycleAuditMiddleware provides middleware for session lifecycle events
func ValidateProviderConfiguration ¶
func ValidateProviderConfiguration(provider OIDCProvider) error
ValidateProviderConfiguration validates that a provider configuration is complete
Types ¶
type AccessRequest ¶
type AccessRequest struct {
SessionID string `json:"session_id"`
UserID string `json:"user_id"`
Operation string `json:"operation"`
Namespace string `json:"namespace,omitempty"`
UserGroups []string `json:"user_groups"`
Role string `json:"role"`
IPAddress string `json:"ip_address"`
UserAgent string `json:"user_agent"`
SessionContext map[string]interface{} `json:"session_context"`
StepUp bool `json:"step_up"`
EmergencyAccess bool `json:"emergency_access"`
EmergencyJustification string `json:"emergency_justification,omitempty"`
}
AccessRequest represents a request for access evaluation
type AdminSessionManager ¶
type AdminSessionManager struct {
// contains filtered or unexported fields
}
AdminSessionManager handles administrative session management operations
func NewAdminSessionManager ¶
func NewAdminSessionManager(config SessionAdminConfig) (*AdminSessionManager, error)
NewAdminSessionManager creates a new administrative session manager
func (*AdminSessionManager) BulkExtendSessions ¶
func (asm *AdminSessionManager) BulkExtendSessions(w http.ResponseWriter, r *http.Request)
BulkExtendSessions handles POST /admin/sessions/bulk/extend
func (*AdminSessionManager) BulkTerminateSessions ¶
func (asm *AdminSessionManager) BulkTerminateSessions(w http.ResponseWriter, r *http.Request)
BulkTerminateSessions handles POST /admin/sessions/bulk/terminate
func (*AdminSessionManager) GenerateActivityReport ¶
func (asm *AdminSessionManager) GenerateActivityReport(w http.ResponseWriter, r *http.Request)
GenerateActivityReport handles GET /admin/sessions/report
func (*AdminSessionManager) GenerateComplianceAudit ¶
func (asm *AdminSessionManager) GenerateComplianceAudit(w http.ResponseWriter, r *http.Request)
GenerateComplianceAudit handles GET /admin/sessions/compliance-audit
func (*AdminSessionManager) GetSecurityEvents ¶
func (asm *AdminSessionManager) GetSecurityEvents(w http.ResponseWriter, r *http.Request)
GetSecurityEvents handles GET /admin/sessions/security-events
func (*AdminSessionManager) GetSessionActivity ¶
func (asm *AdminSessionManager) GetSessionActivity(w http.ResponseWriter, r *http.Request)
GetSessionActivity handles GET /admin/sessions/activity
func (*AdminSessionManager) GetSessionDetails ¶
func (asm *AdminSessionManager) GetSessionDetails(w http.ResponseWriter, r *http.Request)
GetSessionDetails handles GET /admin/sessions/{sessionId}
func (*AdminSessionManager) GetSessionMetrics ¶
func (asm *AdminSessionManager) GetSessionMetrics(w http.ResponseWriter, r *http.Request)
GetSessionMetrics handles GET /admin/sessions/metrics
func (*AdminSessionManager) GetUserSessions ¶
func (asm *AdminSessionManager) GetUserSessions(w http.ResponseWriter, r *http.Request)
GetUserSessions handles GET /admin/sessions/user/{userId}
func (*AdminSessionManager) ListActiveSessions ¶
func (asm *AdminSessionManager) ListActiveSessions(w http.ResponseWriter, r *http.Request)
ListActiveSessions handles GET /admin/sessions
func (*AdminSessionManager) SetupAdminRoutes ¶
func (asm *AdminSessionManager) SetupAdminRoutes(router *mux.Router)
SetupAdminRoutes sets up admin session management routes
func (*AdminSessionManager) TerminateSession ¶
func (asm *AdminSessionManager) TerminateSession(w http.ResponseWriter, r *http.Request)
TerminateSession handles DELETE /admin/sessions/{sessionId}
func (*AdminSessionManager) TerminateUserSessions ¶
func (asm *AdminSessionManager) TerminateUserSessions(w http.ResponseWriter, r *http.Request)
TerminateUserSessions handles DELETE /admin/sessions/user/{userId}
type ApprovalInfo ¶
type ApprovalInfo struct {
Required bool `json:"required"`
Approvers []models.ApprovalRequirement `json:"approvers"`
Status ApprovalStatus `json:"status"`
SubmittedAt *time.Time `json:"submitted_at,omitempty"`
ApprovedAt *time.Time `json:"approved_at,omitempty"`
ApprovedBy string `json:"approved_by,omitempty"`
RejectedAt *time.Time `json:"rejected_at,omitempty"`
RejectedBy string `json:"rejected_by,omitempty"`
RejectionReason string `json:"rejection_reason,omitempty"`
EscalatedAt *time.Time `json:"escalated_at,omitempty"`
EscalatedTo []string `json:"escalated_to,omitempty"`
}
ApprovalInfo contains information about approval requirements and status
type ApprovalStatus ¶
type ApprovalStatus string
ApprovalStatus represents the status of an approval request
const ( ApprovalStatusPending ApprovalStatus = "pending" ApprovalStatusApproved ApprovalStatus = "approved" ApprovalStatusRejected ApprovalStatus = "rejected" ApprovalStatusEscalated ApprovalStatus = "escalated" ApprovalStatusExpired ApprovalStatus = "expired" )
type AuditConfig ¶
type AuditConfig struct {
// Collector is the audit event collector
Collector EventCollectorInterface
// ServiceName identifies the service generating audit events
ServiceName string
// ServiceVersion identifies the service version
ServiceVersion string
// SkipPaths are paths to skip auditing (e.g., health checks)
SkipPaths []string
// SkipMethods are HTTP methods to skip auditing
SkipMethods []string
// LogRequestBody enables request body logging
LogRequestBody bool
// LogResponseBody enables response body logging
LogResponseBody bool
// MaxBodySize limits the size of request/response bodies to log
MaxBodySize int64
// UserContextExtractor extracts user context from the request
UserContextExtractor func(c fiber.Ctx) (*models.User, *models.SessionAuthContext, error)
// CorrelationIDExtractor extracts correlation ID from request
CorrelationIDExtractor func(c fiber.Ctx) string
// TraceIDExtractor extracts trace ID from request
TraceIDExtractor func(c fiber.Ctx) string
}
AuditConfig holds configuration for audit middleware
func DefaultAuditConfig ¶
func DefaultAuditConfig() AuditConfig
DefaultAuditConfig returns default audit middleware configuration
type AuditEntry ¶
type AuditEntry struct {
Timestamp time.Time `json:"timestamp"`
User string `json:"user"`
SessionID string `json:"session_id"`
ValidationID string `json:"validation_id"`
Resource string `json:"resource"`
Verb string `json:"verb"`
Namespace string `json:"namespace"`
Allowed bool `json:"allowed"`
Reason string `json:"reason"`
ClientIP string `json:"client_ip,omitempty"`
UserAgent string `json:"user_agent,omitempty"`
CommandContext string `json:"command_context,omitempty"`
}
AuditEntry represents an audit log entry for permission validation
type AuditSeverity ¶
type AuditSeverity string
AuditSeverity represents the severity level of audit events
const ( AuditSeverityInfo AuditSeverity = "info" AuditSeverityWarning AuditSeverity = "warning" AuditSeverityError AuditSeverity = "error" AuditSeverityCritical AuditSeverity = "critical" )
type AuthAuditConfig ¶
type AuthAuditConfig struct {
RedisClient redis.UniversalClient
SecretKey string // HMAC secret key for tamper-proof signatures
RetentionPeriod time.Duration // How long to retain audit logs (default: 7 years for compliance)
SIEMIntegration bool // Enable SIEM integration
SIEMEndpoint string // SIEM system endpoint
SIEMAPIKey string // SIEM API key
BatchSize int // Batch size for high-performance logging (default: 100)
FlushInterval time.Duration // Flush interval for batched logs (default: 5 seconds)
}
AuthAuditConfig holds configuration for the audit logger
type AuthAuditEntry ¶
type AuthAuditEntry struct {
// Event identification
EventID string `json:"event_id"`
EventType AuthEvent `json:"event_type"`
EventTime time.Time `json:"event_time"`
Severity AuditSeverity `json:"severity"`
// User context
UserID string `json:"user_id,omitempty"`
Username string `json:"username,omitempty"`
Email string `json:"email,omitempty"`
KubernetesUser string `json:"kubernetes_user,omitempty"`
KubernetesGroups []string `json:"kubernetes_groups,omitempty"`
// Session context
SessionID string `json:"session_id,omitempty"`
DeviceFingerprint string `json:"device_fingerprint,omitempty"`
// Request context
IPAddress string `json:"ip_address,omitempty"`
UserAgent string `json:"user_agent,omitempty"`
RequestID string `json:"request_id,omitempty"`
HTTPMethod string `json:"http_method,omitempty"`
RequestPath string `json:"request_path,omitempty"`
RequestHeaders map[string]string `json:"request_headers,omitempty"`
// Authentication details
AuthMethod string `json:"auth_method,omitempty"` // "oidc", "jwt", "saml"
OIDCProvider string `json:"oidc_provider,omitempty"` // "google", "azure", "okta"
TokenType string `json:"token_type,omitempty"` // "access", "refresh", "id"
// Event details
Success bool `json:"success"`
FailureReason string `json:"failure_reason,omitempty"`
ErrorCode string `json:"error_code,omitempty"`
Message string `json:"message,omitempty"`
AdditionalData map[string]interface{} `json:"additional_data,omitempty"`
// Kubernetes command context (Story 2.3 AC2)
KubernetesCommand string `json:"kubernetes_command,omitempty"`
NaturalLanguageInput string `json:"natural_language_input,omitempty"`
// Security and compliance
RiskScore int `json:"risk_score,omitempty"` // 1-10 risk assessment
ComplianceFlags []string `json:"compliance_flags,omitempty"` // SOC2, HIPAA, etc.
// Tamper-proof signature (Story 2.3 requirement)
Signature string `json:"signature"`
SignatureMethod string `json:"signature_method"`
}
AuthAuditEntry represents a comprehensive audit log entry for authentication events
type AuthAuditLogger ¶
type AuthAuditLogger struct {
// contains filtered or unexported fields
}
AuthAuditLogger handles comprehensive authentication audit logging
func NewAuthAuditLogger ¶
func NewAuthAuditLogger(config AuthAuditConfig) (*AuthAuditLogger, error)
NewAuthAuditLogger creates a new authentication audit logger
func (*AuthAuditLogger) GetAuditMetrics ¶
func (a *AuthAuditLogger) GetAuditMetrics() map[string]interface{}
GetAuditMetrics returns audit logging metrics
func (*AuthAuditLogger) LogAuthEvent ¶
func (a *AuthAuditLogger) LogAuthEvent(ctx context.Context, event *AuthAuditEntry) error
LogAuthEvent logs a comprehensive authentication event with tamper-proof signature
func (*AuthAuditLogger) LogCommandExecution ¶
func (a *AuthAuditLogger) LogCommandExecution(ctx context.Context, userID, sessionID string, claims *JWTClaims, naturalLanguageInput, kubectlCommand string, req *http.Request) error
LogCommandExecution logs all commands with authenticated user identity (AC2)
func (*AuthAuditLogger) LogLoginAttempt ¶
func (a *AuthAuditLogger) LogLoginAttempt(ctx context.Context, userID, username, email string, success bool, failureReason string, req *http.Request) error
LogLoginAttempt logs authentication attempts (AC1)
func (*AuthAuditLogger) LogSessionEvent ¶
func (a *AuthAuditLogger) LogSessionEvent(ctx context.Context, eventType AuthEvent, sessionID, userID, reason string) error
LogSessionEvent logs session-related events (timeouts, terminations, etc.)
func (*AuthAuditLogger) LogSuspiciousActivity ¶
func (a *AuthAuditLogger) LogSuspiciousActivity(ctx context.Context, userID, sessionID, activity string, riskScore int, req *http.Request) error
LogSuspiciousActivity logs suspicious authentication patterns
func (*AuthAuditLogger) VerifySignature ¶
func (a *AuthAuditLogger) VerifySignature(entry *AuthAuditEntry) bool
VerifySignature verifies the tamper-proof signature of an audit entry
type AuthEvent ¶
type AuthEvent string
AuthEvent represents different types of authentication events for audit logging
const ( AuthEventLogin AuthEvent = "login" AuthEventLoginFailure AuthEvent = "login_failure" AuthEventLogout AuthEvent = "logout" AuthEventTokenRefresh AuthEvent = "token_refresh" AuthEventTokenRevocation AuthEvent = "token_revocation" AuthEventSessionTimeout AuthEvent = "session_timeout" AuthEventPasswordChange AuthEvent = "password_change" AuthEventMFAChallenge AuthEvent = "mfa_challenge" AuthEventMFASuccess AuthEvent = "mfa_success" AuthEventMFAFailure AuthEvent = "mfa_failure" AuthEventAccountLocked AuthEvent = "account_locked" AuthEventPermissionDenied AuthEvent = "permission_denied" AuthEventSuspiciousActivity AuthEvent = "suspicious_activity" AuthEventSessionTermination AuthEvent = "session_termination" AuthEventConcurrentLimitExceeded AuthEvent = "concurrent_limit_exceeded" )
type AuthMiddleware ¶
type AuthMiddleware struct {
// contains filtered or unexported fields
}
AuthMiddleware handles OIDC authentication for KubeChat
func NewAuthMiddleware ¶
func NewAuthMiddleware(providers []OIDCProvider, jwtService JWTServiceInterface, groupMapping *config.OIDCGroupMapping, mfaHandler *MFAHandler) (*AuthMiddleware, error)
NewAuthMiddleware creates a new authentication middleware instance
func (*AuthMiddleware) GetAuthURL ¶
func (m *AuthMiddleware) GetAuthURL(providerName string, state string) (string, error)
GetAuthURL returns the authorization URL for a specific provider
func (*AuthMiddleware) GetProviders ¶
func (m *AuthMiddleware) GetProviders() []string
GetProviders returns the list of configured provider names
func (*AuthMiddleware) HandleCallback ¶
func (m *AuthMiddleware) HandleCallback(c fiber.Ctx) error
HandleCallback processes the OIDC callback
func (*AuthMiddleware) ListProviders ¶
func (m *AuthMiddleware) ListProviders() fiber.Handler
ListProviders returns available authentication providers
func (*AuthMiddleware) RequireAuthentication ¶
func (m *AuthMiddleware) RequireAuthentication() fiber.Handler
RequireAuthentication middleware that requires valid authentication
type AuthenticationError ¶
type AuthenticationError struct {
Code string `json:"code"`
Message string `json:"message"`
Details string `json:"details,omitempty"`
}
AuthenticationError represents authentication-related errors
func (*AuthenticationError) Error ¶
func (e *AuthenticationError) Error() string
type BruteForceEntry ¶
type BruteForceEntry struct {
Attempts int `json:"attempts"`
LastAttempt time.Time `json:"last_attempt"`
LockedUntil time.Time `json:"locked_until"`
IsLocked bool `json:"is_locked"`
}
BruteForceEntry tracks failed attempts for an identifier
type BruteForceProtection ¶
type BruteForceProtection struct {
// contains filtered or unexported fields
}
BruteForceProtection implements account lockout after failed attempts
func (*BruteForceProtection) ClearFailedAttempts ¶
func (bf *BruteForceProtection) ClearFailedAttempts(identifier string) error
ClearFailedAttempts clears failed attempts for an identifier (on successful login)
func (*BruteForceProtection) IsLocked ¶
IsLocked checks if an identifier is currently locked due to brute force attempts
func (*BruteForceProtection) RecordFailedAttempt ¶
func (bf *BruteForceProtection) RecordFailedAttempt(identifier string) error
RecordFailedAttempt records a failed authentication attempt
type BulkSessionOperation ¶
type BulkSessionOperation struct {
Operation string `json:"operation"` // "terminate", "extend", "audit"
Criteria SessionFilters `json:"criteria"` // Selection criteria
Reason string `json:"reason"`
ScheduledAt time.Time `json:"scheduled_at,omitempty"`
}
BulkSessionOperation represents bulk session operations for security incidents
type CacheAccess ¶
type CacheAccess struct {
CacheKey string `json:"cache_key"`
Operation string `json:"operation"` // "get", "set", "delete"
Hit bool `json:"hit"`
Value interface{} `json:"value,omitempty"`
TTL time.Duration `json:"ttl,omitempty"`
Error string `json:"error,omitempty"`
Timestamp time.Time `json:"timestamp"`
}
CacheAccess represents a cache access during evaluation
type CircuitBreaker ¶
type CircuitBreaker struct {
// contains filtered or unexported fields
}
CircuitBreaker implements the circuit breaker pattern for external service calls
func NewCircuitBreaker ¶
func NewCircuitBreaker(config CircuitBreakerConfig) *CircuitBreaker
NewCircuitBreaker creates a new circuit breaker with the given configuration
func (*CircuitBreaker) Execute ¶
func (cb *CircuitBreaker) Execute(fn func() error) error
Execute runs a function with circuit breaker protection
func (*CircuitBreaker) ForceClose ¶
func (cb *CircuitBreaker) ForceClose()
ForceClose forces the circuit breaker to closed state
func (*CircuitBreaker) ForceOpen ¶
func (cb *CircuitBreaker) ForceOpen()
ForceOpen forces the circuit breaker to open state
func (*CircuitBreaker) GetMetrics ¶
func (cb *CircuitBreaker) GetMetrics() map[string]interface{}
GetMetrics returns current metrics for monitoring
func (*CircuitBreaker) IsClosed ¶
func (cb *CircuitBreaker) IsClosed() bool
IsClosed returns true if the circuit breaker is in closed state
func (*CircuitBreaker) IsHalfOpen ¶
func (cb *CircuitBreaker) IsHalfOpen() bool
IsHalfOpen returns true if the circuit breaker is in half-open state
func (*CircuitBreaker) IsOpen ¶
func (cb *CircuitBreaker) IsOpen() bool
IsOpen returns true if the circuit breaker is in open state
type CircuitBreakerConfig ¶
type CircuitBreakerConfig struct {
FailureThreshold int `json:"failure_threshold"` // Number of failures to trigger open state
SuccessThreshold int `json:"success_threshold"` // Number of successes to close from half-open
Timeout time.Duration `json:"timeout"` // Time to wait before transitioning to half-open
MaxRequests int `json:"max_requests"` // Max requests allowed in half-open state
OnStateChange func(CircuitBreakerState) `json:"-"` // Callback for state changes
}
CircuitBreakerConfig holds configuration for the circuit breaker
type CircuitBreakerError ¶
type CircuitBreakerError struct {
State CircuitBreakerState `json:"state"`
Message string `json:"message"`
}
CircuitBreakerError represents errors from circuit breaker
func (*CircuitBreakerError) Error ¶
func (e *CircuitBreakerError) Error() string
type CircuitBreakerState ¶
type CircuitBreakerState int
CircuitBreakerState represents the state of the circuit breaker
const ( StateClosed CircuitBreakerState = iota StateOpen StateHalfOpen )
type ComplianceConfig ¶
type ComplianceConfig struct {
Frameworks []ComplianceFramework `json:"frameworks"`
ReportingPeriod string `json:"reporting_period"` // daily, weekly, monthly
RetentionDays int `json:"retention_days"`
AlertThresholds map[string]int `json:"alert_thresholds"`
NotificationURL string `json:"notification_url,omitempty"`
}
Compliance Configuration
type ComplianceContext ¶
type ComplianceContext struct {
Framework ComplianceFramework `json:"framework"`
ControlID string `json:"control_id"`
Requirement string `json:"requirement"`
RiskLevel string `json:"risk_level"`
Evidence map[string]string `json:"evidence,omitempty"`
}
Compliance Context
type ComplianceFramework ¶
type ComplianceFramework string
Compliance Framework Types
const ( ComplianceSOX ComplianceFramework = "sox" ComplianceHIPAA ComplianceFramework = "hipaa" CompliancePCI ComplianceFramework = "pci" ComplianceSOC2 ComplianceFramework = "soc2" ComplianceGDPR ComplianceFramework = "gdpr" ComplianceISO27001 ComplianceFramework = "iso27001" )
type ComplianceReport ¶
type ComplianceReport struct {
ID string `json:"id"`
Framework ComplianceFramework `json:"framework"`
Period string `json:"period"`
GeneratedAt time.Time `json:"generated_at"`
TotalEvents int64 `json:"total_events"`
SecurityEvents int64 `json:"security_events"`
ComplianceScore float64 `json:"compliance_score"`
Violations []ComplianceViolation `json:"violations"`
Recommendations []string `json:"recommendations"`
Controls map[string]ControlStatus `json:"controls"`
}
Compliance Report
type ComplianceViolation ¶
type ComplianceViolation struct {
ID string `json:"id"`
ControlID string `json:"control_id"`
Severity string `json:"severity"`
Description string `json:"description"`
FirstSeen time.Time `json:"first_seen"`
LastSeen time.Time `json:"last_seen"`
Count int `json:"count"`
Evidence []string `json:"evidence"`
}
type ConflictingPolicy ¶
type ConflictingPolicy struct {
PolicyName string `json:"policy_name"`
ConflictType string `json:"conflict_type"` // "allow_deny", "precedence", "ambiguous"
Description string `json:"description"`
Resolution string `json:"resolution"`
Affected []string `json:"affected"`
}
ConflictingPolicy represents conflicting RBAC policies
type ControlStatus ¶
type CorrelationEntry ¶
type CorrelationEntry struct {
Timestamp time.Time `json:"timestamp"`
Component string `json:"component"`
Event string `json:"event"`
Details map[string]interface{} `json:"details"`
CorrelationID string `json:"correlation_id"`
}
CorrelationEntry represents an entry in the error correlation trail
type EmergencyAccessConfig ¶
type EmergencyAccessConfig struct {
Enabled bool `json:"enabled"`
AdminUsers []string `json:"admin_users"`
BypassCodes []string `json:"bypass_codes"`
AuditRequired bool `json:"audit_required"`
}
EmergencyAccessConfig holds emergency access configuration
type EnhancedErrorDetails ¶
type EnhancedErrorDetails struct {
PrimaryError *models.PermissionError `json:"primary_error"`
RootCause string `json:"root_cause"`
ErrorHierarchy []string `json:"error_hierarchy"`
SystemContext map[string]interface{} `json:"system_context"`
UserImpact string `json:"user_impact"`
AdminGuidance *models.AdminGuidance `json:"admin_guidance"`
TroubleshootingSteps []TroubleshootingStep `json:"troubleshooting_steps"`
RelatedIssues []RelatedIssue `json:"related_issues,omitempty"`
CorrelationTrail []CorrelationEntry `json:"correlation_trail"`
}
EnhancedErrorDetails provides comprehensive error information
type EnhancedRBACContext ¶
type EnhancedRBACContext struct {
// contains filtered or unexported fields
}
EnhancedRBACContext provides enhanced error context and debugging for RBAC validation
func NewEnhancedRBACContext ¶
func NewEnhancedRBACContext(config EnhancedRBACContextConfig) *EnhancedRBACContext
NewEnhancedRBACContext creates a new enhanced RBAC context
func (*EnhancedRBACContext) AnalyzePermissionFailure ¶
func (ctx *EnhancedRBACContext) AnalyzePermissionFailure(reqCtx context.Context, userClaims *JWTClaims, request *PermissionRequest, originalError error) (*models.PermissionError, error)
AnalyzePermissionFailure provides detailed analysis of permission failures
func (*EnhancedRBACContext) EvaluatePermissionWithContext ¶
func (ctx *EnhancedRBACContext) EvaluatePermissionWithContext(reqCtx context.Context, userClaims *JWTClaims, request *PermissionRequest) (*PermissionEvaluationContext, error)
EvaluatePermissionWithContext performs comprehensive permission evaluation with full context
func (*EnhancedRBACContext) GetPermissionTrace ¶
func (ctx *EnhancedRBACContext) GetPermissionTrace(reqCtx context.Context, requestID string) (*PermissionEvaluationContext, error)
GetPermissionTrace retrieves the full trace of a permission evaluation
type EnhancedRBACContextConfig ¶
type EnhancedRBACContextConfig struct {
KubeClient kubernetes.Interface
RedisClient redis.UniversalClient
Validator *RBACValidator
Advisor *RBACAdvisor
GuidanceService *models.UserGuidanceService
AuditLogger *AuthAuditLogger
EnableTrace bool
CacheTTL time.Duration
}
EnhancedRBACContextConfig holds configuration for enhanced RBAC context
type EvaluatedRule ¶
type EvaluatedRule struct {
RuleSource string `json:"rule_source"` // "ClusterRole:admin", "Role:viewer"
PolicyRule rbacv1.PolicyRule `json:"policy_rule"`
Matched bool `json:"matched"`
MatchDetails RuleMatchDetails `json:"match_details"`
Priority int `json:"priority"`
ConflictsWith []string `json:"conflicts_with,omitempty"`
}
EvaluatedRule represents a single RBAC rule that was evaluated
type EvaluationStep ¶
type EvaluationStep struct {
StepNumber int `json:"step_number"`
StepType string `json:"step_type"` // "cache_check", "api_call", "policy_eval", "decision"
Description string `json:"description"`
Timestamp time.Time `json:"timestamp"`
Duration time.Duration `json:"duration"`
Success bool `json:"success"`
Details map[string]interface{} `json:"details"`
Error string `json:"error,omitempty"`
}
EvaluationStep represents a single step in permission evaluation
type EventCollectorInterface ¶
type EventCollectorInterface interface {
CollectEvent(event *models.AuditEvent) error
CollectEventWithTimeout(event *models.AuditEvent, timeout time.Duration) error
}
EventCollectorInterface defines the interface for audit event collection
type HardwareTokenConfig ¶
type HardwareTokenConfig struct {
SupportedTypes []string `json:"supported_types"` // "yubikey", "fido2", "webauthn"
Settings map[string]string `json:"settings"`
Timeout time.Duration `json:"timeout"`
}
HardwareTokenConfig holds hardware token configuration
type IPSessionCount ¶
type IPSessionCount struct {
IPAddress string `json:"ip_address"`
SessionCount int64 `json:"session_count"`
}
IPSessionCount represents session count by IP address
type InputRequirement ¶
type InputRequirement struct {
Name string `json:"name"`
Type string `json:"type"` // "text", "select", "multiselect", "boolean"
Label string `json:"label"`
Description string `json:"description"`
Required bool `json:"required"`
Default interface{} `json:"default,omitempty"`
Options []StepOption `json:"options,omitempty"`
Validation *InputValidation `json:"validation,omitempty"`
}
InputRequirement defines required user input for a step
type InputValidation ¶
type InputValidation struct {
Pattern string `json:"pattern,omitempty"`
MinLength int `json:"min_length,omitempty"`
MaxLength int `json:"max_length,omitempty"`
AllowedValues []string `json:"allowed_values,omitempty"`
CustomRules []string `json:"custom_rules,omitempty"`
}
InputValidation defines validation rules for user input
type InteractivePermissionResolver ¶
type InteractivePermissionResolver struct {
// contains filtered or unexported fields
}
InteractivePermissionResolver provides interactive resolution workflows for permission issues
func NewInteractivePermissionResolver ¶
func NewInteractivePermissionResolver( kubeClient kubernetes.Interface, redisClient redis.UniversalClient, rbacContext *EnhancedRBACContext, advisor *RBACAdvisor, guidanceService *models.UserGuidanceService, auditLogger *AuthAuditLogger, config ResolverConfig, ) *InteractivePermissionResolver
NewInteractivePermissionResolver creates a new interactive permission resolver
func (*InteractivePermissionResolver) CancelSession ¶
func (r *InteractivePermissionResolver) CancelSession(ctx context.Context, sessionID string) error
CancelSession cancels an active session
func (*InteractivePermissionResolver) CreateEscalationRequest ¶
func (r *InteractivePermissionResolver) CreateEscalationRequest(ctx context.Context, sessionID, reason string) error
CreateEscalationRequest creates an escalation request for permission issues
func (*InteractivePermissionResolver) ExecuteNextStep ¶
func (r *InteractivePermissionResolver) ExecuteNextStep(ctx context.Context, sessionID string, userInput map[string]interface{}) (*InteractiveResolutionSession, error)
ExecuteNextStep executes the next step in an interactive resolution session
func (*InteractivePermissionResolver) GetAvailableAlternatives ¶
func (r *InteractivePermissionResolver) GetAvailableAlternatives(ctx context.Context, sessionID string) ([]models.AlternativeAction, error)
GetAvailableAlternatives provides alternative approaches for the user
func (*InteractivePermissionResolver) GetSession ¶
func (r *InteractivePermissionResolver) GetSession(ctx context.Context, sessionID string) (*InteractiveResolutionSession, error)
GetSession retrieves a session by ID (public method)
func (*InteractivePermissionResolver) ListActiveSessions ¶
func (r *InteractivePermissionResolver) ListActiveSessions(ctx context.Context, userID string) ([]string, error)
ListActiveSessions lists all active sessions for a user
func (*InteractivePermissionResolver) StartInteractiveResolution ¶
func (r *InteractivePermissionResolver) StartInteractiveResolution(ctx context.Context, userClaims *JWTClaims, permError *models.PermissionError) (*InteractiveResolutionSession, error)
StartInteractiveResolution starts an interactive resolution session for a permission error
func (*InteractivePermissionResolver) TestPermissionsWithDifferentRoles ¶
func (r *InteractivePermissionResolver) TestPermissionsWithDifferentRoles(ctx context.Context, sessionID string, roles []string) ([]PermissionTestResult, error)
TestPermissionsWithDifferentRoles tests permissions using role impersonation
type InteractiveResolutionSession ¶
type InteractiveResolutionSession struct {
SessionID string `json:"session_id"`
UserContext *JWTClaims `json:"user_context"`
OriginalError *models.PermissionError `json:"original_error"`
WorkflowSteps []ResolutionStep `json:"workflow_steps"`
CurrentStep int `json:"current_step"`
Status SessionStatus `json:"status"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ExpiresAt time.Time `json:"expires_at"`
Metadata map[string]interface{} `json:"metadata"`
TestResults []PermissionTestResult `json:"test_results,omitempty"`
ApprovalInfo *ApprovalInfo `json:"approval_info,omitempty"`
}
InteractiveResolutionSession represents an active resolution session
type JWTClaims ¶
type JWTClaims struct {
// Existing fields (backward compatibility)
UserID string `json:"user_id"`
Email string `json:"email"`
Name string `json:"name"`
SessionID string `json:"session_id"`
IssuedAt time.Time `json:"iat"`
ExpiresAt time.Time `json:"exp"`
// Enhanced RBAC fields
Role string `json:"role"` // Required KubeChat role
Groups []string `json:"groups"` // Required OIDC groups
// NEW: Kubernetes-specific RBAC fields
KubernetesUser string `json:"kubernetes_user"` // K8s user for impersonation
KubernetesGroups []string `json:"kubernetes_groups"` // K8s groups for RBAC
DefaultNamespace string `json:"default_namespace"` // User's default namespace
AllowedNamespaces []string `json:"allowed_namespaces"` // Accessible namespaces
ClusterAccess bool `json:"cluster_access"` // Cluster-level permissions
ServiceAccountName string `json:"service_account,omitempty"` // For service account auth
// Claims metadata
ClaimsVersion int `json:"claims_version"` // For backward compatibility
LastPermissionCheck time.Time `json:"last_permission_check"` // Claims freshness
// MFA fields (Story 2.4)
MFACompleted bool `json:"mfa_completed"` // MFA validation status
MFAMethod string `json:"mfa_method,omitempty"` // TOTP, SMS, Push, etc.
MFATimestamp time.Time `json:"mfa_timestamp"` // When MFA was completed
MFAValidityDuration time.Duration `json:"mfa_validity"` // How long MFA is valid
RequiresMFAStepUp bool `json:"requires_mfa_stepup"` // High-risk operation flag
jwt.RegisteredClaims
}
JWTClaims represents the claims stored in JWT tokens with enhanced RBAC support
type JWTConfig ¶
type JWTConfig struct {
PrivateKeyPEM string `json:"private_key_pem"`
RedisAddr string `json:"redis_addr"` // Redis server address (single instance)
RedisCluster []string `json:"redis_cluster"` // Redis cluster addresses
RedisPassword string `json:"redis_password"` // Redis password
RedisDB int `json:"redis_db"` // Redis database number
TokenDuration time.Duration `json:"token_duration"` // Access token lifetime
RefreshDuration time.Duration `json:"refresh_duration"` // Refresh token lifetime
Issuer string `json:"issuer"` // JWT issuer
PoolSize int `json:"pool_size"` // Redis connection pool size
MinIdleConns int `json:"min_idle_conns"` // Minimum idle connections
MaxRetries int `json:"max_retries"` // Maximum retry attempts
RetryDelay time.Duration `json:"retry_delay"` // Delay between retries
DialTimeout time.Duration `json:"dial_timeout"` // Connection dial timeout
ReadTimeout time.Duration `json:"read_timeout"` // Read operation timeout
WriteTimeout time.Duration `json:"write_timeout"` // Write operation timeout
EnableCircuitBreaker bool `json:"enable_circuit_breaker"` // Enable circuit breaker for Redis failures
// Enhanced Session Management (Story 2.3 Task 1)
IdleTimeout time.Duration `json:"idle_timeout"` // Session idle timeout (default 4 hours)
AbsoluteTimeout time.Duration `json:"absolute_timeout"` // Session absolute timeout (default 24 hours)
ConcurrentLimit int `json:"concurrent_limit"` // Max concurrent sessions per user (default 5)
EnableIdleCheck bool `json:"enable_idle_check"` // Enable idle timeout checking (default true)
}
JWTConfig holds configuration for JWT service
type JWTService ¶
type JWTService struct {
// contains filtered or unexported fields
}
JWTService handles JWT token generation, validation, and management
func NewJWTService ¶
func NewJWTService(config JWTConfig) (*JWTService, error)
NewJWTService creates a new JWT service instance
func (*JWTService) BlacklistToken ¶
func (j *JWTService) BlacklistToken(sessionID string) error
BlacklistToken adds a token to the blacklist
func (*JWTService) CleanupExpiredSessions ¶
func (j *JWTService) CleanupExpiredSessions() error
CleanupExpiredSessions removes expired sessions from Redis
func (*JWTService) GenerateToken ¶
func (j *JWTService) GenerateToken(userID, email, name string) (*TokenPair, error)
GenerateToken creates a new JWT token for the user with basic claims
func (*JWTService) GenerateTokenWithClaims ¶
func (j *JWTService) GenerateTokenWithClaims(claims *JWTClaims) (*TokenPair, error)
GenerateTokenWithClaims creates a new JWT token with provided claims
func (*JWTService) GenerateTokenWithNamespaceValidation ¶
func (j *JWTService) GenerateTokenWithNamespaceValidation(claims *JWTClaims, validateNamespaces bool) (*TokenPair, error)
GenerateTokenWithNamespaceValidation creates a JWT token with optional namespace validation
func (*JWTService) GetAllActiveSessions ¶
func (j *JWTService) GetAllActiveSessions(userID string) ([]*SessionInfo, error)
GetAllActiveSessions retrieves all active sessions for a user
func (*JWTService) GetMFAStatus ¶
func (j *JWTService) GetMFAStatus(sessionID string) (*MFASessionStatus, error)
GetMFAStatus retrieves the MFA status for a session
func (*JWTService) GetPublicKey ¶
func (j *JWTService) GetPublicKey() *rsa.PublicKey
GetPublicKey returns the RSA public key for token verification
func (*JWTService) GetPublicKeyPEM ¶
func (j *JWTService) GetPublicKeyPEM() (string, error)
GetPublicKeyPEM returns the public key in PEM format
func (*JWTService) GetSessionInfo ¶
func (j *JWTService) GetSessionInfo(sessionID string) (*SessionInfo, error)
GetSessionInfo retrieves comprehensive session information
func (*JWTService) GetSessionMetrics ¶
func (j *JWTService) GetSessionMetrics() *SessionMetrics
GetSessionMetrics returns current session metrics
func (*JWTService) InvalidateMFAForSessions ¶
func (j *JWTService) InvalidateMFAForSessions(userID string) error
InvalidateMFAForSessions invalidates MFA for all sessions of a user
func (*JWTService) MigrateLegacyClaims ¶
func (j *JWTService) MigrateLegacyClaims(claims *JWTClaims) *JWTClaims
MigrateLegacyClaims upgrades v1 claims to v2 with default RBAC values
func (*JWTService) RefreshToken ¶
func (j *JWTService) RefreshToken(refreshToken string) (*TokenPair, error)
RefreshToken creates a new token pair using a refresh token
func (*JWTService) RefreshTokenWithNamespaceValidation ¶
func (j *JWTService) RefreshTokenWithNamespaceValidation(refreshToken string, validateNamespaces bool) (*TokenPair, error)
RefreshTokenWithNamespaceValidation refreshes a token with optional namespace validation
func (*JWTService) RequiresMFAStepUp ¶
func (j *JWTService) RequiresMFAStepUp(sessionID string, operation string) (bool, error)
RequiresMFAStepUp checks if a session requires MFA step-up for a specific operation
func (*JWTService) SetMFAHandler ¶
func (j *JWTService) SetMFAHandler(handler *MFAHandler)
SetMFAHandler sets the MFA handler for the JWT service (Story 2.4 Task 4)
func (*JWTService) SetMFAStepUpRequirement ¶
func (j *JWTService) SetMFAStepUpRequirement(sessionID string, required bool, operation string) error
SetMFAStepUpRequirement sets the MFA step-up requirement for a session
func (*JWTService) SetNamespaceValidator ¶
func (j *JWTService) SetNamespaceValidator(validator *NamespaceValidator)
SetNamespaceValidator sets the namespace validator for the JWT service
func (*JWTService) SetSessionTimeoutPolicies ¶
func (j *JWTService) SetSessionTimeoutPolicies(idle, absolute time.Duration) error
SetSessionTimeoutPolicies updates session timeout policies
func (*JWTService) TerminateAllUserSessions ¶
func (j *JWTService) TerminateAllUserSessions(userID string, reason string) error
TerminateAllUserSessions terminates all active sessions for a user
func (*JWTService) TerminateSession ¶
func (j *JWTService) TerminateSession(sessionID string, reason string) error
TerminateSession terminates a specific session with a reason
func (*JWTService) UpdateMFAStatus ¶
func (j *JWTService) UpdateMFAStatus(sessionID string, mfaCompleted bool, method string, validity time.Duration) error
UpdateMFAStatus updates the MFA status for a session
func (*JWTService) UpdateSessionActivity ¶
func (j *JWTService) UpdateSessionActivity(sessionID string) error
UpdateSessionActivity updates the last activity timestamp for a session
func (*JWTService) ValidateMFAForOperation ¶
func (j *JWTService) ValidateMFAForOperation(sessionID string, operation string) (bool, error)
ValidateMFAForOperation validates MFA status for a specific operation
func (*JWTService) ValidateToken ¶
func (j *JWTService) ValidateToken(tokenString string) (*JWTClaims, error)
ValidateToken validates and parses a JWT token
func (*JWTService) ValidateTokenWithRefresh ¶
func (j *JWTService) ValidateTokenWithRefresh(tokenString string, refreshPermissions bool) (*JWTClaims, error)
ValidateTokenWithRefresh validates a token and optionally refreshes permission information
type JWTServiceInterface ¶
type JWTServiceInterface interface {
GenerateToken(userID, email, name string) (*TokenPair, error)
GenerateTokenWithClaims(claims *JWTClaims) (*TokenPair, error)
GenerateTokenWithNamespaceValidation(claims *JWTClaims, validateNamespaces bool) (*TokenPair, error)
ValidateToken(tokenString string) (*JWTClaims, error)
ValidateTokenWithRefresh(tokenString string, refreshPermissions bool) (*JWTClaims, error)
RefreshToken(refreshToken string) (*TokenPair, error)
RefreshTokenWithNamespaceValidation(refreshToken string, validateNamespaces bool) (*TokenPair, error)
BlacklistToken(sessionID string) error
CleanupExpiredSessions() error
GetPublicKey() *rsa.PublicKey
GetPublicKeyPEM() (string, error)
MigrateLegacyClaims(claims *JWTClaims) *JWTClaims
SetNamespaceValidator(validator *NamespaceValidator)
// Enhanced Session Lifecycle Management (Story 2.3 Task 1)
UpdateSessionActivity(sessionID string) error
GetSessionInfo(sessionID string) (*SessionInfo, error)
GetAllActiveSessions(userID string) ([]*SessionInfo, error)
TerminateSession(sessionID string, reason string) error
TerminateAllUserSessions(userID string, reason string) error
SetSessionTimeoutPolicies(idle, absolute time.Duration) error
GetSessionMetrics() *SessionMetrics
// MFA Session State Management (Story 2.4 Task 4)
UpdateMFAStatus(sessionID string, mfaCompleted bool, method string, validity time.Duration) error
GetMFAStatus(sessionID string) (*MFASessionStatus, error)
RequiresMFAStepUp(sessionID string, operation string) (bool, error)
SetMFAStepUpRequirement(sessionID string, required bool, operation string) error
ValidateMFAForOperation(sessionID string, operation string) (bool, error)
InvalidateMFAForSessions(userID string) error
}
JWTServiceInterface defines the contract for JWT token operations
type KubernetesAPICall ¶
type KubernetesAPICall struct {
CallID string `json:"call_id"`
APIPath string `json:"api_path"`
Method string `json:"method"`
RequestBody interface{} `json:"request_body,omitempty"`
ResponseCode int `json:"response_code"`
ResponseBody interface{} `json:"response_body,omitempty"`
Duration time.Duration `json:"duration"`
Error string `json:"error,omitempty"`
Timestamp time.Time `json:"timestamp"`
Metadata map[string]interface{} `json:"metadata,omitempty"`
}
KubernetesAPICall represents a call to the Kubernetes API during evaluation
type MFAChallenge ¶
type MFAChallenge struct {
ChallengeID string `json:"challenge_id"`
UserID string `json:"user_id"`
Method MFAMethod `json:"method"`
CreatedAt time.Time `json:"created_at"`
ExpiresAt time.Time `json:"expires_at"`
AttemptCount int `json:"attempt_count"`
MaxAttempts int `json:"max_attempts"`
Status string `json:"status"` // "pending", "completed", "failed", "expired"
ProviderData map[string]interface{} `json:"provider_data,omitempty"`
SessionData map[string]interface{} `json:"session_data,omitempty"`
}
MFAChallenge represents an active MFA challenge
type MFAComplianceReport ¶
type MFAComplianceReport struct {
ReportID string `json:"report_id"`
GeneratedAt time.Time `json:"generated_at"`
PeriodStart time.Time `json:"period_start"`
PeriodEnd time.Time `json:"period_end"`
// Overall statistics
TotalAccessAttempts int64 `json:"total_access_attempts"`
MFARequiredAttempts int64 `json:"mfa_required_attempts"`
MFACompletedAttempts int64 `json:"mfa_completed_attempts"`
MFAFailedAttempts int64 `json:"mfa_failed_attempts"`
EmergencyAccessCount int64 `json:"emergency_access_count"`
// Compliance rates
MFAComplianceRate float64 `json:"mfa_compliance_rate"`
PolicyComplianceRate float64 `json:"policy_compliance_rate"`
// Breakdown by policy
PolicyStats map[string]*PolicyStats `json:"policy_stats"`
// Risk analysis
RiskFactorStats map[RiskFactorType]int64 `json:"risk_factor_stats"`
HighRiskOperations []OperationStat `json:"high_risk_operations"`
// User analysis
TopNonCompliantUsers []UserComplianceStats `json:"top_non_compliant_users"`
MFAMethodUsage map[MFAMethod]int64 `json:"mfa_method_usage"`
}
MFAComplianceReport represents MFA compliance reporting data
type MFAConfig ¶
type MFAConfig struct {
Enabled bool `json:"enabled"`
RequiredMethods []MFAMethod `json:"required_methods"`
TOTPConfig TOTPConfig `json:"totp_config"`
SMSConfig SMSConfig `json:"sms_config"`
PushConfig PushConfig `json:"push_config"`
HardwareConfig HardwareTokenConfig `json:"hardware_config"`
PolicyConfig MFAPolicyEngineConfig `json:"policy_config"`
ProviderSettings map[string]interface{} `json:"provider_settings"`
}
MFAConfig holds configuration for MFA methods
type MFAHandler ¶
type MFAHandler struct {
// contains filtered or unexported fields
}
MFAHandler manages multi-factor authentication challenges and validation
func NewMFAHandler ¶
func NewMFAHandler(config MFAConfig, redisClient *redis.Client, jwtService JWTServiceInterface) *MFAHandler
NewMFAHandler creates a new MFA handler instance
func (*MFAHandler) CheckEmergencyAccess ¶
func (h *MFAHandler) CheckEmergencyAccess(ctx context.Context, userID, emergencyCode string) (bool, error)
CheckEmergencyAccess checks if emergency access is allowed
func (*MFAHandler) CreateChallenge ¶
func (h *MFAHandler) CreateChallenge(ctx context.Context, userID string, method MFAMethod, sessionData map[string]interface{}) (*MFAChallenge, error)
CreateChallenge creates a new MFA challenge for a user
func (*MFAHandler) CreateRetryStrategy ¶
func (h *MFAHandler) CreateRetryStrategy(challenge *MFAChallenge, failureReason string) map[string]interface{}
CreateRetryStrategy creates a retry strategy for failed MFA attempts
func (*MFAHandler) GenerateTOTPSecret ¶
func (h *MFAHandler) GenerateTOTPSecret(accountName string) (string, string, error)
GenerateTOTPSecret generates a new TOTP secret for user enrollment
func (*MFAHandler) GetMFAErrorMessage ¶
func (h *MFAHandler) GetMFAErrorMessage(errorType string, method MFAMethod, context map[string]interface{}) string
GetMFAErrorMessage returns user-friendly error messages
func (*MFAHandler) GetMFAMethodDisplayName ¶
func (h *MFAHandler) GetMFAMethodDisplayName(method MFAMethod) string
GetMFAMethodDisplayName returns user-friendly display names for MFA methods
func (*MFAHandler) GetMFAStepGuidance ¶
func (h *MFAHandler) GetMFAStepGuidance(method MFAMethod) []string
GetMFAStepGuidance provides step-by-step guidance for MFA completion
func (*MFAHandler) GetSupportedMethods ¶
func (h *MFAHandler) GetSupportedMethods() []MFAMethod
GetSupportedMethods returns all supported MFA methods
func (*MFAHandler) GetUserFriendlyInstruction ¶
func (h *MFAHandler) GetUserFriendlyInstruction(method MFAMethod, step string) string
GetUserFriendlyInstruction returns user-friendly instructions for MFA methods
func (*MFAHandler) HandleEmergencyAccess ¶
func (h *MFAHandler) HandleEmergencyAccess() fiber.Handler
HandleEmergencyAccess handles emergency access requests
func (*MFAHandler) HandleMFAChallenge ¶
func (h *MFAHandler) HandleMFAChallenge() fiber.Handler
HandleMFAChallenge creates a new MFA challenge
func (*MFAHandler) HandleMFAMethodSwitch ¶
func (h *MFAHandler) HandleMFAMethodSwitch() fiber.Handler
HandleMFAMethodSwitch allows users to switch between MFA methods
func (*MFAHandler) HandleMFAValidation ¶
func (h *MFAHandler) HandleMFAValidation() fiber.Handler
HandleMFAValidation validates an MFA challenge response
func (*MFAHandler) IsHighRiskOperation ¶
func (h *MFAHandler) IsHighRiskOperation(operation string) bool
IsHighRiskOperation checks if an operation is considered high-risk and requires fresh MFA
func (*MFAHandler) RequiresMFA ¶
func (h *MFAHandler) RequiresMFA(ctx context.Context, claims *JWTClaims, clientIP string, userAgent string) (bool, []MFAMethod, error)
RequiresMFA determines if MFA is required for a user based on policy
func (*MFAHandler) UpdateMFAStatus ¶
func (h *MFAHandler) UpdateMFAStatus(claims *JWTClaims, method MFAMethod, validityDuration time.Duration)
UpdateMFAStatus updates the MFA status in JWT claims
func (*MFAHandler) ValidateChallenge ¶
func (h *MFAHandler) ValidateChallenge(ctx context.Context, challengeID string, response map[string]interface{}) (*MFAResponse, error)
ValidateChallenge validates an MFA challenge response
type MFAIntegrationConfig ¶
type MFAIntegrationConfig struct {
DefaultPolicyEngine bool `json:"default_policy_engine"` // Use default policy engine
AuditLoggingEnabled bool `json:"audit_logging_enabled"` // Enable audit logging
ComplianceMode bool `json:"compliance_mode"` // Enable strict compliance mode
HealthCheckInterval time.Duration `json:"health_check_interval"` // Health check interval
}
MFAIntegrationConfig holds configuration for MFA integration service
type MFAIntegrationDecision ¶
type MFAIntegrationDecision struct {
SessionID string `json:"session_id"`
UserID string `json:"user_id"`
Operation string `json:"operation"`
PolicyDecision *PolicyDecision `json:"policy_decision"`
CurrentMFAStatus *MFASessionStatus `json:"current_mfa_status"`
RequiredAction MFARequiredAction `json:"required_action"`
ChallengeRequired bool `json:"challenge_required"`
Challenge *MFAChallenge `json:"challenge,omitempty"`
Reason string `json:"reason"`
ComplianceMetadata map[string]interface{} `json:"compliance_metadata"`
}
MFAIntegrationDecision represents a comprehensive MFA decision
type MFAIntegrationService ¶
type MFAIntegrationService struct {
// contains filtered or unexported fields
}
MFAIntegrationService provides unified access to all MFA components
func NewMFAIntegrationService ¶
func NewMFAIntegrationService( handler *MFAHandler, policyEngine *MFAPolicyEngine, sessionManager *MFASessionManager, jwtService JWTServiceInterface, config MFAIntegrationConfig, ) *MFAIntegrationService
NewMFAIntegrationService creates a new MFA integration service
func (*MFAIntegrationService) EvaluateAccess ¶
func (s *MFAIntegrationService) EvaluateAccess(ctx context.Context, request AccessRequest) (*MFAIntegrationDecision, error)
EvaluateAccess performs comprehensive MFA evaluation for access requests
func (*MFAIntegrationService) GenerateComplianceReport ¶
func (s *MFAIntegrationService) GenerateComplianceReport(ctx context.Context, startTime, endTime time.Time) (*MFAComplianceReport, error)
GenerateComplianceReport generates a comprehensive compliance report
func (*MFAIntegrationService) GetUserMFAStatus ¶
func (s *MFAIntegrationService) GetUserMFAStatus(ctx context.Context, userID string) (*UserMFAStatus, error)
GetUserMFAStatus provides comprehensive MFA status for a user
func (*MFAIntegrationService) HealthCheck ¶
func (s *MFAIntegrationService) HealthCheck(ctx context.Context) map[string]interface{}
Health check method
func (*MFAIntegrationService) InvalidateUserMFA ¶
func (s *MFAIntegrationService) InvalidateUserMFA(ctx context.Context, userID string, reason string) error
InvalidateUserMFA invalidates MFA for all sessions of a user
func (*MFAIntegrationService) RefreshPolicies ¶
func (s *MFAIntegrationService) RefreshPolicies(ctx context.Context) error
RefreshPolicies reloads MFA policies from storage
func (*MFAIntegrationService) ValidateMFAChallenge ¶
func (s *MFAIntegrationService) ValidateMFAChallenge(ctx context.Context, challengeID string, response map[string]interface{}) (*MFAValidationResult, error)
ValidateMFAChallenge validates an MFA challenge response and updates session state
type MFAOperationConfig ¶
type MFAOperationConfig struct {
Operation string `json:"operation"`
RiskLevel MFAOperationRisk `json:"risk_level"`
RequiresMFA bool `json:"requires_mfa"`
MFAValidity time.Duration `json:"mfa_validity"`
AllowedMethods []MFAMethod `json:"allowed_methods"`
Description string `json:"description"`
}
MFAOperationConfig defines MFA requirements for operations
type MFAOperationRisk ¶
type MFAOperationRisk string
MFAOperationRisk defines risk levels for operations requiring MFA step-up
const ( MFARiskLow MFAOperationRisk = "LOW" MFARiskMedium MFAOperationRisk = "MEDIUM" MFARiskHigh MFAOperationRisk = "HIGH" MFARiskCritical MFAOperationRisk = "CRITICAL" )
type MFAPolicy ¶
type MFAPolicy struct {
Name string `json:"name"`
Description string `json:"description"`
Enabled bool `json:"enabled"`
Priority int `json:"priority"` // Higher priority overrides lower
// Target criteria
UserGroups []string `json:"user_groups"` // OIDC/SAML groups
KubernetesGroups []string `json:"kubernetes_groups"` // K8s RBAC groups
Roles []string `json:"roles"` // KubeChat roles
Namespaces []string `json:"namespaces"` // Namespace restrictions
// MFA requirements
RequireMFA bool `json:"require_mfa"`
AllowedMethods []MFAMethod `json:"allowed_methods"` // TOTP, SMS, Push, Hardware
MFAValidityDuration time.Duration `json:"mfa_validity_duration"`
StepUpOperations []string `json:"stepup_operations"` // Operations requiring fresh MFA
StepUpInterval time.Duration `json:"stepup_interval"` // How fresh MFA must be for step-up
// Risk-based conditions
RiskFactors []RiskFactor `json:"risk_factors"`
ConditionalMFA bool `json:"conditional_mfa"` // Enable risk-based MFA
// Emergency access
AllowEmergencyAccess bool `json:"allow_emergency_access"`
EmergencyMethods []MFAMethod `json:"emergency_methods"`
// Compliance and audit
LogAllAccess bool `json:"log_all_access"` // Log all access attempts
ComplianceRequired bool `json:"compliance_required"` // Mark as compliance-critical
// Temporal restrictions
ActiveHours *TimeWindow `json:"active_hours,omitempty"`
ExpirationDate *time.Time `json:"expiration_date,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
CreatedBy string `json:"created_by"`
}
MFAPolicy defines MFA requirements for different user groups and scenarios
type MFAPolicyConfig ¶
type MFAPolicyConfig struct {
EnforceForAllUsers bool `json:"enforce_for_all_users"`
UserGroupRequirements map[string][]MFAMethod `json:"user_group_requirements"`
RiskBasedMFA RiskBasedMFAConfig `json:"risk_based_mfa"`
EmergencyAccess EmergencyAccessConfig `json:"emergency_access"`
}
MFAPolicyConfig holds MFA policy configuration
type MFAPolicyEngine ¶
type MFAPolicyEngine struct {
// contains filtered or unexported fields
}
MFAPolicyEngine manages enterprise MFA policies and enforcement (Story 2.4 Task 5)
func NewMFAPolicyEngine ¶
func NewMFAPolicyEngine(redisClient redis.UniversalClient, config MFAPolicyEngineConfig) *MFAPolicyEngine
NewMFAPolicyEngine creates a new MFA policy engine
func (*MFAPolicyEngine) CreatePolicy ¶
func (e *MFAPolicyEngine) CreatePolicy(policy *MFAPolicy) error
CreatePolicy creates a new MFA policy
func (*MFAPolicyEngine) DeletePolicy ¶
func (e *MFAPolicyEngine) DeletePolicy(policyName string) error
DeletePolicy deletes an MFA policy
func (*MFAPolicyEngine) EvaluatePolicy ¶
func (e *MFAPolicyEngine) EvaluatePolicy(ctx context.Context, evalCtx PolicyEvaluationContext) (*PolicyDecision, error)
EvaluatePolicy evaluates MFA policies for a given context
func (*MFAPolicyEngine) GenerateComplianceReport ¶
func (e *MFAPolicyEngine) GenerateComplianceReport(startTime, endTime time.Time) (*MFAComplianceReport, error)
GenerateComplianceReport generates an MFA compliance report for the specified period
func (*MFAPolicyEngine) GetPolicy ¶
func (e *MFAPolicyEngine) GetPolicy(policyName string) (*MFAPolicy, error)
GetPolicy retrieves a specific MFA policy
func (*MFAPolicyEngine) ListPolicies ¶
func (e *MFAPolicyEngine) ListPolicies() map[string]*MFAPolicy
ListPolicies returns all MFA policies
func (*MFAPolicyEngine) UpdatePolicy ¶
func (e *MFAPolicyEngine) UpdatePolicy(policy *MFAPolicy) error
UpdatePolicy updates an existing MFA policy
type MFAPolicyEngineConfig ¶
type MFAPolicyEngineConfig struct {
DefaultPolicy string `json:"default_policy"` // Default policy name
PolicyRefreshInterval time.Duration `json:"policy_refresh_interval"` // How often to refresh policies
EmergencyAccessEnabled bool `json:"emergency_access_enabled"` // Enable emergency access
ComplianceLoggingEnabled bool `json:"compliance_logging_enabled"` // Enable compliance logging
PolicyCacheTimeout time.Duration `json:"policy_cache_timeout"` // Policy cache timeout
// Legacy fields for backward compatibility with MFAConfig
EnforceForAllUsers bool `json:"enforce_for_all_users"`
UserGroupRequirements map[string][]MFAMethod `json:"user_group_requirements"`
RiskBasedMFA RiskBasedMFAConfig `json:"risk_based_mfa"`
EmergencyAccess EmergencyAccessConfig `json:"emergency_access"`
}
MFAPolicyEngineConfig holds configuration for MFA policy engine
type MFARequiredAction ¶
type MFARequiredAction string
MFARequiredAction defines the required MFA action
const ( MFAActionAllow MFARequiredAction = "allow" // Allow access without MFA MFAActionRequireInitial MFARequiredAction = "require_initial" // Require initial MFA MFAActionRequireStepUp MFARequiredAction = "require_stepup" // Require MFA step-up MFAActionDeny MFARequiredAction = "deny" // Deny access MFAActionEmergency MFARequiredAction = "emergency" // Allow emergency access )
type MFAResponse ¶
type MFAResponse struct {
Success bool `json:"success"`
Message string `json:"message"`
Method MFAMethod `json:"method"`
NextStep string `json:"next_step,omitempty"`
ChallengeID string `json:"challenge_id,omitempty"`
ExpiresAt time.Time `json:"expires_at,omitempty"`
RetryAfter int `json:"retry_after,omitempty"` // seconds
SessionID string `json:"session_id,omitempty"`
UserID string `json:"user_id,omitempty"`
ValidityDuration time.Duration `json:"validity_duration,omitempty"`
ErrorMessage string `json:"error_message,omitempty"`
}
MFAResponse represents the response to an MFA challenge
type MFASessionManager ¶
type MFASessionManager struct {
// contains filtered or unexported fields
}
MFASessionManager handles MFA session state and step-up authentication
func NewMFASessionManager ¶
func NewMFASessionManager(redisClient *redis.Client, jwtService JWTServiceInterface, mfaHandler *MFAHandler, auditLogger *AuthAuditLogger) *MFASessionManager
NewMFASessionManager creates a new MFA session manager
func (*MFASessionManager) CompleteMFAStepUp ¶
func (m *MFASessionManager) CompleteMFAStepUp(ctx context.Context, sessionID, operation, method string) error
CompleteMFAStepUp completes MFA step-up authentication after successful challenge validation
func (*MFASessionManager) GetMFAOperationRequirements ¶
func (m *MFASessionManager) GetMFAOperationRequirements() fiber.Handler
GetMFAOperationRequirements returns MFA requirements for all operations
func (*MFASessionManager) GetMFAStatus ¶
func (m *MFASessionManager) GetMFAStatus(ctx context.Context, sessionID string) (*MFASessionStatus, error)
GetMFAStatus retrieves MFA status for a session
func (*MFASessionManager) GetSessionMFAStatus ¶
func (m *MFASessionManager) GetSessionMFAStatus() fiber.Handler
GetSessionMFAStatus returns current MFA status for the user's session
func (*MFASessionManager) InvalidateMFAForSessions ¶
func (m *MFASessionManager) InvalidateMFAForSessions(ctx context.Context, userID string) error
InvalidateMFAForSessions invalidates MFA for all sessions of a user
func (*MFASessionManager) InvalidateSessionMFA ¶
func (m *MFASessionManager) InvalidateSessionMFA() fiber.Handler
InvalidateSessionMFA invalidates MFA for the current session
func (*MFASessionManager) RequiresMFAMiddleware ¶
func (m *MFASessionManager) RequiresMFAMiddleware(operation string) fiber.Handler
RequiresMFAMiddleware is a middleware that checks if an operation requires MFA
func (*MFASessionManager) SetMFAStepUpRequirement ¶
func (m *MFASessionManager) SetMFAStepUpRequirement(ctx context.Context, sessionID string, required bool, operation string) error
SetMFAStepUpRequirement sets MFA step-up requirement for a session
func (*MFASessionManager) UpdateMFAStatus ¶
func (m *MFASessionManager) UpdateMFAStatus(ctx context.Context, sessionID, userID string, mfaCompleted bool, method string, validity time.Duration) error
UpdateMFAStatus updates the MFA status for a session
func (*MFASessionManager) ValidateMFAForOperation ¶
func (m *MFASessionManager) ValidateMFAForOperation(ctx context.Context, sessionID, operation string) (bool, error)
ValidateMFAForOperation checks if MFA is valid for a specific operation
type MFASessionStatus ¶
type MFASessionStatus struct {
SessionID string `json:"session_id"`
UserID string `json:"user_id"`
MFACompleted bool `json:"mfa_completed"`
MFAMethod string `json:"mfa_method,omitempty"`
MFATimestamp time.Time `json:"mfa_timestamp"`
MFAValidityDuration time.Duration `json:"mfa_validity_duration"`
MFAExpiresAt time.Time `json:"mfa_expires_at"`
RequiresMFAStepUp bool `json:"requires_mfa_stepup"`
StepUpOperations []string `json:"stepup_operations,omitempty"`
LastMFAValidation time.Time `json:"last_mfa_validation"`
MFAFailureCount int `json:"mfa_failure_count"`
MFALockedUntil time.Time `json:"mfa_locked_until,omitempty"`
}
MFASessionStatus represents the MFA status for a session (Story 2.4)
type MFAValidationResult ¶
type MFAValidationResult struct {
Success bool `json:"success"`
SessionID string `json:"session_id"`
UserID string `json:"user_id"`
Method MFAMethod `json:"method"`
CompletedAt time.Time `json:"completed_at"`
ErrorCode string `json:"error_code,omitempty"`
ErrorMessage string `json:"error_message,omitempty"`
}
MFAValidationResult represents the result of MFA challenge validation
type NamespaceAccessResult ¶
type NamespaceAccessResult struct {
AllowedNamespaces []string `json:"allowed_namespaces"`
DefaultNamespace string `json:"default_namespace"`
ClusterAccess bool `json:"cluster_access"`
AccessMap map[string]bool `json:"access_map"` // namespace -> has access
ValidationTime time.Time `json:"validation_time"`
CacheHit bool `json:"cache_hit"`
}
NamespaceAccessResult represents the result of namespace access validation
type NamespaceValidator ¶
type NamespaceValidator struct {
// contains filtered or unexported fields
}
NamespaceValidator handles namespace access validation for users
func NewNamespaceValidator ¶
func NewNamespaceValidator(config NamespaceValidatorConfig) (*NamespaceValidator, error)
NewNamespaceValidator creates a new namespace validator
func (*NamespaceValidator) GetCacheHitRatio ¶
func (nv *NamespaceValidator) GetCacheHitRatio() float64
GetCacheHitRatio returns the cache hit ratio
func (*NamespaceValidator) GetCacheStats ¶
func (nv *NamespaceValidator) GetCacheStats(ctx context.Context) (map[string]interface{}, error)
GetCacheStats returns cache statistics
func (*NamespaceValidator) GetMetrics ¶
func (nv *NamespaceValidator) GetMetrics() *ValidationMetrics
GetMetrics returns current validation metrics
func (*NamespaceValidator) InvalidateAllCache ¶
func (nv *NamespaceValidator) InvalidateAllCache(ctx context.Context) error
InvalidateAllCache clears all namespace validation cache
func (*NamespaceValidator) InvalidateUserCache ¶
func (nv *NamespaceValidator) InvalidateUserCache(ctx context.Context, kubernetesUser string) error
InvalidateUserCache invalidates cached results for a user
func (*NamespaceValidator) IsPerformanceTarget ¶
func (nv *NamespaceValidator) IsPerformanceTarget() map[string]bool
IsPerformanceTarget checks if performance targets are being met
func (*NamespaceValidator) ResetMetrics ¶
func (nv *NamespaceValidator) ResetMetrics()
ResetMetrics resets all metrics
func (*NamespaceValidator) ValidateNamespaceAccess ¶
func (nv *NamespaceValidator) ValidateNamespaceAccess(ctx context.Context, request ValidationRequest) (*NamespaceAccessResult, error)
ValidateNamespaceAccess validates which namespaces a user can access
type NamespaceValidatorConfig ¶
type NamespaceValidatorConfig struct {
// Kubernetes client configuration
KubeConfig *rest.Config
// Redis configuration for caching
RedisClient redis.UniversalClient
CacheTTL time.Duration
EnableCaching bool
CachePrefix string
// Performance tuning
BatchSize int
MaxConcurrency int
}
NamespaceValidatorConfig holds configuration for the namespace validator
type OIDCProvider ¶
type OIDCProvider struct {
Name string `json:"name"`
Issuer string `json:"issuer"`
ClientID string `json:"client_id"`
ClientSecret string `json:"client_secret"`
RedirectURL string `json:"redirect_url"`
Scopes []string `json:"scopes"`
// Provider-specific settings
ExtraParams map[string]string `json:"extra_params,omitempty"`
}
OIDCProvider represents configuration for different OIDC providers
type OperationStat ¶
type OperationStat struct {
Operation string `json:"operation"`
Count int64 `json:"count"`
MFARequiredCount int64 `json:"mfa_required_count"`
FailureCount int64 `json:"failure_count"`
}
OperationStat holds statistics for high-risk operations
type PermissionEvaluationContext ¶
type PermissionEvaluationContext struct {
RequestID string `json:"request_id"`
Timestamp time.Time `json:"timestamp"`
UserContext *JWTClaims `json:"user_context"`
Request *PermissionRequest `json:"request"`
EvaluationPath []EvaluationStep `json:"evaluation_path"`
KubernetesAPICalls []KubernetesAPICall `json:"kubernetes_api_calls"`
CacheAccesses []CacheAccess `json:"cache_accesses"`
Result *PermissionEvaluationResult `json:"result"`
Duration time.Duration `json:"duration"`
ErrorDetails *EnhancedErrorDetails `json:"error_details,omitempty"`
}
PermissionEvaluationContext represents the full context of a permission evaluation
type PermissionEvaluationResult ¶
type PermissionEvaluationResult struct {
Allowed bool `json:"allowed"`
Reason string `json:"reason"`
EvaluatedRules []EvaluatedRule `json:"evaluated_rules"`
ApplicableRoles []string `json:"applicable_roles"`
ApplicableBindings []string `json:"applicable_bindings"`
ConflictingPolicies []ConflictingPolicy `json:"conflicting_policies,omitempty"`
Recommendations *PermissionRecommendations `json:"recommendations,omitempty"`
AuditTrail []models.AuditEntry `json:"audit_trail"`
}
PermissionEvaluationResult represents the final result of permission evaluation
type PermissionGap ¶
type PermissionGap struct {
MissingPermissions []models.RequiredPermission `json:"missing_permissions"`
ExcessPermissions []models.RequiredPermission `json:"excess_permissions"`
CurrentRoles []string `json:"current_roles"`
CurrentBindings []string `json:"current_bindings"`
Recommendations *PermissionRecommendations `json:"recommendations"`
}
PermissionGap represents the difference between current and required permissions
type PermissionRecommendations ¶
type PermissionRecommendations struct {
SuggestedRoles []RoleRecommendation `json:"suggested_roles"`
SuggestedBindings []RoleBindingRecommendation `json:"suggested_bindings"`
KubectlCommands []string `json:"kubectl_commands"`
SecurityConsiderations []string `json:"security_considerations"`
MinimalPermissionSet []models.RequiredPermission `json:"minimal_permission_set"`
}
PermissionRecommendations provides specific RBAC recommendations
type PermissionRequest ¶
type PermissionRequest struct {
// User context from JWT claims
KubernetesUser string `json:"kubernetes_user"` // From JWT claims
KubernetesGroups []string `json:"kubernetes_groups"` // From JWT claims
SessionID string `json:"session_id"` // From JWT claims
// Resource details to check
Namespace string `json:"namespace"` // Target namespace
Verb string `json:"verb"` // K8s verb (get, list, create, etc.)
Resource string `json:"resource"` // K8s resource type (pods, deployments, etc.)
ResourceName string `json:"resource_name"` // Specific resource name (optional)
APIGroup string `json:"api_group"` // K8s API group (optional)
Subresource string `json:"subresource"` // K8s subresource (optional)
// Additional context
CommandContext string `json:"command_context"` // Natural language context
AllowedActions []string `json:"allowed_actions"` // Pre-validated actions from JWT
}
PermissionRequest represents a request to validate Kubernetes permissions
type PermissionResponse ¶
type PermissionResponse struct {
Allowed bool `json:"allowed"`
Reason string `json:"reason"`
EvaluatedAt time.Time `json:"evaluated_at"`
CacheHit bool `json:"cache_hit"`
ResponseTime time.Duration `json:"response_time"`
// Detailed permission information
UserInfo UserPermissionInfo `json:"user_info"`
ResourceAccess ResourceAccess `json:"resource_access"`
Suggestions []string `json:"suggestions,omitempty"`
// Audit trail
ValidationID string `json:"validation_id"`
AuditTrail AuditEntry `json:"audit_trail"`
}
PermissionResponse represents the result of permission validation
type PermissionTestResult ¶
type PermissionTestResult struct {
TestID string `json:"test_id"`
TestType string `json:"test_type"` // "current", "impersonation", "proposed"
TestedAs string `json:"tested_as"` // User or role being tested
Permission models.RequiredPermission `json:"permission"`
Result bool `json:"result"`
Reason string `json:"reason"`
TestCommand string `json:"test_command"`
ExecutedAt time.Time `json:"executed_at"`
Duration time.Duration `json:"duration"`
RawOutput string `json:"raw_output,omitempty"`
}
PermissionTestResult represents the result of testing permissions
type PolicyDecision ¶
type PolicyDecision struct {
Allow bool `json:"allow"`
RequireMFA bool `json:"require_mfa"`
AllowedMethods []MFAMethod `json:"allowed_methods"`
MFAValidityDuration time.Duration `json:"mfa_validity_duration"`
RequireStepUp bool `json:"require_stepup"`
StepUpInterval time.Duration `json:"stepup_interval"`
AppliedPolicies []string `json:"applied_policies"`
RiskFactorsDetected []RiskFactor `json:"risk_factors_detected"`
EmergencyAccess bool `json:"emergency_access"`
Reason string `json:"reason"`
ComplianceRequired bool `json:"compliance_required"`
}
PolicyDecision represents the result of policy evaluation
type PolicyEvaluationContext ¶
type PolicyEvaluationContext struct {
UserID string `json:"user_id"`
Email string `json:"email"`
UserGroups []string `json:"user_groups"` // OIDC/SAML groups
KubernetesGroups []string `json:"kubernetes_groups"` // K8s RBAC groups
Role string `json:"role"` // KubeChat role
RequestedOperation string `json:"requested_operation"`
TargetNamespace string `json:"target_namespace"`
IPAddress string `json:"ip_address"`
UserAgent string `json:"user_agent"`
DeviceFingerprint string `json:"device_fingerprint"`
SessionContext map[string]interface{} `json:"session_context"`
Timestamp time.Time `json:"timestamp"`
}
PolicyEvaluationContext contains context for policy evaluation
type PolicyStats ¶
type PolicyStats struct {
PolicyName string `json:"policy_name"`
TotalEvaluations int64 `json:"total_evaluations"`
AllowedCount int64 `json:"allowed_count"`
DeniedCount int64 `json:"denied_count"`
MFARequiredCount int64 `json:"mfa_required_count"`
ComplianceRate float64 `json:"compliance_rate"`
}
PolicyStats holds statistics for a specific policy
type ProviderConfig ¶
type ProviderConfig struct {
Provider *oidc.Provider
OAuth2Config oauth2.Config
Settings OIDCProvider
Verifier *oidc.IDTokenVerifier
}
ProviderConfig holds runtime configuration for an OIDC provider
type PushConfig ¶
type PushConfig struct {
Providers []string `json:"providers"` // "okta_verify", "duo", "auth0_guardian"
Settings map[string]string `json:"settings"`
Timeout time.Duration `json:"timeout"`
}
PushConfig holds push notification MFA configuration
type RBACAdvisor ¶
type RBACAdvisor struct {
// contains filtered or unexported fields
}
RBACAdvisor provides intelligent RBAC permission suggestions and analysis
func NewRBACAdvisor ¶
func NewRBACAdvisor(config RBACAdvisorConfig) (*RBACAdvisor, error)
NewRBACAdvisor creates a new RBAC advisor instance
func (*RBACAdvisor) AnalyzePermissionGap ¶
func (advisor *RBACAdvisor) AnalyzePermissionGap(ctx context.Context, userContext *JWTClaims, requiredPermissions []models.RequiredPermission) (*PermissionGap, error)
AnalyzePermissionGap analyzes the gap between current and required permissions
func (*RBACAdvisor) GenerateKubectlCommands ¶
func (advisor *RBACAdvisor) GenerateKubectlCommands(ctx context.Context, userContext *JWTClaims, missingPermissions []models.RequiredPermission) ([]string, error)
GenerateKubectlCommands generates specific kubectl commands for permission resolution
func (*RBACAdvisor) GetMetrics ¶
func (advisor *RBACAdvisor) GetMetrics() *RBACAdvisorMetrics
GetMetrics returns current metrics
func (*RBACAdvisor) GetRoleSuggestions ¶
func (advisor *RBACAdvisor) GetRoleSuggestions(ctx context.Context, requiredPermissions []models.RequiredPermission) ([]RoleRecommendation, error)
GetRoleSuggestions provides intelligent role suggestions based on permission patterns
func (*RBACAdvisor) SuggestMinimalPermissions ¶
func (advisor *RBACAdvisor) SuggestMinimalPermissions(ctx context.Context, requiredPermissions []models.RequiredPermission) ([]models.RequiredPermission, error)
SuggestMinimalPermissions suggests the minimal set of permissions required
type RBACAdvisorConfig ¶
type RBACAdvisorConfig struct {
KubeClient kubernetes.Interface
RedisClient redis.UniversalClient
Validator *RBACValidator
CacheTTL time.Duration
EnableCaching bool
CachePrefix string
}
RBACAdvisorConfig holds configuration for the RBAC advisor
type RBACAdvisorMetrics ¶
type RBACAdvisorMetrics struct {
AnalysisRequests int64 `json:"analysis_requests"`
CacheHits int64 `json:"cache_hits"`
CacheMisses int64 `json:"cache_misses"`
AverageAnalysisTime time.Duration `json:"average_analysis_time"`
RecommendationAccuracy float64 `json:"recommendation_accuracy"`
// contains filtered or unexported fields
}
RBACAdvisorMetrics tracks advisor performance and usage
type RBACValidationMetrics ¶
type RBACValidationMetrics struct {
TotalValidations int64 `json:"total_validations"`
AllowedValidations int64 `json:"allowed_validations"`
DeniedValidations int64 `json:"denied_validations"`
CacheHits int64 `json:"cache_hits"`
CacheMisses int64 `json:"cache_misses"`
AverageLatency time.Duration `json:"average_latency"`
MaxLatency time.Duration `json:"max_latency"`
MinLatency time.Duration `json:"min_latency"`
TotalLatency time.Duration `json:"total_latency"`
K8sAPICallCount int64 `json:"k8s_api_call_count"`
CircuitBreakerTrips int64 `json:"circuit_breaker_trips"`
ErrorCount int64 `json:"error_count"`
LastValidationTime time.Time `json:"last_validation_time"`
// contains filtered or unexported fields
}
RBACValidationMetrics tracks RBAC validation performance metrics
type RBACValidator ¶
type RBACValidator struct {
// contains filtered or unexported fields
}
RBACValidator handles Kubernetes RBAC permission validation
func NewRBACValidator ¶
func NewRBACValidator(config RBACValidatorConfig) (*RBACValidator, error)
NewRBACValidator creates a new RBAC validator with Kubernetes client integration
func (*RBACValidator) GetCacheHitRatio ¶
func (r *RBACValidator) GetCacheHitRatio() float64
GetCacheHitRatio returns the cache hit ratio for performance monitoring
func (*RBACValidator) GetMetrics ¶
func (r *RBACValidator) GetMetrics() *RBACValidationMetrics
GetMetrics returns current validation metrics
func (*RBACValidator) InvalidateUserCache ¶
func (r *RBACValidator) InvalidateUserCache(ctx context.Context, kubernetesUser string) error
InvalidateUserCache invalidates all cached results for a user
func (*RBACValidator) IsPerformanceTarget ¶
func (r *RBACValidator) IsPerformanceTarget() map[string]bool
IsPerformanceTarget checks if performance targets are being met
func (*RBACValidator) ValidatePermission ¶
func (r *RBACValidator) ValidatePermission(ctx context.Context, request PermissionRequest) (*PermissionResponse, error)
ValidatePermission validates user permissions against Kubernetes RBAC
type RBACValidatorConfig ¶
type RBACValidatorConfig struct {
// Kubernetes client configuration
KubeConfig *rest.Config
// Redis configuration for caching
RedisClient redis.UniversalClient
CacheTTL time.Duration
EnableCaching bool
CachePrefix string
// Circuit breaker configuration for K8s API reliability
CircuitBreakerConfig CircuitBreakerConfig
}
RBACValidatorConfig holds configuration for the RBAC validator
type RateLimitEntry ¶
RateLimitEntry tracks rate limit data for a client
type RateLimiter ¶
type RateLimiter struct {
// contains filtered or unexported fields
}
RateLimiter implements distributed rate limiting
type RelatedIssue ¶
type RelatedIssue struct {
IssueID string `json:"issue_id"`
Description string `json:"description"`
Frequency int `json:"frequency"`
LastSeen time.Time `json:"last_seen"`
Resolution string `json:"resolution,omitempty"`
Similarity float64 `json:"similarity"` // 0.0-1.0
}
RelatedIssue represents related permission issues that might be relevant
type RequestInfo ¶
type RequestInfo struct {
Method string `json:"method"`
URL string `json:"url"`
Path string `json:"path"`
Headers map[string]string `json:"headers"`
QueryParams map[string]string `json:"query_params"`
Body string `json:"body,omitempty"`
BodySize int64 `json:"body_size"`
IPAddress string `json:"ip_address"`
UserAgent string `json:"user_agent"`
}
RequestInfo holds captured request information
type ResolutionStep ¶
type ResolutionStep struct {
StepID string `json:"step_id"`
StepNumber int `json:"step_number"`
Type ResolutionStepType `json:"type"`
Title string `json:"title"`
Description string `json:"description"`
Status StepStatus `json:"status"`
UserInput map[string]interface{} `json:"user_input,omitempty"`
SystemOutput map[string]interface{} `json:"system_output,omitempty"`
Options []StepOption `json:"options,omitempty"`
RequiredInput []InputRequirement `json:"required_input,omitempty"`
Validation *models.StepValidation `json:"validation,omitempty"`
ExecutedAt *time.Time `json:"executed_at,omitempty"`
Duration time.Duration `json:"duration,omitempty"`
Error string `json:"error,omitempty"`
}
ResolutionStep represents a single step in the interactive resolution workflow
type ResolutionStepType ¶
type ResolutionStepType string
ResolutionStepType defines the type of resolution step
const ( StepTypeAnalysis ResolutionStepType = "analysis" StepTypeUserInput ResolutionStepType = "user_input" StepTypePermissionTest ResolutionStepType = "permission_test" StepTypeRoleImpersonation ResolutionStepType = "role_impersonation" StepTypeWorkflowExecution ResolutionStepType = "workflow_execution" StepTypeApprovalRequest ResolutionStepType = "approval_request" StepTypeNotification ResolutionStepType = "notification" StepTypeVerification ResolutionStepType = "verification" )
type ResolverConfig ¶
type ResolverConfig struct {
EnableTesting bool `json:"enable_testing"`
EnableImpersonation bool `json:"enable_impersonation"`
EnableSelfService bool `json:"enable_self_service"`
WorkflowTimeout time.Duration `json:"workflow_timeout"`
MaxRetries int `json:"max_retries"`
RequireApproval bool `json:"require_approval"`
AutoApprovalRoles []string `json:"auto_approval_roles"`
EscalationTimeout time.Duration `json:"escalation_timeout"`
NotificationChannels []string `json:"notification_channels"`
}
ResolverConfig holds configuration for the interactive permission resolver
type ResourceAccess ¶
type ResourceAccess struct {
Namespace string `json:"namespace"`
Resource string `json:"resource"`
Verb string `json:"verb"`
AllowedVerbs []string `json:"allowed_verbs,omitempty"`
DeniedReason string `json:"denied_reason,omitempty"`
}
ResourceAccess contains detailed resource access information
type ResponseInfo ¶
type ResponseInfo struct {
StatusCode int `json:"status_code"`
Headers map[string]string `json:"headers"`
Body string `json:"body,omitempty"`
BodySize int64 `json:"body_size"`
}
ResponseInfo holds captured response information
type RiskAction ¶
type RiskAction string
RiskAction defines actions to take when risk factors are detected
const ( RiskActionRequireMFA RiskAction = "require_mfa" RiskActionStepUpMFA RiskAction = "stepup_mfa" RiskActionDenyAccess RiskAction = "deny_access" RiskActionLogOnly RiskAction = "log_only" )
type RiskBasedMFAConfig ¶
type RiskBasedMFAConfig struct {
Enabled bool `json:"enabled"`
UnknownIPRequiresMFA bool `json:"unknown_ip_requires_mfa"`
UnknownDeviceRequiresMFA bool `json:"unknown_device_requires_mfa"`
OffHoursRequiresMFA bool `json:"off_hours_requires_mfa"`
HighRiskCountries []string `json:"high_risk_countries"`
TrustedNetworks []string `json:"trusted_networks"`
}
RiskBasedMFAConfig holds risk-based MFA configuration
type RiskFactor ¶
type RiskFactor struct {
Type RiskFactorType `json:"type"`
Threshold string `json:"threshold"`
Action RiskAction `json:"action"`
Description string `json:"description"`
}
RiskFactor defines conditions that increase authentication risk
type RiskFactorType ¶
type RiskFactorType string
RiskFactorType defines types of risk factors
const ( RiskFactorUnknownIP RiskFactorType = "unknown_ip" RiskFactorUnknownDevice RiskFactorType = "unknown_device" RiskFactorOffHours RiskFactorType = "off_hours" RiskFactorHighPrivilege RiskFactorType = "high_privilege" RiskFactorSuspiciousLocation RiskFactorType = "suspicious_location" RiskFactorConcurrentSessions RiskFactorType = "concurrent_sessions" )
type RoleBindingRecommendation ¶
type RoleBindingRecommendation struct {
Name string `json:"name"`
Type string `json:"type"` // "ClusterRoleBinding" or "RoleBinding"
RoleName string `json:"role_name"`
Namespace string `json:"namespace,omitempty"`
Subject string `json:"subject"`
SubjectType string `json:"subject_type"` // "User", "Group", "ServiceAccount"
Justification string `json:"justification"`
TemporarySuggestion bool `json:"temporary_suggestion"`
ExpiryRecommendation string `json:"expiry_recommendation,omitempty"`
}
RoleBindingRecommendation suggests specific role bindings
type RoleRecommendation ¶
type RoleRecommendation struct {
Name string `json:"name"`
Type string `json:"type"` // "ClusterRole" or "Role"
Namespace string `json:"namespace,omitempty"`
Reason string `json:"reason"`
Permissions []string `json:"permissions"`
SecurityLevel string `json:"security_level"` // "minimal", "standard", "elevated"
Exists bool `json:"exists"` // Whether role already exists
}
RoleRecommendation suggests specific roles for the user
type RuleMatchDetails ¶
type RuleMatchDetails struct {
APIGroupMatch bool `json:"api_group_match"`
ResourceMatch bool `json:"resource_match"`
VerbMatch bool `json:"verb_match"`
NamespaceMatch bool `json:"namespace_match"`
FailureReason string `json:"failure_reason,omitempty"`
MatchScore float64 `json:"match_score"` // 0.0-1.0 indicating closeness of match
}
RuleMatchDetails provides details about how a rule matched (or didn't match)
type SAMLAssertion ¶
type SAMLAssertion struct {
Subject string `json:"subject"`
NameID string `json:"name_id"`
Email string `json:"email"`
DisplayName string `json:"display_name"`
GivenName string `json:"given_name"`
Surname string `json:"surname"`
Groups []string `json:"groups"`
Attributes map[string]interface{} `json:"attributes"`
SessionIndex string `json:"session_index"`
NotOnOrAfter time.Time `json:"not_on_or_after"`
// MFA fields (Story 2.4)
MFACompleted bool `json:"mfa_completed"`
MFAMethod string `json:"mfa_method,omitempty"`
MFATimestamp time.Time `json:"mfa_timestamp,omitempty"`
AuthContexts []string `json:"auth_contexts,omitempty"` // SAML AuthnContext values
}
SAMLAssertion represents processed SAML assertion data
type SAMLConfig ¶
type SAMLConfig struct {
EntityID string `json:"entity_id"` // Service Provider Entity ID
ACSURL string `json:"acs_url"` // Assertion Consumer Service URL
SLOUrl string `json:"slo_url"` // Single Logout URL
IDPMetadataURL string `json:"idp_metadata_url"` // Identity Provider metadata URL
IDPMetadataXML string `json:"idp_metadata_xml"` // Alternative: raw IDP metadata XML
PrivateKeyPEM string `json:"private_key_pem"` // Private key for signing
CertificatePEM string `json:"certificate_pem"` // Certificate for signing
SignRequests bool `json:"sign_requests"` // Whether to sign SAML requests
ForceAuthn bool `json:"force_authn"` // Force re-authentication
AllowIDPInit bool `json:"allow_idp_init"` // Allow IDP-initiated login
}
SAMLConfig holds configuration for SAML authentication
type SAMLError ¶
type SAMLError struct {
Code string `json:"code"`
Message string `json:"message"`
Details string `json:"details,omitempty"`
}
SAMLError represents SAML-specific errors
type SAMLProvider ¶
type SAMLProvider struct {
// contains filtered or unexported fields
}
SAMLProvider manages SAML authentication
func NewSAMLProvider ¶
func NewSAMLProvider(config SAMLConfig, jwtService JWTServiceInterface, mfaHandler *MFAHandler) (*SAMLProvider, error)
NewSAMLProvider creates a new SAML authentication provider
func (*SAMLProvider) GenerateMetadata ¶
func (sp *SAMLProvider) GenerateMetadata() (string, error)
GenerateMetadata generates SAML metadata for the service provider
func (*SAMLProvider) GetAuthURL ¶
func (sp *SAMLProvider) GetAuthURL(relayState string) (string, error)
GetAuthURL returns the SAML authentication URL
func (*SAMLProvider) GetMetadata ¶
func (sp *SAMLProvider) GetMetadata() fiber.Handler
GetMetadata returns the SAML service provider metadata
func (*SAMLProvider) GetSupportedSAMLBindings ¶
func (sp *SAMLProvider) GetSupportedSAMLBindings() []string
GetSupportedSAMLBindings returns supported SAML bindings
func (*SAMLProvider) HandleAssertion ¶
func (sp *SAMLProvider) HandleAssertion() fiber.Handler
HandleAssertion processes SAML assertion and creates JWT token
func (*SAMLProvider) HandleSingleLogout ¶
func (sp *SAMLProvider) HandleSingleLogout() fiber.Handler
HandleSingleLogout processes SAML single logout requests
func (*SAMLProvider) ProcessAssertion ¶
func (sp *SAMLProvider) ProcessAssertion(samlResponse string, clientIP, userAgent string) (*JWTClaims, bool, error)
ProcessAssertion processes SAML assertion with MFA support (Story 2.4)
func (*SAMLProvider) ValidateAssertion ¶
func (sp *SAMLProvider) ValidateAssertion(samlResponse string) (*SAMLAssertion, error)
ValidateAssertion validates a SAML assertion (placeholder for actual validation)
type SAMLUserMapper ¶
type SAMLUserMapper struct {
EmailAttribute string `json:"email_attribute"`
NameAttribute string `json:"name_attribute"`
GroupsAttribute string `json:"groups_attribute"`
AttributeMapping map[string]string `json:"attribute_mapping"`
DefaultRole string `json:"default_role"`
}
SAMLUserMapper maps SAML assertions to internal user model
func (*SAMLUserMapper) MapSAMLUser ¶
func (mapper *SAMLUserMapper) MapSAMLUser(assertion *SAMLAssertion) map[string]interface{}
MapSAMLUser maps a SAML assertion to user attributes
type SIEMConfig ¶
type SIEMConfig struct {
Provider SIEMProvider `json:"provider"`
Endpoint string `json:"endpoint"`
APIKey string `json:"api_key,omitempty"`
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
Index string `json:"index,omitempty"`
CustomHeaders map[string]string `json:"custom_headers,omitempty"`
TLSConfig *tls.Config `json:"-"`
BatchSize int `json:"batch_size"`
FlushInterval time.Duration `json:"flush_interval"`
RetryAttempts int `json:"retry_attempts"`
TimeoutSeconds int `json:"timeout_seconds"`
}
SIEM Configuration
type SIEMEvent ¶
type SIEMEvent struct {
Timestamp time.Time `json:"timestamp"`
EventID string `json:"event_id"`
Source string `json:"source"`
EventType string `json:"event_type"`
Severity string `json:"severity"`
UserID string `json:"user_id,omitempty"`
SessionID string `json:"session_id,omitempty"`
IPAddress string `json:"ip_address,omitempty"`
UserAgent string `json:"user_agent,omitempty"`
Description string `json:"description"`
Metadata map[string]interface{} `json:"metadata,omitempty"`
ComplianceContext *ComplianceContext `json:"compliance_context,omitempty"`
}
SIEM Event Formats
type SIEMIntegrationManager ¶
type SIEMIntegrationManager struct {
// contains filtered or unexported fields
}
SIEM Integration Manager
func NewSIEMIntegrationManager ¶
func NewSIEMIntegrationManager(siemConfig SIEMConfig, complianceConfig ComplianceConfig, redisClient redis.Cmdable) *SIEMIntegrationManager
Create new SIEM Integration Manager
func (*SIEMIntegrationManager) Close ¶
func (s *SIEMIntegrationManager) Close() error
Close SIEM Integration
func (*SIEMIntegrationManager) GenerateComplianceReport ¶
func (s *SIEMIntegrationManager) GenerateComplianceReport(framework ComplianceFramework, period string) (*ComplianceReport, error)
Generate Compliance Report
func (*SIEMIntegrationManager) SendAuthEvent ¶
func (s *SIEMIntegrationManager) SendAuthEvent(entry AuthAuditEntry) error
Send Authentication Event to SIEM
func (*SIEMIntegrationManager) SendSecurityEvent ¶
func (s *SIEMIntegrationManager) SendSecurityEvent(eventType, description, userID, sessionID, ipAddress string, severity AuditSeverity, metadata map[string]string) error
Send Security Event to SIEM
type SIEMProvider ¶
type SIEMProvider string
SIEM Integration Types
const ( SIEMSplunk SIEMProvider = "splunk" SIEMElastic SIEMProvider = "elastic" SIEMArcSight SIEMProvider = "arcsight" SIEMQRadar SIEMProvider = "qradar" SIEMSentinel SIEMProvider = "sentinel" )
type SMSConfig ¶
type SMSConfig struct {
Provider string `json:"provider"` // "twilio", "aws_sns", "azure", etc.
Settings map[string]string `json:"settings"`
MessageTemplate string `json:"message_template"`
CodeLength int `json:"code_length"`
CodeExpiry time.Duration `json:"code_expiry"`
}
SMSConfig holds SMS MFA configuration
type SecurityConfig ¶
type SecurityConfig struct {
// Rate limiting configuration
RateLimitRequests int `json:"rate_limit_requests"` // Max requests per window
RateLimitWindow time.Duration `json:"rate_limit_window"` // Rate limit time window
// Brute force protection
MaxFailedAttempts int `json:"max_failed_attempts"` // Max failed login attempts
LockoutDuration time.Duration `json:"lockout_duration"` // Account lockout duration
// JWT token rotation
TokenRotationEnabled bool `json:"token_rotation_enabled"` // Enable automatic token rotation
RotationInterval time.Duration `json:"rotation_interval"` // How often to rotate tokens
// Redis configuration for distributed security features
RedisClient redis.UniversalClient `json:"-"` // Redis client for distributed storage
}
SecurityConfig holds configuration for security middleware
type SecurityContext ¶
type SecurityContext struct {
SessionID string
UserID string
DeviceFingerprint string
IPAddress string
UserAgent string
CreatedAt time.Time
LastActivity time.Time
LoginAttempts int
SuspiciousFlags []string
Locked bool
LockReason string
LockExpiry time.Time
}
SecurityContext represents security context for a session
type SecurityMiddleware ¶
type SecurityMiddleware struct {
// contains filtered or unexported fields
}
SecurityMiddleware provides enhanced security features
func NewSecurityMiddleware ¶
func NewSecurityMiddleware(config SecurityConfig, jwtService JWTServiceInterface) *SecurityMiddleware
NewSecurityMiddleware creates a new security middleware instance
func (*SecurityMiddleware) BruteForceProtectionMiddleware ¶
func (s *SecurityMiddleware) BruteForceProtectionMiddleware() fiber.Handler
BruteForceProtectionMiddleware returns a Fiber middleware for brute force protection
func (*SecurityMiddleware) Cleanup ¶
func (s *SecurityMiddleware) Cleanup()
Cleanup performs cleanup of expired entries and resources
func (*SecurityMiddleware) GetSecurityMetrics ¶
func (s *SecurityMiddleware) GetSecurityMetrics() map[string]interface{}
GetSecurityMetrics returns current security metrics
func (*SecurityMiddleware) RateLimitMiddleware ¶
func (s *SecurityMiddleware) RateLimitMiddleware() fiber.Handler
RateLimitMiddleware returns a Fiber middleware for rate limiting
func (*SecurityMiddleware) TokenRotationMiddleware ¶
func (s *SecurityMiddleware) TokenRotationMiddleware() fiber.Handler
TokenRotationMiddleware adds token rotation headers
type SessionActivityReport ¶
type SessionActivityReport struct {
Period string `json:"period"`
TotalSessions int64 `json:"total_sessions"`
ActiveSessions int64 `json:"active_sessions"`
ExpiredSessions int64 `json:"expired_sessions"`
TerminatedSessions int64 `json:"terminated_sessions"`
SessionsByType map[string]int64 `json:"sessions_by_type"`
SessionsByUser map[string]int64 `json:"sessions_by_user"`
AverageSessionTime time.Duration `json:"average_session_time"`
SecurityEvents int64 `json:"security_events"`
ComplianceIssues int64 `json:"compliance_issues"`
TopIPAddresses []IPSessionCount `json:"top_ip_addresses"`
}
SessionActivityReport represents session activity metrics
type SessionAdminConfig ¶
type SessionAdminConfig struct {
JWTService JWTServiceInterface
AuditLogger *AuthAuditLogger
AllowedRoles []string // Roles that can access admin endpoints
}
SessionAdminConfig holds configuration for session administration
type SessionCookieConfig ¶
type SessionCookieConfig struct {
Name string
Domain string
Path string
MaxAge int
Secure bool
HttpOnly bool
SameSite http.SameSite
}
SessionCookieConfig represents secure cookie configuration
type SessionFilters ¶
type SessionFilters struct {
UserID string `json:"user_id,omitempty"`
Active *bool `json:"active,omitempty"`
SessionType string `json:"session_type,omitempty"`
IPAddress string `json:"ip_address,omitempty"`
Since string `json:"since,omitempty"`
Until string `json:"until,omitempty"`
}
SessionFilters represents filters for session queries
type SessionInfo ¶
type SessionInfo struct {
SessionID string `json:"session_id"`
UserID string `json:"user_id"`
Email string `json:"email"`
Name string `json:"name"`
KubernetesUser string `json:"kubernetes_user"`
KubernetesGroups []string `json:"kubernetes_groups"`
CreatedAt time.Time `json:"created_at"`
LastActivity time.Time `json:"last_activity"`
ExpiresAt time.Time `json:"expires_at"`
RefreshExpiresAt time.Time `json:"refresh_expires_at"`
Active bool `json:"active"`
IPAddress string `json:"ip_address,omitempty"`
UserAgent string `json:"user_agent,omitempty"`
DeviceFingerprint string `json:"device_fingerprint,omitempty"`
SessionType string `json:"session_type"` // "web", "api", "mobile"
IdleTimeout time.Duration `json:"idle_timeout"`
AbsoluteTimeout time.Duration `json:"absolute_timeout"`
TerminationReason string `json:"termination_reason,omitempty"`
ConcurrentSessions int `json:"concurrent_sessions"`
// MFA fields (Story 2.4)
MFACompleted bool `json:"mfa_completed"`
MFAMethod string `json:"mfa_method,omitempty"`
MFATimestamp time.Time `json:"mfa_timestamp"`
MFAExpiresAt time.Time `json:"mfa_expires_at"`
RequiresMFAStepUp bool `json:"requires_mfa_stepup"`
}
SessionInfo represents comprehensive session information
type SessionListResponse ¶
type SessionListResponse struct {
Sessions []*SessionInfo `json:"sessions"`
Total int `json:"total"`
Page int `json:"page"`
PageSize int `json:"page_size"`
HasMore bool `json:"has_more"`
Filters SessionFilters `json:"filters_applied,omitempty"`
}
SessionListResponse represents the response for listing sessions
type SessionMetrics ¶
type SessionMetrics struct {
TotalActiveSessions int64 `json:"total_active_sessions"`
TotalExpiredSessions int64 `json:"total_expired_sessions"`
TotalTerminatedSessions int64 `json:"total_terminated_sessions"`
AverageSessionDuration time.Duration `json:"average_session_duration"`
ActiveSessionsByType map[string]int64 `json:"active_sessions_by_type"`
SessionTimeouts int64 `json:"session_timeouts"`
ConcurrentSessionLimits int64 `json:"concurrent_session_limits"`
}
SessionMetrics provides session-related metrics
type SessionSecurityConfig ¶
type SessionSecurityConfig struct {
JWTService JWTServiceInterface
AuditLogger *AuthAuditLogger
ConcurrentLimit int // Max concurrent sessions per user (default: 5)
EnableFingerprinting bool // Enable device fingerprinting (default: true)
EnableIPBinding bool // Bind sessions to IP addresses (default: true)
EnableUserAgentCheck bool // Check user agent consistency (default: true)
SuspiciousThreshold int // Threshold for suspicious activity (default: 3)
LockoutDuration time.Duration // Account lockout duration (default: 30 minutes)
}
SessionSecurityConfig holds configuration for session security
type SessionSecurityManager ¶
type SessionSecurityManager struct {
// contains filtered or unexported fields
}
SessionSecurityManager handles session security hardening and protection
func NewSessionSecurityManager ¶
func NewSessionSecurityManager(config SessionSecurityConfig) (*SessionSecurityManager, error)
NewSessionSecurityManager creates a new session security manager
func (*SessionSecurityManager) CleanupExpiredSessions ¶
func (ssm *SessionSecurityManager) CleanupExpiredSessions()
CleanupExpiredSessions removes expired and inactive sessions
func (*SessionSecurityManager) CreateSessionWithSecurity ¶
func (ssm *SessionSecurityManager) CreateSessionWithSecurity(ctx context.Context, userID, email, name string, r *http.Request) (*TokenPair, error)
CreateSessionWithSecurity creates a new session with security hardening
func (*SessionSecurityManager) GetSecurityMetrics ¶
func (ssm *SessionSecurityManager) GetSecurityMetrics() map[string]interface{}
GetSecurityMetrics returns security-related metrics
func (*SessionSecurityManager) SecureSessionMiddleware ¶
func (ssm *SessionSecurityManager) SecureSessionMiddleware(next http.Handler) http.Handler
SecureSessionMiddleware creates middleware for secure session handling
type SessionStatus ¶
type SessionStatus string
SessionStatus represents the status of a resolution session
const ( SessionStatusActive SessionStatus = "active" SessionStatusPending SessionStatus = "pending" SessionStatusCompleted SessionStatus = "completed" SessionStatusFailed SessionStatus = "failed" SessionStatusExpired SessionStatus = "expired" SessionStatusCancelled SessionStatus = "cancelled" SessionStatusAwaitingApproval SessionStatus = "awaiting_approval" )
type SessionTerminationRequest ¶
type SessionTerminationRequest struct {
SessionIDs []string `json:"session_ids"`
UserIDs []string `json:"user_ids,omitempty"`
Reason string `json:"reason"`
Force bool `json:"force"` // Force termination even for active operations
}
SessionTerminationRequest represents a request to terminate sessions
type SessionTerminationResponse ¶
type SessionTerminationResponse struct {
TerminatedSessions []string `json:"terminated_sessions"`
FailedSessions []string `json:"failed_sessions"`
Errors []string `json:"errors,omitempty"`
TotalTerminated int `json:"total_terminated"`
}
SessionTerminationResponse represents the response for session termination
type SessionTimeoutPolicy ¶
type SessionTimeoutPolicy struct {
IdleTimeout time.Duration `json:"idle_timeout"` // Default 4 hours
AbsoluteTimeout time.Duration `json:"absolute_timeout"` // Default 24 hours
EnableIdleCheck bool `json:"enable_idle_check"`
}
SessionTimeoutPolicy defines timeout policies for sessions
type StepOption ¶
type StepOption struct {
ID string `json:"id"`
Label string `json:"label"`
Description string `json:"description"`
Value interface{} `json:"value"`
Metadata map[string]interface{} `json:"metadata,omitempty"`
Recommended bool `json:"recommended"`
}
StepOption represents an option in an interactive step
type StepStatus ¶
type StepStatus string
StepStatus represents the status of a workflow step
const ( StepStatusPending StepStatus = "pending" StepStatusActive StepStatus = "active" StepStatusCompleted StepStatus = "completed" StepStatusSkipped StepStatus = "skipped" StepStatusFailed StepStatus = "failed" )
type SuspiciousTracker ¶
type SuspiciousTracker struct {
UserID string
FailedLogins int
LastFailedLogin time.Time
SuspiciousIPs map[string]int
DeviceChanges int
ConcurrentSessions int
RiskScore int
AlertTriggered bool
}
SuspiciousTracker tracks suspicious activities for a user
type TOTPConfig ¶
type TOTPConfig struct {
Issuer string `json:"issuer"`
AccountName string `json:"account_name"`
SecretLength int `json:"secret_length"`
Period uint `json:"period"`
Skew uint `json:"skew"`
Digits int `json:"digits"`
}
TOTPConfig holds TOTP-specific configuration
type TimeWindow ¶
type TimeWindow struct {
StartHour int `json:"start_hour"` // 0-23
EndHour int `json:"end_hour"` // 0-23
DaysOfWeek []string `json:"days_of_week"` // "monday", "tuesday", etc.
TimeZone string `json:"timezone"` // IANA timezone
}
TimeWindow defines time-based restrictions
type TokenPair ¶
type TokenPair struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
ExpiresAt time.Time `json:"expires_at"`
TokenType string `json:"token_type"`
}
TokenPair represents access and refresh tokens
type TokenRotator ¶
type TokenRotator struct {
// contains filtered or unexported fields
}
TokenRotator manages automatic JWT token rotation
type TokenValidationError ¶
TokenValidationError represents JWT validation errors
func (*TokenValidationError) Error ¶
func (e *TokenValidationError) Error() string
type TroubleshootingStep ¶
type TroubleshootingStep struct {
StepNumber int `json:"step_number"`
Title string `json:"title"`
Description string `json:"description"`
Commands []string `json:"commands"`
ExpectedResult string `json:"expected_result"`
NextSteps []string `json:"next_steps"`
Difficulty string `json:"difficulty"` // "easy", "medium", "hard"
}
TroubleshootingStep represents a troubleshooting step for administrators
type UserComplianceStats ¶
type UserComplianceStats struct {
UserID string `json:"user_id"`
Email string `json:"email"`
TotalAttempts int64 `json:"total_attempts"`
MFARequiredAttempts int64 `json:"mfa_required_attempts"`
MFAFailedAttempts int64 `json:"mfa_failed_attempts"`
ComplianceRate float64 `json:"compliance_rate"`
LastViolation time.Time `json:"last_violation"`
}
UserComplianceStats holds compliance statistics for a user
type UserMFAStatus ¶
type UserMFAStatus struct {
UserID string `json:"user_id"`
ActiveSessions int `json:"active_sessions"`
MFAEnabledSessions int `json:"mfa_enabled_sessions"`
LastMFACompletion time.Time `json:"last_mfa_completion"`
ApplicablePolicies []string `json:"applicable_policies"`
ComplianceStatus string `json:"compliance_status"` // "compliant", "non_compliant", "partially_compliant"
EmergencyAccessUsed bool `json:"emergency_access_used"`
}
UserMFAStatus represents comprehensive MFA status for a user
type UserPermissionInfo ¶
type UserPermissionInfo struct {
User string `json:"user"`
Groups []string `json:"groups"`
ServiceAccount string `json:"service_account,omitempty"`
ClusterRoleBindings []string `json:"cluster_role_bindings,omitempty"`
RoleBindings []string `json:"role_bindings,omitempty"`
}
UserPermissionInfo contains user permission details
type ValidationMetrics ¶
type ValidationMetrics struct {
CacheHits int64 `json:"cache_hits"`
CacheMisses int64 `json:"cache_misses"`
ValidationCount int64 `json:"validation_count"`
AverageLatency time.Duration `json:"average_latency"`
MaxLatency time.Duration `json:"max_latency"`
MinLatency time.Duration `json:"min_latency"`
TotalLatency time.Duration `json:"total_latency"`
K8sAPICallCount int64 `json:"k8s_api_call_count"`
FailureCount int64 `json:"failure_count"`
LastValidationTime time.Time `json:"last_validation_time"`
// contains filtered or unexported fields
}
ValidationMetrics tracks performance metrics for namespace validation
type ValidationRequest ¶
type ValidationRequest struct {
KubernetesUser string `json:"kubernetes_user"`
KubernetesGroups []string `json:"kubernetes_groups"`
RequestedNS []string `json:"requested_namespaces,omitempty"` // If empty, validate all
}
ValidationRequest represents a request to validate namespace access
Source Files
¶
- audit_middleware.go
- auth.go
- auth_audit.go
- circuit_breaker.go
- compliance_integration.go
- enhanced_rbac_context.go
- interactive_permission_resolver.go
- jwt.go
- mfa_handler.go
- mfa_integration.go
- mfa_policy.go
- mfa_session_manager.go
- namespace_validator.go
- rbac_advisor.go
- rbac_validator.go
- saml.go
- security.go
- session_admin.go
- session_security.go