نخستین سد دفاعی، شناسایی هویت فرد یا سیستمی است که قصد اتصال به سرور را دارد.
الف) Windows Authentication (توصیه شده)
ب) SQL Server Authentication
ج) احراز هویت مدرن در Azure
پس از ورود کاربر، سوال این است: "او اجازه انجام چه کاری را دارد؟"
این مهمترین قانون در امنیت است. هیچ کاربری نباید دسترسی sysadmin داشته باشد مگر اینکه واقعاً نیاز باشد.
Server Roles و Database Roles: به جای اعطای مجوز به تکتک کاربران، از نقشها استفاده کنید (مثل db_datareader برای خواندن یا نقشهای سفارشی).
User-Defined Roles: برای برنامههای سازمانی، نقشهای اختصاصی بسازید که دقیقاً محدود به پروسیجرهای خاص یا جداول خاص باشند.
اگر هکری موفق شود به فایلهای دیتابیس دسترسی پیدا کند، رمزنگاری آخرین سنگر دفاعی است.
الف) Transparent Data Encryption (TDE)
ب) Always Encrypted
ج) رمزنگاری در حال انتقال (In-Transit)
امنیت در سطح ردیف (Row-Level Security - RLS)
ماسکگذاری پویا (Dynamic Data Masking - DDM)
امنیت یک فرآیند ایستا نیست؛ شما باید بدانید چه کسی، در چه زمانی، چه تغییری ایجاد کرده است.
SQL Server Audit: این ابزار اجازه میدهد تمامی فعالیتها (مانند ورودهای ناموفق، تغییر در جداول حساس یا حذف دادهها) را در فایلهای مجزا یا Logهای ویندوز ذخیره کنید.
Vulnerability Assessment: ابزاری داخلی که دیتابیس شما را اسکن کرده و نقاط ضعف امنیتی (مثل تنظیمات اشتباه یا مجوزهای بیش از حد) را گزارش میدهد.
Advanced Threat Protection: در نسخههای جدید و محیطهای ابری، هوش مصنوعی رفتارهای مشکوک (مانند تزریق SQL یا دسترسی از لوکیشنهای غیرمعمول) را شناسایی و هشدار میدهد.
اگرچه این موضوع به کدنویسی برنامه مربوط است، اما لایه دیتابیس باید برای آن آماده باشد:
استفاده از Stored Procedures به جای کوئریهای متنی.
استفاده از Parameterized Queries.
غیرفعال کردن ویژگیهای خطرناک مانند xp_cmdshell که دسترسی به خط فرمان ویندوز را از داخل SQL فراهم میکند.
| ویژگی | سطح حفاظتی | مخاطب اصلی |
| TDE | فایلهای دیتابیس (Physical) | جلوگیری از سرقت هارد یا بکآپ |
| Always Encrypted | دادههای حساس (Column) | محافظت در برابر مدیران دیتابیس کنجکاو |
| RLS | منطق دسترسی (Logical) | جداسازی دادههای کاربران در یک جدول |
| DDM | نمایش داده (Presentation) | محافظت از حریم خصوصی در محیطهای تست/پشتیبانی |
برای داشتن یک SQL Server امن در سطح سازمانی، این چکلیست را دنبال کنید:
آپدیت مداوم: همیشه آخرین Patchهای امنیتی (CU/SP) را نصب کنید.
سختگیری در شبکه: پورت پیشفرض ۱۴۳۳ را تغییر دهید و از فایروال برای محدود کردن IPهای مجاز استفاده کنید.
جداسازی وظایف: فردی که بکآپ میگیرد نباید لزوماً دسترسی مشاهده دادههای مالی را داشته باشد.
رمزنگاری بکآپ: هرگز بکآپهای بدون رمزنگاری را در فضاهای ذخیرهسازی قرار ندهید.
0 نظر
هنوز نظری برای این مقاله ثبت نشده است.