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) 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) 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