مقدمه

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

سطوح اختلال امنیت سرور

برای یک سرور، معمولا خطر امنیتی در سه سطح وجود دارد که در ادامه می خواهیم این سطوح را بررسی کنیم. مورد اول داده هایی است که از خارج به سرور وارد می ‌شوند. مورد دوم افرادی هستند که به سرور دسترسی دارند و اطلاعات را می بینند و مورد سوم مواردی است که به صورت تصادفی با داده هایی بالاتر از سطح دسترسی خود مواجه می ‌شوند.

بررسی چند اصطلاح درباره برقراری ارتباط و امنیت در SQL Server

  • Login ID: آیدی ورود برای برقراری ارتباط و ورود به دیتابیس با استفاده از بخشی از اطلاعات کاربر که قبلا گرفته شده ساخته می شود و کاربر با آن شناسایی خواهد شد.
  • Password: پسورد یا کلمه عبور مجموعه ‌ای از کاراکترها است که به یک آیدی اختصاص داده می ‌شود تا هر کاربر رمز عبور مشخصی برای ورود به سیستم داشته باشد.

هنگامی که یک کاربر درخواست ورود به یک دیتابیس را دارد، آیدی و پسورد او به دیتابیس ارسال می شود پس از چک شدن این موارد در بانک اطلاعاتی، آیدی و پسورد او تطبیق داده شده و تایید می شوند و سپس کاربر اجازه دسترسی به دیتابیس را خواهد داشت.

  • Roles: یک تعریف مهم در برقراری ارتباط و امنیت در SQL Server است. برای راحت تر شدن تطابق سطح دسترسی با هر کاربر، به کاربرها در ابتدای ثبت شدن در سیستم، یک نقش داده می شود. این نقش سطح دسترسی کاربر به اطلاعات دیتابیس را مشخص می ‌کند و کاربرانی که در یک گروه قرار دارند یک سطح دسترسی را خواهند داشت. به این صورت تعیین سطح دسترسی برای کاربران به صورت تک به تک انجام نشده و این کار به صورت گروهی و با سرعت بیشتری انجام خواهد گرفت.
  • نقش برنامه کاربردی: که به عنوان یک نقش ویژه به کاربران امکان دسترسی به داده های خاصی که با برنامه های کاربردی ارتباط دارند را می دهد.
  • گروه های ویندوز NT: امنیت سرورهای SQL به طور مستقیم با این گروه ها در ارتباط است. اعضای این گروه ها به طور خودکار به SQL دسترسی خواهند داشت.

بررسی سطوح امنیت سرور

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

مدلهای مختلف امنیت سرور و روش های فعالسازی آن ها

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

ابتدا نرم افزار SQL Server Enterprise Manager را باز کرده و سروری که می خواهید روش امنیت آن را تغییر دهید انتخاب کنید. گزینه Properties را انتخاب کنید و در قسمت باز شده وارد Security شوید و سپس گزینه Windows NT Authentication را تیک بزنید. در نهایت برنامه را بسته و سرور را دوباره راه اندازی کنید.
این روش از روش قبلی اختصاصی تر است و به دلیل مراحل بیشتر، پیچیدگی بیشتری نیز دارد. اسم این روش به روش ترکیبی نیز معروف است. اما در نظر داشته باشید که تمامی سرورها قادر به استفاده از این روش نیستند. زیرا همگی آنها نمی توانند با ویندوز NT ارتباط برقرار کنند. برای اینکه سرور خود را با این روش ایمن سازی کنید مراحل زیر را به ترتیب طی کنید:
ابتدا نرم افزار SQL Server Enterprise Manager را باز کرده و سروری که می خواهید روش امنیت آن را تغییر دهید انتخاب کنید. گزینه Properties را انتخاب کنید و در قسمت باز شده وارد Security شوید و سپس گزینه Windows NT SQL Server را تیک بزنید. در نهایت برنامه را بسته و سرور را دوباره راه اندازی کنید.

