مقدمه

SQL Server یا میزبان پایگاه داده یکی از برجسته ‌ترین پلتفرم‌ های داده در جهان است و در سراسر جهان از میلیون‌ ها میزبان پایگاه داد استفاده می ‌شود، این پایگاه داده‌ ها اطلاعات را ذخیره می ‌کند و همانطور که می ‌دانید این اطلاعات ارزشمندترین دارایی برای هر سازمانی است. با این داده‌ ها است که سازمان ‌ها عملیات و فرایندهای روزمره خود را اجرا می‌ کنند، با این اوصاف امنیت SQL Server یکی از مهم‌ ترین اقداماتی است که در هر سازمان باید به آن به صورت درست و جدی پرداخته شود. در این مقالبه قصد داریم تا ده نکته برتر برای امنیت SQL Server را برای شما شرح دهیم.

امنیت SQL Server چیست؟

همانطور که گفته شد داده‌ ها یک دارایی مهم برای هر سازمانی هستند که این اطلاعات خوراکی برای داشنمندان علم داده بوده و با پردازش آن مهم‌ ترین تصمیمات هر سازمان اتخاذ می‌ شود. امنیت میزبان پایگاه داده شامل سه رکن اساسی محرمانه بودن، یکپارچگی و در دسترس بودن (CIA) است و با فرآیندهای خاصی برای محافظت از داده ‌ها در برابر دسترسی عمدی و تصادفی غیرمجاز سروکار دارد. نکاتی که در ادامه مطلب خواهید خواند، سعی بر این دارند تا هر سه اصل را به نحو احسنت برقرار کنند.

1- ایزوله ‌سازی پایگاه داده

سرورهای پایگاه داده تا حد امکان باید از سایر سرویس ‎ها جدا شوند. بسته به اندازه محیط خود، باید سرور SQL خود را در یک بخش شبکه محدود(VLAN ) قرار دهید تا فقط ترافیک مجاز به آن منتقل شود. به طور معمول، فقط یک سرور برنامه یا سرور وب مستقیماً با پایگاه داده ارتباط برقرار می ‌کند، بنابراین می ‌توان سیاست ‌های محدودکننده شبکه را برای جلوگیری از ارتباطات غیرقانونی وضع کرد تا امنیت پایگاه داده اطمینان حاصل شود.
همچنین امنیت محیط فیزیکی سرور پایگاه داده شما بسیار مهم است. تصور کنید که SQL Server خود را در حداکثر سطح امنیتی محافظت کرده ‌اید اما به از لحاظ فیزیکی امنیت SQL Server شما خوب نباشد، این واقعاً یک تناقض خواهد بود. شما باید دسترسی فیزیکی به سرور پایگاه داده فیزیکی خود را محدود کنید. برای دستیابی به این هدف، شما باید رویه مناسبی را تعیین کنید تا فقط پرسنل مجاز بتوانند به سرورها دسترسی فیزیکی داشته باشند.

2- سیستم عامل

امنیت سیستم عاملی که SQL Server روی آن نصب شده است نیز مهم است. اگر سیستم عامل ایمن نشده باشد، به عنوان مثال یک مهاجم بالقوه می ‌تواند به داده‌ های SQL Server شما دسترسی داشته باشد و فایل‌ های log را بدست آورد. نکاتی برای ایمن سازی سیستم عالم وجود دارد که باید به آن توجه داشته باشید:

  •  اطمینان حاصل کنید که همه ابزارها و برنامه ‌های SQL Server شما به طور مرتب به روز می ‌شوند. بیشتر آسیب پذیری ‌هایی که مورد سوء استفاده قرار می ‌گیرند بیش از یک سال است که شناخته شده ‌اند، بنابراین نصب به موقع وصله‌ های امنیتی می تواند با رفع این عیب ‌ها از اکثر حملات جلوگیری کند.
  • با تنظیم مجوزهای مناسب پوشه و امنیت فایل، دسترسی به پرونده های فیزیکی SQL Server را محدود کنید.

3- شبکه

همانطور که می ‌دانید تمام داده‌ های مورد نیاز سازمان از طریق شبکه منتقل می ‌شوند. شما سرورهای پایگاه داده، سرورهای برنامه، مشتریان، Storage Area Network (SAN) خود را دارید و… . شبکه باید نسبت به دسترسی ‌های غیرمجاز به منابه پایگاه داده و همچنین جلوگیری از جریان داده‌ ها به مقاصد غیر مجاز، ایمن باشد. برای دستیابی به این سطح از امنیت SQL Server ، باید فایروال‌ها را به درستی پیکربندی کنید. به عنوان مثال، یک فایروال بین سرور پایگاه داده و اینترنت قرار دهید. در مورد SQL Server، باید پیکربندی مناسب فایروال ویندوز برای SQL Server را انجام دهید.

