Ma'lumotlar bazasi xavfsizligi, backup strategiyalari va disaster recovery texnikalarini o'rganish.
📋 Dars Rejasi
Database security fundamentals
Authentication va authorization
Encryption va data protection
Backup strategiyalari
Disaster recovery
🔐 Database Security Fundamentals
🛡️ Asosiy Xavfsizlik Printsipi
✅ CIA Triad
Confidentiality - Maxfiylik
Integrity - To'g'rilik
Availability - Mavjudlik
🎯 Xavfsizlik Qatlamlari
Network - Tarmoq xavfsizligi
Application - Dastur xavfsizligi
Database - Ma'lumotlar bazasi
Data - Ma'lumotlar xavfsizligi
🔒 Xavfsizlik Tahdidlari
SQL Injection - SQL in'ektsiya
Unauthorized Access - Ruxsatsiz kirish
Data Breach - Ma'lumotlar buzilishi
Privilege Escalation - Huquq oshirish
👤 Authentication va Authorization
🔑 PostgreSQL User Management
-- Foydalanuvchi yaratish
CREATE USER app_user WITH PASSWORD 'strong_password';
-- Role yaratish
CREATE ROLE read_only;
CREATE ROLE write_access;
-- Permission berish
GRANT CONNECT ON DATABASE my_database TO app_user;
GRANT USAGE ON SCHEMA public TO app_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only;
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO write_access;
-- Role berish
GRANT read_only TO app_user;
-- Row Level Security
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
CREATE POLICY user_policy ON users
FOR ALL TO app_user
USING (user_id = current_setting('app.current_user_id')::int);
-- PostgreSQL Audit
CREATE EXTENSION IF NOT EXISTS pgaudit;
-- Audit configuration
ALTER SYSTEM SET pgaudit.log = 'read,write,ddl';
ALTER SYSTEM SET pgaudit.log_relation = on;
ALTER SYSTEM SET pgaudit.log_statement_once = on;
-- Failed login attempts
SELECT * FROM pg_stat_activity
WHERE state = 'idle' AND query_start < NOW() - INTERVAL '1 hour';
-- Suspicious activity
SELECT * FROM pg_stat_user_tables
WHERE n_tup_ins + n_tup_upd + n_tup_del > 1000;
📈 Performance Monitoring
-- Slow query monitoring
SELECT query, mean_time, calls, total_time
FROM pg_stat_statements
ORDER BY mean_time DESC
LIMIT 10;
-- Database size monitoring
SELECT
datname,
pg_size_pretty(pg_database_size(datname)) as size
FROM pg_database;
-- Table size monitoring
SELECT
schemaname,
tablename,
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size
FROM pg_tables
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;
📝 Xulosa
🎯 O'rganilgan Mavzular
Database security fundamentals
Authentication va authorization
Encryption va data protection
Backup va restore strategiyalari
Disaster recovery planning
Monitoring va auditing
✅ Security Best Practices
Regular security audits
Strong authentication
Data encryption
Regular backups
Monitoring systems
💡 Keyingi Qadamlar
Security compliance
Automated monitoring
Cloud security
Advanced threat detection
⚠️ Muhim Eslatma
Database security - bu doimiy jarayon. Muntazam yangilanishlar, monitoring va audit qilish kerak!