Documentation
¶
Overview ¶
Package security provides AWS Artifact compliance validation and SCP enforcement
Package security provides integrated security management for Prism ¶
Package security provides configuration validation for production deployments
Index ¶
- func DetectUserExternalIP() (string, error)
- func GetWebInterfaceBindIP() string
- type AWSComplianceStatus
- type AWSComplianceValidator
- type AWSServiceCompliance
- type AccessConfig
- type AccessInfo
- type AccessManager
- type AccessStrategy
- type ComplianceFramework
- type ComplianceGap
- type ComplianceRecommendation
- type EC2ClientInterface
- type SecurityConfig
- type SecurityConfigValidator
- type SecurityGroupUpdater
- type SecurityLevel
- type SecurityManager
- func (m *SecurityManager) GetSecurityStatus() (*SecurityStatus, error)
- func (m *SecurityManager) LogAccessAttempt(deviceID string, success bool, reason string, details map[string]interface{})
- func (m *SecurityManager) LogDeviceRegistration(deviceID, invitationToken string, success bool, errorCode string, ...)
- func (m *SecurityManager) LogSecurityEvent(eventType string, success bool, deviceID string, ...)
- func (m *SecurityManager) LogTamperAttempt(deviceID, filePath, expectedHash, actualHash string)
- func (m *SecurityManager) PerformHealthCheck() error
- func (m *SecurityManager) RegisterDevice(invitationToken, deviceID string) error
- func (m *SecurityManager) Start() error
- func (m *SecurityManager) Stop() error
- func (m *SecurityManager) UpdateConfig(newConfig SecurityConfig) error
- func (m *SecurityManager) ValidateDeviceBinding(deviceID string, expectedFingerprint map[string]interface{}) error
- type SecurityStatus
- type SecurityValidationResult
- type ValidationIssue
- type ValidationRecommendation
- type ValidationResult
- type ValidationWarning
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DetectUserExternalIP ¶
DetectUserExternalIP detects the user's current external IP address for security group rules
func GetWebInterfaceBindIP ¶
func GetWebInterfaceBindIP() string
GetWebInterfaceBindIP returns the appropriate bind IP for web interfaces based on security configuration
Types ¶
type AWSComplianceStatus ¶
type AWSComplianceStatus struct {
Framework ComplianceFramework `json:"framework"`
AWSCompliant bool `json:"aws_compliant"`
ArtifactReportID string `json:"artifact_report_id,omitempty"`
LastUpdated time.Time `json:"last_updated"`
ComplianceScope []string `json:"compliance_scope"`
RequiredSCPs []string `json:"required_scps"`
ImplementedSCPs []string `json:"implemented_scps"`
GapAnalysis []ComplianceGap `json:"gap_analysis"`
AWSServices []AWSServiceCompliance `json:"aws_services"`
RecommendedActions []ComplianceRecommendation `json:"recommended_actions"`
}
AWSComplianceStatus represents the compliance status against AWS Artifact reports
type AWSComplianceValidator ¶
type AWSComplianceValidator struct {
// contains filtered or unexported fields
}
AWSComplianceValidator validates Prism against AWS Artifact compliance reports and SCPs
func NewAWSComplianceValidator ¶
func NewAWSComplianceValidator(awsProfile, region string) (*AWSComplianceValidator, error)
NewAWSComplianceValidator creates a new AWS compliance validator
func (*AWSComplianceValidator) GetSupportedFrameworks ¶
func (v *AWSComplianceValidator) GetSupportedFrameworks() []ComplianceFramework
GetSupportedFrameworks returns list of supported compliance frameworks
func (*AWSComplianceValidator) ValidateCompliance ¶
func (v *AWSComplianceValidator) ValidateCompliance(ctx context.Context, framework ComplianceFramework) (*AWSComplianceStatus, error)
ValidateCompliance validates Prism against specified compliance framework
type AWSServiceCompliance ¶
type AWSServiceCompliance struct {
ServiceName string `json:"service_name"`
ComplianceStatus string `json:"compliance_status"`
CertifiedRegions []string `json:"certified_regions"`
RequiredFeatures []string `json:"required_features"`
ConfigurationNeeded map[string]interface{} `json:"configuration_needed"`
}
AWSServiceCompliance represents compliance status of AWS services used by Prism
type AccessConfig ¶
type AccessConfig struct {
Strategy AccessStrategy
UserIP string
SubnetCIDR string
BindIP string
Message string
}
AccessConfig contains the determined access configuration
func DetermineAccessStrategy ¶
func DetermineAccessStrategy() *AccessConfig
DetermineAccessStrategy determines the best access strategy for web interfaces
type AccessInfo ¶
type AccessInfo struct {
Strategy AccessStrategy
UserIP string
SubnetCIDR string
BindIP string
Message string
Instructions []string
}
AccessInfo contains information about current access configuration
func GetAccessInfo ¶
func GetAccessInfo() *AccessInfo
GetAccessInfo returns current access configuration and instructions
type AccessManager ¶
type AccessManager struct {
// contains filtered or unexported fields
}
AccessManager provides high-level access management functionality
func NewAccessManager ¶
func NewAccessManager(ec2Client EC2ClientInterface, securityGroupID string) *AccessManager
NewAccessManager creates a new access manager
func (*AccessManager) RefreshAccess ¶
func (am *AccessManager) RefreshAccess() error
RefreshAccess updates security group rules for current IP
func (*AccessManager) WatchIPChanges ¶
func (am *AccessManager) WatchIPChanges(interval time.Duration, stopChan <-chan struct{})
WatchIPChanges monitors for IP changes and updates access rules
type AccessStrategy ¶
type AccessStrategy int
AccessStrategy defines how web interfaces should be accessed
const ( AccessDirect AccessStrategy = iota // Direct access from user IP AccessSubnet // Access from user's subnet (/24) AccessTunneled // SSH tunneling required )
type ComplianceFramework ¶
type ComplianceFramework string
ComplianceFramework represents supported compliance frameworks
const ( // Primary research compliance frameworks ComplianceNIST800171 ComplianceFramework = "NIST-800-171" ComplianceNIST80053 ComplianceFramework = "NIST-800-53" ComplianceSOC2 ComplianceFramework = "SOC-2" ComplianceHIPAA ComplianceFramework = "HIPAA" ComplianceGDPR ComplianceFramework = "GDPR" ComplianceFedRAMP ComplianceFramework = "FedRAMP" ComplianceISO27001 ComplianceFramework = "ISO-27001" CompliancePCIDSS ComplianceFramework = "PCI-DSS" // Export control and defense frameworks ComplianceITAR ComplianceFramework = "ITAR" ComplianceEAR ComplianceFramework = "EAR" ComplianceCSA ComplianceFramework = "CSA-STAR" ComplianceFISMA ComplianceFramework = "FISMA" ComplianceDFARS ComplianceFramework = "DFARS" ComplianceCMMC ComplianceFramework = "CMMC" ComplianceCMMCL1 ComplianceFramework = "CMMC-L1" ComplianceCMMCL2 ComplianceFramework = "CMMC-L2" ComplianceCMMCL3 ComplianceFramework = "CMMC-L3" ComplianceENISA ComplianceFramework = "ENISA" ComplianceC5 ComplianceFramework = "C5" ComplianceFERPA ComplianceFramework = "FERPA" )
type ComplianceGap ¶
type ComplianceGap struct {
Control string `json:"control"`
AWSImplementation string `json:"aws_implementation"`
PrismGap string `json:"cloudworkstation_gap"`
Severity string `json:"severity"`
Remediation string `json:"remediation"`
}
ComplianceGap represents gaps between Prism and AWS compliance posture
type ComplianceRecommendation ¶
type ComplianceRecommendation struct {
Priority string `json:"priority"`
Action string `json:"action"`
AWSService string `json:"aws_service,omitempty"`
SCPRequired string `json:"scp_required,omitempty"`
Impact string `json:"impact"`
Implementation string `json:"implementation"`
}
ComplianceRecommendation provides specific actions to improve compliance alignment
type EC2ClientInterface ¶
type EC2ClientInterface interface {
AuthorizeSecurityGroupIngress(ctx context.Context, params *ec2.AuthorizeSecurityGroupIngressInput, optFns ...func(*ec2.Options)) (*ec2.AuthorizeSecurityGroupIngressOutput, error)
RevokeSecurityGroupIngress(ctx context.Context, params *ec2.RevokeSecurityGroupIngressInput, optFns ...func(*ec2.Options)) (*ec2.RevokeSecurityGroupIngressOutput, error)
}
EC2ClientInterface defines the EC2 operations needed for security group updates
type SecurityConfig ¶
type SecurityConfig struct {
// Audit logging configuration
AuditLogEnabled bool `json:"audit_log_enabled"`
LogRetentionDays int `json:"log_retention_days"`
// Monitoring configuration
MonitoringEnabled bool `json:"monitoring_enabled"`
MonitorInterval time.Duration `json:"monitor_interval"`
AlertThreshold string `json:"alert_threshold"` // LOW, MEDIUM, HIGH, CRITICAL
// Registry security configuration
RegistrySecurityEnabled bool `json:"registry_security_enabled"`
RegistryURL string `json:"registry_url"`
// Correlation analysis configuration
CorrelationEnabled bool `json:"correlation_enabled"`
AnalysisInterval time.Duration `json:"analysis_interval"`
// Health check configuration
HealthCheckEnabled bool `json:"health_check_enabled"`
HealthCheckInterval time.Duration `json:"health_check_interval"`
}
SecurityConfig provides configuration for the security manager
func GetDefaultSecurityConfig ¶
func GetDefaultSecurityConfig() SecurityConfig
GetDefaultSecurityConfig returns default security configuration
type SecurityConfigValidator ¶
type SecurityConfigValidator struct {
// contains filtered or unexported fields
}
SecurityConfigValidator validates security configurations for production deployment
func NewSecurityConfigValidator ¶
func NewSecurityConfigValidator(config SecurityConfig) *SecurityConfigValidator
NewSecurityConfigValidator creates a new security configuration validator
func (*SecurityConfigValidator) ValidateSecurityConfiguration ¶
func (v *SecurityConfigValidator) ValidateSecurityConfiguration() (*SecurityValidationResult, error)
ValidateSecurityConfiguration performs comprehensive security configuration validation
type SecurityGroupUpdater ¶
type SecurityGroupUpdater struct {
// contains filtered or unexported fields
}
SecurityGroupUpdater handles dynamic security group updates
func NewSecurityGroupUpdater ¶
func NewSecurityGroupUpdater(ec2Client EC2ClientInterface, groupID string) *SecurityGroupUpdater
NewSecurityGroupUpdater creates a new security group updater
func (*SecurityGroupUpdater) UpdateAccessRules ¶
func (sgu *SecurityGroupUpdater) UpdateAccessRules(ctx context.Context) error
UpdateAccessRules updates security group rules when IP changes
type SecurityLevel ¶
type SecurityLevel string
SecurityLevel represents the overall security level
const ( SecurityLevelBasic SecurityLevel = "BASIC" SecurityLevelStandard SecurityLevel = "STANDARD" SecurityLevelHardened SecurityLevel = "HARDENED" SecurityLevelEnterprise SecurityLevel = "ENTERPRISE" )
type SecurityManager ¶
type SecurityManager struct {
// contains filtered or unexported fields
}
SecurityManager coordinates all security components for Prism
func NewSecurityManager ¶
func NewSecurityManager(config SecurityConfig) (*SecurityManager, error)
NewSecurityManager creates and initializes a new security manager
func (*SecurityManager) GetSecurityStatus ¶
func (m *SecurityManager) GetSecurityStatus() (*SecurityStatus, error)
GetSecurityStatus returns comprehensive security status
func (*SecurityManager) LogAccessAttempt ¶
func (m *SecurityManager) LogAccessAttempt(deviceID string, success bool, reason string, details map[string]interface{})
LogAccessAttempt logs access attempt events
func (*SecurityManager) LogDeviceRegistration ¶
func (m *SecurityManager) LogDeviceRegistration(deviceID, invitationToken string, success bool, errorCode string, details map[string]interface{})
LogDeviceRegistration logs device registration events
func (*SecurityManager) LogSecurityEvent ¶
func (m *SecurityManager) LogSecurityEvent(eventType string, success bool, deviceID string, details map[string]interface{})
LogSecurityEvent logs a security event through the audit logger
func (*SecurityManager) LogTamperAttempt ¶
func (m *SecurityManager) LogTamperAttempt(deviceID, filePath, expectedHash, actualHash string)
LogTamperAttempt logs tamper detection events
func (*SecurityManager) PerformHealthCheck ¶
func (m *SecurityManager) PerformHealthCheck() error
PerformHealthCheck performs comprehensive security health check
func (*SecurityManager) RegisterDevice ¶
func (m *SecurityManager) RegisterDevice(invitationToken, deviceID string) error
RegisterDevice securely registers a device with the registry
func (*SecurityManager) Start ¶
func (m *SecurityManager) Start() error
Start starts the security manager and all enabled components
func (*SecurityManager) Stop ¶
func (m *SecurityManager) Stop() error
Stop gracefully stops the security manager and all components
func (*SecurityManager) UpdateConfig ¶ added in v0.7.7
func (m *SecurityManager) UpdateConfig(newConfig SecurityConfig) error
UpdateConfig applies an updated security configuration at runtime. Fields that affect background goroutine scheduling (MonitoringEnabled, CorrelationEnabled) are stored and will take full effect on the next daemon restart; all other fields (AlertThreshold, LogRetentionDays, etc.) take effect immediately.
func (*SecurityManager) ValidateDeviceBinding ¶
func (m *SecurityManager) ValidateDeviceBinding(deviceID string, expectedFingerprint map[string]interface{}) error
ValidateDeviceBinding validates device binding for security
type SecurityStatus ¶
type SecurityStatus struct {
Enabled bool `json:"enabled"`
Running bool `json:"running"`
LastHealthCheck time.Time `json:"last_health_check"`
Dashboard *security.SecurityDashboard `json:"dashboard,omitempty"`
Correlations []security.SecurityCorrelation `json:"recent_correlations,omitempty"`
SystemHealth *security.SystemHealthStatus `json:"system_health,omitempty"`
KeychainInfo *security.KeychainInfo `json:"keychain_info,omitempty"`
Configuration SecurityConfig `json:"configuration"`
}
SecurityStatus provides comprehensive security status information
type SecurityValidationResult ¶
type SecurityValidationResult struct {
Valid bool `json:"valid"`
Score int `json:"score"` // 0-100 security score
Level SecurityLevel `json:"level"`
Issues []ValidationIssue `json:"issues"`
Warnings []ValidationWarning `json:"warnings"`
Recommendations []ValidationRecommendation `json:"recommendations"`
Summary string `json:"summary"`
}
SecurityValidationResult represents the result of security configuration validation
func ValidateCurrentConfiguration ¶
func ValidateCurrentConfiguration() (*SecurityValidationResult, error)
ValidateCurrentConfiguration validates the current security configuration
type ValidationIssue ¶
type ValidationIssue struct {
Component string `json:"component"`
Issue string `json:"issue"`
Severity string `json:"severity"`
Impact string `json:"impact"`
Resolution string `json:"resolution"`
}
ValidationIssue represents a security configuration issue that must be fixed
type ValidationRecommendation ¶
type ValidationRecommendation struct {
Component string `json:"component"`
Recommendation string `json:"recommendation"`
Priority string `json:"priority"`
Benefit string `json:"benefit"`
}
ValidationRecommendation represents a security improvement recommendation
type ValidationResult ¶
type ValidationResult struct {
Strategy AccessStrategy
DirectAccessAvailable bool
AccessibleIPs map[string]bool
PortsChecked []int
Message string
Timestamp time.Time
}
ValidationResult contains results of web access validation
func ValidateWebAccess ¶
func ValidateWebAccess(instanceIP string, ports []int) *ValidationResult
ValidateWebAccess tests if web interfaces are accessible
type ValidationWarning ¶
type ValidationWarning struct {
Component string `json:"component"`
Warning string `json:"warning"`
Recommendation string `json:"recommendation"`
}
ValidationWarning represents a security configuration warning