Veritabanı güvenliği ve performansı, herhangi bir kuruluş için kritik öneme sahiptir. Veritabanı aktivitelerini düzenli olarak denetlemek, olası güvenlik risklerini ve performans sorunlarını tespit etmek için oldukça önemlidir. Bu yazıda, SQL ve Shell scriptleri kullanarak veritabanı aktivitelerini nasıl denetleyebileceğinizi adım adım anlatacağız.
## SQL Scriptleri ile Denetim
SQL scriptleri, veritabanınızda gerçekleşen aktiviteleri günlük, haftalık ve aylık olarak gözden geçirmenizi sağlar. Bu scriptleri, belirli kullanıcıları, tabloları veya saklı prosedürleri filtrelemek gibi ihtiyaçlarınıza göre özelleştirebilirsiniz. Ayrıca, bu scriptleri kullanarak ekip üyelerinizle paylaşabileceğiniz raporlar da oluşturabilirsiniz.
### Günlük Denetim
– **Bugün giriş yapan kullanıcıların listesi:**
“`sql
SELECT user_name, login_time
FROM sys.dm_exec_sessions
WHERE login_time >= CURRENT_DATE – 1
ORDER BY login_time DESC;
“`
– **Bugün değiştirilen tabloların listesi:**
“`sql
SELECT table_name, last_update
FROM information_schema.tables
WHERE last_update >= CURRENT_DATE – 1
ORDER BY last_update DESC;
“`
– **Bugün çalıştırılan saklı prosedürlerin listesi:**
“`sql
SELECT procedure_name, last_execution
FROM sys.procedures
WHERE last_execution >= CURRENT_DATE – 1
ORDER BY last_execution DESC;
“`
– **Bugün başarısız olan girişlerin listesi:**
“`sql
SELECT login_name, failed_login_attempts
FROM sys.logins
WHERE failed_login_attempts > 0
ORDER BY failed_login_attempts DESC;
“`
### Haftalık Denetim
– **Bu hafta giriş yapan kullanıcıların listesi:**
“`sql
SELECT user_name, login_time
FROM sys.dm_exec_sessions
WHERE login_time >= CURRENT_DATE – 7
ORDER BY login_time DESC;
“`
– **Bu hafta değiştirilen tabloların listesi:**
“`sql
SELECT table_name, last_update
FROM information_schema.tables
WHERE last_update >= CURRENT_DATE – 7
ORDER BY last_update DESC;
“`
– **Bu hafta çalıştırılan saklı prosedürlerin listesi:**
“`sql
SELECT procedure_name, last_execution
FROM sys.procedures
WHERE last_execution >= CURRENT_DATE – 7
ORDER BY last_execution DESC;
“`
– **Bu hafta başarısız olan girişlerin listesi:**
“`sql
SELECT login_name, failed_login_attempts
FROM sys.logins
WHERE failed_login_attempts > 0
ORDER BY failed_login_attempts DESC;
“`
### Aylık Denetim
– **Bu ay giriş yapan kullanıcıların listesi:**
“`sql
SELECT user_name, login_time
FROM sys.dm_exec_sessions
WHERE login_time >= CURRENT_DATE – 30
ORDER BY login_time DESC;
“`
– **Bu ay değiştirilen tabloların listesi:**
“`sql
SELECT table_name, last_update
FROM information_schema.tables
WHERE last_update >= CURRENT_DATE – 30
ORDER BY last_update DESC;
“`
– **Bu ay çalıştırılan saklı prosedürlerin listesi:**
“`sql
SELECT procedure_name, last_execution
FROM sys.procedures
WHERE last_execution >= CURRENT_DATE – 30
ORDER BY last_execution DESC;
“`
– **Bu ay başarısız olan girişlerin listesi:**
“`sql
SELECT login_name, failed_login_attempts
FROM sys.logins
WHERE failed_login_attempts > 0
ORDER BY failed_login_attempts DESC;
“`
## Shell Scriptleri ile Denetim
SQL scriptlerini kullanmanın yanı sıra, bu scriptleri Linux shell scriptleri ile de çalıştırabilirsiniz. Bu yöntem, scriptleri bir cron job veya başka bir zamanlama mekanizması ile otomatik olarak çalıştırmanıza olanak tanır.
### Günlük Denetim Scripti
“`bash
# Bugün giriş yapan kullanıcıların listesi
echo “Bugün giriş yapan kullanıcıların listesi alınıyor…”
sqlplus -S user/password @daily_audit.sql
# Bugün değiştirilen tabloların listesi
echo “Bugün değiştirilen tabloların listesi alınıyor…”
sqlplus -S user/password @daily_audit_tables.sql
# Bugün çalıştırılan saklı prosedürlerin listesi
echo “Bugün çalıştırılan saklı prosedürlerin listesi alınıyor…”
sqlplus -S user/password @daily_audit_procedures.sql
# Bugün başarısız olan girişlerin listesi
echo “Bugün başarısız olan girişlerin listesi alınıyor…”
sqlplus -S user/password @daily_audit_logins.sql
“`
### Haftalık Denetim Scripti
“`bash
# Bu hafta giriş yapan kullanıcıların listesi
echo “Bu hafta giriş yapan kullanıcıların listesi alınıyor…”
sqlplus -S user/password @weekly_audit.sql
# Bu hafta değiştirilen tabloların listesi
echo “Bu hafta değiştirilen tabloların listesi alınıyor…”
sqlplus -S user/password @weekly_audit_tables.sql
# Bu hafta çalıştırılan saklı prosedürlerin listesi
echo “Bu hafta çalıştırılan saklı prosedürlerin listesi alınıyor…”
sqlplus -S user/password @weekly_audit_procedures.sql
# Bu hafta başarısız olan girişlerin listesi
echo “Bu hafta başarısız olan girişlerin listesi alınıyor…”
sqlplus -S user/password @weekly_audit_logins.sql
“`
### Aylık Denetim Scripti
“`bash
# Bu ay giriş yapan kullanıcıların listesi
echo “Bu ay giriş yapan kullanıcıların listesi alınıyor…”
sqlplus -S user/password @monthly_audit.sql
# Bu ay değiştirilen tabloların listesi
echo “Bu ay değiştirilen tabloların listesi alınıyor…”
sqlplus -S user/password @monthly_audit_tables.sql
# Bu ay çalıştırılan saklı prosedürlerin listesi
echo “Bu ay çalıştırılan saklı prosedürlerin listesi alınıyor…”
sqlplus -S user/password @monthly_audit_procedures.sql
# Bu ay başarısız olan girişlerin listesi
echo “Bu ay başarısız olan girişlerin listesi alınıyor…”
sqlplus -S user/password @monthly_audit_logins.sql
“`
## Sonuç
Veritabanı denetimi, güvenlik ve performans açısından büyük önem taşır. SQL ve Shell scriptleri kullanarak düzenli denetimler yapmak, olası sorunları önceden tespit etmenize ve gerekli önlemleri almanıza yardımcı olacaktır. Bu scriptleri ihtiyaçlarınıza göre özelleştirerek, veritabanınızın güvenliğini ve performansını daha etkin bir şekilde yönetebilirsiniz.
Unutmayın, düzenli denetimler yapmak ve sonuçları dikkatlice incelemek, veritabanınızın sağlıklı bir şekilde çalışmasını sağlamak için atabileceğiniz en önemli adımlardan biridir.