4- اپلیکیشن

وقتی صحبت از امنیت پایگاه داده می‌ شود ، فقط در مورد امنیت SQL Server شما صحبت نمی ‌شود. یکی از اصول برقراری امنیت میزبان پایگاه داده ، استفاده از اپلیکیشن ایمنی است که قرار است به نمونه(Instance) پایگاه داده شما متصل شود و دلیل آن این است که جریان داده بین سرور و برنامه شما برقرار می‌ شود، بنابراین باید مطمئن شوید که هر سه نهاد شرکت کننده در این ارتباط ایمن شده اند. به طور معمول، سه نوع موجودیت در چنین جریان داده‌ ای شرکت می کنند:

  • سرور پایگاه داده و نمونه (Instance)
  • کلاینت‌ ها (به عنوان مثال سرور برنامه یا اتصال مستقیم کلاینت)
  • اتصال شبکه

برای ایمن سازی اپلیکیشن، می ‌توانید موارد زیر را انجام دهید:

  • گذرواژه‌های کاربر را ایمن نگه دارید و از افشا شدن آن جلوگیری کنید، همچنین می ‌توانید به جای آن از رشته‌ های اتصال رمزگذاری شده استفاده کنید.
    از Windows Authentication برای حساب ‌ها استفاده کنید. احراز هویت ویندوز متکی به Active Directory (AD) است تا کاربران را قبل از اتصال به SQL احراز هویت کند. این حالت احراز هویت توصیه شده است زیرا AD بهترین راه برای مدیریت سیاست‌ های رمز عبور و دسترسی کاربر و گروه به اپلیکیشن ‌های سازمان شما است.
  • یک اتصال رمزگذاری شده به نمونه SQL Server خود ایجاد کنید. با اتصال رمزگذاری شده، حتی اگر مهاجم احتمالی ترافیک شبکه را بین سرویس گیرنده شما و نمونه SQL سرور رهگیری کند، نمی ‌تواند داده‌ها را بخواند زیرا این فقط یک متن واضح نیست بلکه بسته‌ های داده رمزگذاری شده است. SQL Server 2016 ویژگی Always Encrypted را معرفی کرد که در مورد ترافیک داده بین کلاینت‌ ها و نمونه‌ های SQL Server، گزینه رمزگذاری اضافی را برای امنیت پایگاه داده در اختیار شم قرار می ‌دهد.

5- ایمن سازی نمونه سرور SQL

تا به اینجا همه‌ عوامل خارجی در امنیت SQL Server را بررسی کردیم، حال بیایید عوامل اصلی برای ایمن سازی نمونه SQL Server و پایگاه ‌های داده میزبان آن تمرکز کنیم. اولین چیزی که باید بررسی کنید، سطح نمونه SQL Server شماست. پیکربندی سطح در SQL Server امکان متوقف یا غیرفعال کردن اجزا و ویژگی‌ هایی را که مورد استفاده قرار نمی ‌گیرند، فراهم می ‌کند. با غیرفعال کردن این ویژگی ‌ها، سطح SQL Server را که در معرض حملات احتمالی است، محدود خواهید کرد. توجه داشته باشید که در صورت نیاز به فعال کردن یک یا چند مورد از این ویژگی ‌ها، باید کلیه اقدامات احتیاطی لازم را نیز انجام دهید تا امنیت میزبان پایگاه داده را برقرار نمایید.

6- مجوز‌های سطح سرور و پایگاه داده

شما باید در مورد مجوزهای سطح سرور احتیاط لازم را به خرج دهید چراکه این مجوزها، اجزاه دسترسی به سطح نمونه را خواهند داد. نقش های سرور موجود در SQL Server 2016 عبارتند از:

  • Sysadmin
  • Serveradmin
  • Securityadmin
  • Processadmin
  • Setupadmin
  • Bulkadmin
  • Diskadmin
  • Dbcreator
  • public

اطمینان حاصل کنید که فقط ورودهای لازم برای عضویت در نقش ‌های بالا را وارد کنید. به عنوان مثال، هرگز نقش SysAdmin را به گروه Windows BUILTIN \ Administrators اختصاص ندهید. مدیران دستگاه نباید به نمونه SQL Server دسترسی داشته باشند. حال، اگر می ‌خواهید به شخصی که مدیر دستگاه است دسترسی به SQL Server را اعطا کنید، می توانید این کار را به صورت جداگانه برای ورود به سیستم خاص انجام دهید و نه برای گروه BUILTIN \ Administrators.

7- امنیت SQL Server با احراز هویت و مجوز