چطور در سرور بین کاربران دیتابیس و اطلاعات سرور ارتباط برقرار کنیم؟

روش های مختلفی برای برقراری ارتباط و امنیت در SQL Server وجود دارد. اولین روشی که به ذهن می رسد استفاده از برنامه SQL Server Enterprise Manager است. با وجود یک Wizard (راهنما)، شما برای انجام مراحل مختلف این کار به صورت قدم به قدم راهنمایی شده و به راحتی آن را به انجام می ‌رسانید. همچنین در صورت وجود این ارتباط بین آیدی ها و سرور در یک سرور، می توانید برای سرورهای دیگر از اطلاعات ذخیره شده آن استفاده کنید. همچنین امکان استفاده از SQL Query Analyzer را دارید. برای بررسی اعتبار کاربران با ویندوز NT باید از موارد ذخیره شده sp-grantlogin استفاده کنید.

انواع نقش ها در برقراری ارتباط و امنیت در SQL Server

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

  • نقش های از پیش تعریف شده سرویس دهنده
  • نقش های از پیش تعریف شده دیتابیس
  • نقش عمومی
  • نقش های شخصی دیتابیس

نقش های از پیش تعریف شده سرویس دهنده: با استفاده از این گروه ها می توانید وظایف مدیریت سرور را به اشخاص دیگری نیز واگذار کنید. برای این نقش ۷ نقش مختلف دیگر که زیرمجموعه آن هستند در نظر گرفته شده است. نقش های از پیش تعریف شده دیتابیس: در صورتیکه کاربر این نقش را به خود بگیرد، امکان انجام عملیات های گوناگون در سرور را دارد. برای این نقش 9 نقش به عنوان زیرمجموعه تعیین شده است.

نقش عمومی: این گروه گروهی است که تمام کاربران در هر نوع دیتابیسی عضو آن هستند و به نوعی گروه اولیه به شمار می رود. هنگامی که بخواهید یک مجوز را به تمام کاربران یک سرور به صورت پیشفرض بدهید آن را در گروه نقش عمومی قرار می دهید. این سطح دسترسی برای تمامی کاربران سرور وجود دارد.

نقش های شخصی دیتابیس: این نقش‌ ها را می ‌توان ویژه ترین نقش های موجود در سرور دانست. کاربرانی که توسط مدیر سرور به آن ها نقش های شخصی دیتابیس داده می‌ شود، توانایی دسترسی به داده ها و مجوزهای ویژه ‌ای را دارند که برای نقش ‌های دیگر تعریف نشده اند. دقت داشته باشید که هر کاربر تنها می ‌تواند یک نقش شخصی در دیتابیس داشته باشد و هر نقش شخصی در هر دیتابیس مخصوص همان دیتابیس است و به دیتابیس های دیگر در سرور قابل تعمیم نیست.

ابزارهای امنیتی

حال در ادامه می خواهیم ابزار هایی را برای تقویت برقراری ارتباط و امنیت در SQL Server نام ببریم.

SQL Critical: این برنامه که توسط شرکت مایکروسافت عرضه شده است، شامل موارد مختلفی است: SQL Critical Update که همواره در این آپدیت ها مواردی امنیتی برای نسخه های قبلی SQL Server برای محافظت در برابر برخی ویروس ها قرار داده شده است.  SQL Scan امکان اسکن در این نرم افزار قرار داده شده است که این امکان هم آن را در برابر موارد مخرب محافظت می کند.

Microsoft Baseline Security Analyzer (MBSA): این ابزار محافظتی باز هم از سوی مایکروسافت ارائه شده است. با استفاده از این ابزار فایل ها و داده های نرم افزارها و ویندوز چک شده و با آخرین موارد امنیتی تطبیق داده می شوند و در صورت وجود اشکال ما را مطلع می کنند.

SQL LiteSpeed: با استفاده از این نرم افزار می توانید از فایل ها و داده های دیتابیس های مختلف در SQL Server بکاپ بگیرید و آن را به صورت فایل رمزگذاری شده نگه دارید.

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