יישום ביקורת
ביקורת מספקת שקיפות לפעילות מסדי נתונים, ומסייעת לך לזהות איומי אבטחה, לעקוב אחר עמידה בתקנות ולחקור אירועים. על ידי רישום מי ניגש לאיזה נתונים ומתי, הביקורת יוצרת מסלול אחריות התומך הן במעקב אבטחה והן בדרישות רגולטוריות.
SQL Server, Azure SQL ומסדי נתונים SQL ב-Microsoft Fabric מציעים יכולות ביקורת מובנות שתופסות אירועי מסד נתונים מבלי לדרוש שינויים ביישום. הבנה כיצד להגדיר ולנהל ביקורת מסייעת לך לשמור על פיקוח מתאים על סביבות מסד הנתונים שלך.
הבנת אפשרויות ביקורת
הביקורת לוכדת אירועי מסד נתונים וכותבת אותם ליומן ביקורת. האירועים שאתה בודק, היכן אתה מאחסן את היומנים ואיך אתה מנתח אותם תלויים בדרישות האבטחה והתשתית שלך.
SQL Server Audit משתמש בתשתית Extended Events כדי להקליט פעילות. אתה יכול לכתוב רשומות ביקורת לקבצים, ליומן האבטחה של Windows, או ליומן היישומים של Windows. גמישות זו מאפשרת לך להשתלב עם מערכות ניהול לוגים קיימות.
Azure SQL Database auditing כותב ל-Azure Blob Storage, Log Analytics, או Event Hubs. השירות המנוהל מטפל בתשתית, כך שתוכל להתמקד בהחלטה על מה לבדוק במקום לנהל אחסון.
מסדי נתונים SQL ב-Microsoft Fabric משתמשים ברישום הפעילות של Fabric וב-Microsoft Purview לנתוני ביקורת. האינטגרציה הזו עם Microsoft Purview מעניקה לך ביקורת מאוחדת בכל שטח הנתונים שלך.
הגדרת ביקורת SQL Server
SQL Server Audit דורשת יצירת אובייקט ביקורת שרת שמגדיר היכן לכתוב רשומות ביקורת, ואז יצירת מפרטי ביקורת שמגדירים מה ללכוד.
התחל ביצירת ביקורת שרת שכותבת לקובץ:
CREATE SERVER AUDIT SecurityAudit
TO FILE (FILEPATH = 'C:\AuditLogs\', MAXSIZE = 100 MB, MAX_ROLLOVER_FILES = 10)
WITH (QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE);
הפרמטר QUEUE_DELAY מציין כמה מילישניות יש לאחסן אירועים לפני הכתיבה. ערכים נמוכים יותר מספקים רישום בזמן אמת אך יכולים להשפיע על הביצועים. ההגדרה קובעת ON_FAILURE התנהגות כאשר כתיבת ביקורת נכשלת. שימוש SHUTDOWN בתרחישי עמידה קריטיים שבהם חסרות רשומות ביקורת אינו מקובל.
כעת הפעל את הביקורת:
ALTER SERVER AUDIT SecurityAudit WITH (STATE = ON);
לאחר מכן, צור מפרט ביקורת שרת ללכידת אירועים ברמת השרת:
CREATE SERVER AUDIT SPECIFICATION ServerAuditSpec
FOR SERVER AUDIT SecurityAudit
ADD (FAILED_LOGIN_GROUP),
ADD (SUCCESSFUL_LOGIN_GROUP),
ADD (SERVER_PERMISSION_CHANGE_GROUP),
ADD (DATABASE_PERMISSION_CHANGE_GROUP)
WITH (STATE = ON);
לאירועים ברמת מסד הנתונים, צור מפרט ביקורת מסד נתונים:
USE MyDatabase;
GO
CREATE DATABASE AUDIT SPECIFICATION DatabaseAuditSpec
FOR SERVER AUDIT SecurityAudit
ADD (SELECT, INSERT, UPDATE, DELETE ON dbo.SensitiveData BY public),
ADD (EXECUTE ON SCHEMA::dbo BY public),
ADD (DATABASE_ROLE_MEMBER_CHANGE_GROUP)
WITH (STATE = ON);
מפרט זה בודק את כל הגישה לנתונים בטבלה SensitiveData , ביצוע פרוצדורות מאוחסנות ושינויים בחברות בתפקידים.
Configure Azure SQL auditing
ביקורת מסד הנתונים של Azure SQL מוגדרת ברמת השרת או מסד הנתונים. מדיניות ברמת שרת חלה על כל מסדי הנתונים בשרת הלוגי.
אתה יכול להפעיל ביקורת בפורטל Azure או באמצעות T-SQL:
-- Enable auditing to blob storage (configured in Azure portal)
ALTER DATABASE AUDIT SPECIFICATION AzureAuditSpec
ADD (SELECT, INSERT, UPDATE, DELETE ON DATABASE::MyDatabase BY public)
WITH (STATE = ON);
לשליטה מפורטת יותר, הגדר ביקורת דרך תבניות Azure Policy או ARM. הנה דוגמה שמפרטת את חשבון האחסון, תקופת השמירה וקבוצות הפעולה לביקורת:
{
"properties": {
"state": "Enabled",
"storageEndpoint": "https://myauditlogs.blob.core.windows.net",
"retentionDays": 90,
"auditActionsAndGroups": [
"SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP",
"FAILED_DATABASE_AUTHENTICATION_GROUP",
"BATCH_COMPLETED_GROUP"
]
}
}
הערה
ביקורת Azure SQL לניתוח לוגים מאפשרת יכולות שאילתות והתראות חזקות באמצעות שפת השאילתות Kusto (KQL). אינטגרציה זו מפשטת ניטור אבטחה ודיווח על ציות.
פעולות ביקורת נבחרות
בחר פעולות ביקורת בהתאם לדרישות האבטחה והציות שלך. קבוצות פעולה נפוצות כוללות:
אירועי אימות:
-
SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP- כניסות מוצלחות -
FAILED_DATABASE_AUTHENTICATION_GROUP- ניסיונות כניסה כושלים
שינויים בהרשאות:
-
DATABASE_PERMISSION_CHANGE_GROUP- הענקה, ביטול, דחיית הפעילות -
DATABASE_ROLE_MEMBER_CHANGE_GROUP- שינויים בתפקיד החברות -
DATABASE_PRINCIPAL_CHANGE_GROUP- יצירה ושינוי משתמשים
גישה לנתונים:
-
BATCH_COMPLETED_GROUP- כל הקבוצות שהושלמו (נפח גבוה) -
SELECTעל אובייקטים ספציפיים - ניטור גישה ממוקדת לקריאה -
INSERT,UPDATE,DELETEעל אובייקטים ספציפיים - מעקב אחרי שינוי נתונים
שינויים בסכימה:
-
SCHEMA_OBJECT_CHANGE_GROUP- שינויים בטבלאות ובאובייקטים -
DATABASE_OBJECT_CHANGE_GROUP- הצהרות DDL
חשוב
תתחיל עם סט ממוקד של פעולות ביקורת במקום לתפוס הכל. ביקורת בנפח גבוה משפיעה על הביצועים ומייצרת לוגים שקשה לנתח.
שאילתה וניתוח יומני ביקורת
לביקורות מבוססות קבצי SQL Server, השתמשו בפונקציה כדי fn_get_audit_file לשאול את היומנים:
SELECT
event_time,
action_id,
succeeded,
session_server_principal_name AS UserName,
database_name,
object_name,
statement
FROM fn_get_audit_file('C:\AuditLogs\*.sqlaudit', DEFAULT, DEFAULT)
WHERE event_time > DATEADD(day, -7, GETUTCDATE())
ORDER BY event_time DESC;
אם אתה משתמש בביקורת Azure SQL עם Log Analytics, תוכל לשאול באמצעות KQL:
AzureDiagnostics
| where Category == "SQLSecurityAuditEvents"
| where TimeGenerated > ago(7d)
| where action_name_s == "SELECT"
| summarize count() by client_ip_s, server_principal_name_s
| order by count_ desc
שאילתה זו מזהה אילו משתמשים וכתובות IP יצרו את הכי הרבה שאילתות SELECT בשבוע האחרון, ומסייעת לזהות דפוסי גישה לא שגרתיים.
יישום שימור והגנה על ביקורת
יומני הביקורת שלך צריכים הגנה מפני שיבוש, ואתה צריך לשמור אותם בהתאם לדרישות התאמה.
עבור SQL Server, הגדר אחסון בלתי ניתן לשינוי עבור קבצי ביקורת והשתמש בהרשאות מערכת הקבצים של Windows כדי למנוע מחיקה. עבור Azure SQL, הגדר אחסון עם אחסון blob בלתי משתנה והגדר מדיניות שמירה בניהול מחזור החיים של Azure Storage.
חשוב
מאחסן את יומני הביקורת בנפרד מהבסיסים שהם עוקבים אחריהם. זה מבטיח שגם אם התוקפים יפרצו מסד נתונים, הם לא יוכלו להתעסק בעקבות הביקורת.
לתרחישי ציות, שקלו את שיטות השימור הבאות:
- הגדר תקופות שמירה על בסיס דרישות רגולטוריות (לעיתים שבע שנים עבור נתונים פיננסיים)
- השתמש באחסון בלתי ניתן לשינוי כדי למנוע מחיקת יומן
- מימוש ארכיון לוגים לאחסון קר לניהול עלויות
- הקמת תהליכים לסקירת יומני ביקורת והתראה
סקירה שוטפת של נתוני ביקורת מסייעת לך לזהות בעיות אבטחה לפני שהן הופכות לאירועים. צור התראות על ניסיונות כניסה כושלים, שינויים בהרשאות מחוץ לחלונות תחזוקה, ודפוסי גישה לא שגרתיים לנתונים.