هنگام نصب SQL Server ، یکی از تنظیماتی که می ‌توانید انجام دهید حالت احراز هویت است. می توانید Windows Authentication Mode یا SQL Server و Mixed Mode را انتخاب کنید. حالت احراز هویت ویندوز از امنیت بیشتری برخوردار است زیرا با احراز هویت Windows ، SQL Server اعتبار کاربر را با استفاده از توکن اصلی Windows در سیستم عامل تأیید می ‌کند. این باعث می شود کل فرایند ایمن تر شود زیرا احراز هویت با استفاده از پروتکل امنیتی Kerberos انجام می ‌شود.
SQL Server به شما این امکان را می دهد که حالت احراز هویت را در هر لحظه از طریق ویژگی ‌های نمونه SQL Server خود تغییر دهید (از SSMS ، روی نمونه راست کلیک کنید، “Properties” را انتخاب کرده و سپس روی برگه “Security” کلیک کنید).

8- استفاده از Row-Level Security

Row-Level Security (RLS) به سازمان ‌ها این امکان را می‌ دهد تا کنترل کنند چه کسانی می‌ توانند ردیف‌ ها را در پایگاه داده مشاهده کنند. به عنوان مثال، می ‌توانید کاربران را محدود به دیدن ردیف هایی که حاوی اطلاعات مربوط به مشتریانشان، کنید.
RLS شامل سه بخش اصلی است: یک تابع پریدیکیت (predicate )، یک گزاره امنیتی و یک سیاست امنیتی. تابع پریدیکیت بررسی می ‌کند که آیا کاربر درخواست‌ کننده پایگاه داده می ‌تواند بر اساس منطق به سطر دسترسی پیدا کند یا خیر. به عنوان مثال، می ‌توانید بررسی کنید که آیا نام کاربری کاربر که درخواست را اجرا می‌ کند با فیلدی در یکی از ستون‌ های ردیف مطابقت دارد یا خیر. یک تابع پریدیکیت و گزاره امنیتی با هم در یک تابع تعریف می‌ شوند که یا نتایج صحیح یک پرس و جو را بدون افزایش خطا فیلتر می‌ کند.

9- امنیت SQL Server با رمزگذاری داده ‌ها

SQL Server از چندین گزینه رمزگذاری و برقراری امنیت پایگاه داده پشتیبانی می ‌کند:

  • لایه سوکت امن (SSL) ترافیک را هنگام حرکت بین نمونه سرور و برنامه سرویس گیرنده رمزگذاری می ‌کند ، درست مانند ترافیک اینترنت بین مرورگر و سرور. علاوه بر این،کلاینت می ‌تواند هویت سرور را با استفاده از گواهی سرور تأیید کند.
  • رمزگذاری داده های شفاف (TDE) داده‌ها را بر روی دیسک رمزگذاری می‌ کند. به طور خاص، کل داده ‌ها و پرونده‌ های ورود را رمزگذاری می ‌کند.
  • رمزگذاری سطح سلول-ستون اطمینان حاصل می ‌کند که داده ‌های خاص در پایگاه داده رمزگذاری شده و حتی زمانی که در حافظه ذخیره می ‌شوند همچنان به همین شکل باقی می ‌مانند.
  • Always Encrypted یک نوع پیشرفته ‌تر از رمزگذاری سطح سلول-ستون است زیرا نیازی به تغییر در برنامه های سرویس گیرنده ندارد. داده‌ ها روی شبکه، حافظه و دیسک رمزگذاری می‌ شوند. همچنین از داده‌ های حساس در برابر نگاه کنجکاو کاربران ممتاز SQL Server محافظت می ‌کند.

10-  ایمن ‌سازی فایل‌ های پشتیبان

داده‌ های پشتیبان شما مانند پایگاه ‌های داده تولیدی شما هستند و باید به همان اندازه از آنها محافظت شود. این هدف می‌ تواند با قفل کردن دایرکتوری های پشتیبان، محدود کردن دسترسی به سرور یا ذخیره سازی داده‌ ها، امنیت فیزیکی رسانه ‌های قابل جابجایی، دسترسی به شبکه پشتیبان ‌گیری و بررسی افرادی باشد که به پشتیبان گیری دسترسی دارند محقق شود. فقط فراموش نکنید پشتیبان گیری در مورد امنیت بخشی از اکوسیستم داده شما است و نباید افراد غیرمجاز به آن دسترسی داشته باشند.

سخن آخر در مورد امنیت SQL Server

در این مطلب سعی شد تا ده مورد از مهمترین نکات برای امنیت SQL Server و امنیت پایگاه داده شرح داده شود، تعداد نکات مسلما بیش از این‌ ها هستند اما نکات ذکر شده حیاتی ‌ترین نکات برای امنیت میزبان پایگاه داده بوده و برای حفظ ارزشمند‌ترین سرمایه سازمانتان باید آن‌ ها را به صورت دقیق اجرا نمایید.