12#include <unordered_map>
109 std::optional<security_credentials>
get_credentials(
const std::string& connection_id)
const;
121 std::string
encrypt_data(
const std::string& data)
const;
122 std::string
decrypt_data(
const std::string& encrypted_data)
const;
144 bool configure_tls(
const std::string& cert_file,
const std::string& key_file,
const std::string& ca_file);
240 const std::string& operation)
const;
244 std::string
create_session(
const std::string& user_id,
const std::string& client_ip);
251 std::unordered_map<std::string, role>
roles_;
252 std::unordered_map<std::string, std::vector<std::string>>
user_roles_;
283 explicit audit_logger(
const std::string& log_file_path);
287 const std::string& operation,
const std::string& table,
288 const std::string& query_hash,
bool success,
289 const std::string& error_message =
"");
292 bool success,
const std::string& method);
295 const std::string& table,
const std::string& reason);
298 std::vector<audit_log_entry>
get_audit_logs(std::chrono::hours window)
const;
300 std::chrono::hours window)
const;
372 const std::string& description,
const std::string& user_id =
"");
404 std::string
encrypt_field_data(
const std::string& data,
const std::string& field_name)
const;
405 std::string
decrypt_field_data(
const std::string& encrypted_data,
const std::string& field_name)
const;
418 std::string
derive_key(
const std::string& field_name)
const;
432 return (
static_cast<int>(permissions) &
static_cast<int>(check)) != 0;
Role-based access control (RBAC) system.
bool terminate_session(const std::string &session_id)
bool check_table_access(const std::string &user_id, const std::string &table) const
access_control()=default
Default constructor - used by database_context.
bool create_role(const role &new_role)
std::unordered_map< std::string, role > roles_
std::string create_session(const std::string &user_id, const std::string &client_ip)
bool revoke_role_from_user(const std::string &user_id, const std::string &role_name)
std::vector< role > get_user_roles(const std::string &user_id) const
void cleanup_expired_sessions()
std::unordered_map< std::string, std::vector< std::string > > user_roles_
bool check_permission(const std::string &user_id, const std::string &table, const std::string &operation) const
bool assign_role_to_user(const std::string &user_id, const std::string &role_name)
bool validate_session(const std::string &session_id) const
std::unordered_map< std::string, user_session > active_sessions_
Security audit logging system.
void log_database_access(const std::string &user_id, const std::string &session_id, const std::string &operation, const std::string &table, const std::string &query_hash, bool success, const std::string &error_message="")
std::string generate_security_report(std::chrono::hours window) const
std::vector< audit_log_entry > get_user_audit_logs(const std::string &user_id, std::chrono::hours window) const
void set_log_retention_period(std::chrono::hours retention)
audit_logger()=default
Default constructor - used by database_context.
std::vector< audit_log_entry > audit_logs_
std::vector< std::string > detect_suspicious_activity(std::chrono::hours window) const
std::chrono::hours retention_period_
void persist_entry(const audit_log_entry &entry)
void log_authentication_event(const std::string &user_id, const std::string &client_ip, bool success, const std::string &method)
bool export_logs_to_file(const std::string &filename) const
void log_authorization_failure(const std::string &user_id, const std::string &operation, const std::string &table, const std::string &reason)
std::vector< audit_log_entry > get_audit_logs(std::chrono::hours window) const
std::string log_file_path_
Handles secure database connections.
security_credentials credentials_
std::string decrypt_connection_string(const std::string &encrypted_string) const
std::string encrypt_connection_string(const std::string &connection_string) const
bool set_cipher_suite(const std::string &ciphers)
connection_security(const security_credentials &credentials)
bool establish_secure_connection(const std::string &host, int port)
bool verify_server_certificate(const std::string &certificate) const
bool configure_tls(const std::string &cert_file, const std::string &key_file, const std::string &ca_file)
bool perform_mutual_authentication()
Manages encrypted credential storage and retrieval.
bool rotate_encryption_keys()
std::optional< security_credentials > get_credentials(const std::string &connection_id) const
std::string encrypt_data(const std::string &data) const
void set_master_key(const std::string &key)
bool verify_password(const std::string &password, const std::string &hash) const
std::string hash_password(const std::string &password) const
bool remove_credentials(const std::string &connection_id)
std::unordered_map< std::string, std::string > encrypted_credentials_
bool store_credentials(const std::string &connection_id, const security_credentials &credentials)
std::string decrypt_data(const std::string &encrypted_data) const
std::mutex credentials_mutex_
credential_manager()=default
Default constructor - used by database_context.
Data encryption and key management.
std::unordered_map< std::string, std::string > field_keys_
bool configure_encrypted_column(const std::string &table, const std::string &column, encryption_type type)
bool generate_field_key(const std::string &field_name)
bool is_column_encrypted(const std::string &table, const std::string &column) const
encryption_manager()=default
Default constructor - used by database_context.
bool rotate_field_key(const std::string &field_name)
std::unordered_map< std::string, encryption_type > encrypted_columns_
std::mutex encryption_mutex_
std::string derive_key(const std::string &field_name) const
void set_master_encryption_key(const std::string &key)
std::string decrypt_field_data(const std::string &encrypted_data, const std::string &field_name) const
std::string encrypt_field_data(const std::string &data, const std::string &field_name) const
SQL injection prevention and query security.
static std::string convert_to_prepared_statement(const std::string &query, const std::vector< core::database_value > ¶meters)
static std::string escape_sql_string(const std::string &value)
static std::string sanitize_input(const std::string &input)
static const std::vector< std::string > injection_patterns_
static bool is_query_safe(const std::string &query)
static bool detect_suspicious_patterns(const std::string &query)
static std::vector< std::string > extract_table_names(const std::string &query)
static const std::vector< std::string > dangerous_keywords_
static bool validate_table_access(const std::string &table, const std::string &operation, const std::string &user)
Real-time security monitoring and alerting.
size_t get_suspicious_query_count(std::chrono::hours window) const
std::unordered_map< std::string, std::vector< std::string > > user_query_patterns_
size_t get_failed_login_count(std::chrono::hours window) const
std::vector< security_alert > security_alerts_
void monitor_privilege_escalation(const std::string &user_id, const std::string &operation)
security_monitor()=default
Default constructor - used by database_context.
double calculate_security_score() const
std::mutex monitor_mutex_
std::vector< std::function< void(const security_alert &)> > alert_handlers_
std::unordered_map< std::string, size_t > failed_login_attempts_
void emit_security_alert(threat_level level, const std::string &type, const std::string &description, const std::string &user_id="")
void detect_brute_force_attempts(const std::string &client_ip)
std::vector< security_alert > get_recent_alerts(std::chrono::hours window) const
void register_security_handler(std::function< void(const security_alert &)> handler)
void analyze_query_patterns(const std::string &user_id, const std::string &query)
Abstract interface for database backends.
Defines the enumeration of supported database types.
access_control::permission operator|(access_control::permission a, access_control::permission b)
bool has_permission(access_control::permission permissions, access_control::permission check)
authentication_method
Authentication methods supported.
encryption_type
Types of encryption supported.
std::vector< std::string > allowed_tables
std::chrono::system_clock::time_point created_at
std::vector< std::string > denied_tables
std::vector< permission > permissions
std::vector< std::string > roles
std::chrono::system_clock::time_point last_activity
std::chrono::system_clock::time_point login_time
Audit log entry for security events.
std::string error_message
std::chrono::system_clock::time_point timestamp
Secure credential storage.
std::string certificate_path
bool mutual_authentication
std::string client_secret
std::chrono::system_clock::time_point token_expiry
std::string private_key_path
std::string password_hash
authentication_method auth_method
std::string allowed_ciphers
encryption_type encryption
std::chrono::system_clock::time_point timestamp