درس شانزدهم – امنیت در SQL Server

یکی از مهم‌ترین بخش‌هایی که باید به آن توجه کرد امنیت در SQL است که اگر درست به آن توجه نکنیم می‌تواند باعث ایجاد مشکلات امنیتی و درز اطلاعات مهم سازمان خواهد شد.

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

۴-۱ روش‌های احراز هویت

برای اینکه روش‌های احراز هویت در SQL Server 2022 را بررسی کنیم بهتر است صفحه‌ی اول نرم‌افزار SSMS را مشاهده کنید که در شکل ۱-۴ مشخص شده است.

شکل ۱-۴  احراز هویت

همان‌طور که در شکل ۱-۴ مشاهده می‌کنید احراز هویت SQL از چند قسمت تشکیل شده است که در زیر همه‌ی آنها را بررسی خواهیم کرد:

Windows Authentication

یک روش احراز هویت است که در سرویس‌گیرنده‌های ویندوزی تعبیه شده است، این یک روش پیش‌فرض است که خود ویندوز بر روی آن تأکید می‌کند، در زمان نصب SQL این روش به‌صورت پیش‌فرض اجرا خواهد شد و کاربر مورد نظر برای ورود به SQL تأیید خواهد شد.

اصولاً سازمان‎ها برای مدیریت آسان‌تر کاربران یک سرویس Active directory در شبکه خود ایجاد می‌کنند و کاربران را به‌صورت متمرکز در آن تعریف می‌کنند و بعد می‌توان از طریق احراز هویت Windows Athentication به این کاربران دسترسی داد، اصولاً هر کاربر در ویندوز یک شماره‌ی خاص با نام SID دارد که با بقیه متمایز خواهد بود.

SQL Server Authentication

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

۴-۲ ایجاد کاربر و اعطای دسترسی به آن

همان‌طور که در اوایل کتاب گفتیم، زمانی که سرور SQL را عضو شبکه دامین می‌کنید، می‌توانید از کاربران Active Directory برای دسترسی به SQL استفاده کنید و مجوز‌های لازم را برای آن در نظر بگیرید، اما اگر بخواهید کاربر محلی در SQL ایجاد کنید باید به‌مانند شکل ۲-۴ این کار را انجام دهید:

در شکل ۳-۴ باید کاربر خود را ایجاد کنید، در قسمت Login Name باید نام کاربر خود را وارد کنید و در زیر آن SQL Server Authentication را انتخاب کنید، با انتخاب این گزینه شما یک کاربر در داخل SQL Server ایجاد می‌کنید.

شکل ۳-۴ ایجاد کاربر

یک رمز عبور پیچیده وارد کنید مانند Test@12345، اگر می‌خواهید رمز عبور شما با خط مش سازمان شما یکی باشد باید تیک گزینه‌ی Enforce password policy را انتخاب کنید، خط مش سازمان برای رمز عبور می‌‌تواند موارد زیر باشد:

زمانی که این گزینه را انتخاب می‌کنید باید موارد زیر رعایت شود:

  • رمز عبور نباید شامل نام کاربری باشد.
  • رمز عبور حداقل هشت کاراکتر باشد.
  • رمز عبور باید شامل حروف (a-z)، (A-Z) و اعداد (۰-۹) باشد.
  • رمز‌های غیر‌الفبایی مانند: تعجب (!) ، علامت دلار ($) ، علامت عدد (#) یا درصد(٪).

در ادامه کار اگر تیک گزینه‌ی Enforce Password Expiration  را انتخاب کنید به این معنا است که یک تاریخ برای انقضاء رمز عبور کاربران در نظر گرفته خواهد شد و قبل از اینکه تاریخ انقضاء برسد به کاربران هشدار‌های لازم داده خواهد شد تا رمز عبور خود را تغییر دهند.

گزینه‌ی User Must Change Passeowrd at next Login را انتخاب کنید کاربر بعد از ورود باید رمز عبور را خودش تغییر دهد.

در آخر شکل ۳-۴ می‌توانید کاربر مورد نظر را به دیتابیس مورد نظر خود تخصیص دهید، تا دسترسی اولیه به آن را داشته باشد.

در ادامه کار به‌مانند شکل ۴-۴ وارد تب Server Role شوید، در این قسمت گزینه‌های مختلف دسترسی وجود دارد که در جدول ۱-۴ به طور کامل آن را بررسی می‌کنیم.

شکل ۴-۴ دسترسی به کاربر

جدول ۱- ۴ بررسی Role دسترسی

نام Role

توضیحات

sysadmin

کاربران عضو sysadmin  میتوانند هر فعالیتی را در سرور انجام دهند. یعنی آزاد و رها هستند.

serveradmin

کاربران عضو serveradmin می‌توانند پیکربندی سرور مورد نظر را تغییر دهند و همچنین می‌توانند سرور را خاموش کنند.

securityadmin

اعضای گروه securityadmin می‌توانند قسمت Login و جزئیات آنها را مدیریت کنند، کاربرانی که عضو این نقش هستند توانایی این را دارند که مجوز‌های سطح سرور را اعطا کنند مانند GRANT و DENY و یا REVOKE ، آنها همچنین می‌توانند در صورت دسترسی به دیتابیس مجوز‌های آن را هم مدیریت کنند، علاوه بر این هم آنها می‌توانند رمز‌های عبور کاربران را ریست کنند.
به این نکته توجه کنید که این نقش بسیار قدرتمند است و باید مواظب باشید که به هر کاربری آن را اعطا نکنید، این نقش معادل نقش sysadmin در سرور است.

processadmin

کاربرانی که عضو نقش processadmin باشند می‌توانند فرایند‌های در حال اجرا را خاتمه دهند.

setupadmin

کاربران این نقش می‌توانند با استفاده از زبان پرس‌وجو یا همان Transact-SQL سرور‌ها SQL را اضافه یا حذف کنند، البته در صورت استفاده از Management Studio کاربر مورد نظر حتماً باید عضو sysadmin هم باشد.

bulkadmin

اعضای نقش bulkadmin  می‌توانند دستور BULK INSERT را اجرا کنند (دستور BLUNK INSERT می‌تواند با استفاده از فایل‌های txt یا csv مقادیر زیادی از اطلاعات را به جداول اضافه کند).

diskadmin

کاربران عضو نقش diskadmin می‌توانند فایل‌های موجود بر روی دیسک را مدیریت کنند.

dbcreator

کاربران دارای نقش dbcreator می‌توانند هر پایگاه داده‌ای را ایجاد، مدیریت و حذف کنند و حتی می‎توانند پایگاه‌داده‌‎ی مورد نظر را بازیابی کنند.

public

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

برای اینکه به کاربر ali دسترسی کامل دهیم تیک گزینه‌ی securityadmin را به‌مانند شکل ۵-۴ انتخاب می‌کنیم.

شکل ۵-۴ دسترسی به کاربر

در ادامه کار وارد تب User Mapping شوید در این صفحه که در شکل ۶-۴ مشخص شده است، شما می‌توانید مشخص کنید که کاربر مورد نظر بر روی کدام دیتابیس دسترسی لازم را داشته باشد.

شکل ۶-۴ دسترسی به دیتابیس

در پایین شکل ۶-۴ که در شکل ۷-۴ مشخص شده است چندین Role وجود دارد که می‌توانید برای دسترسی به دیتابیس توسط کاربر مورد نظر مشخص کنید، برای اینکه بیشتر با گزینه‌های مورد نظر آشنا شویم به جدول ۲-۴ توجه کنید.

شکل ۷-۴ دسترسی به دیتابیس

جدول ۲- ۴ Role دسترسی

نام Role

توضیحات

db_owner

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

db_securityadmin

اعضای این نقش توانایی تغییر عضویت در نقش‌ها را دارند و همچنین می‎توانند وظیفه مدیریت اختیارات را برعهده دارند.

db_accessadmin

این نقش به کاربران این اجازه را می‌دهد که بر روی Login کردن در SQL نظارت و دسترسی داشته باشد.

db_backupoperator

این قابلیت را به کاربران می‌دهد تا بتوانند از پایگاه‌داده پشتیبان تهیه کنند.

db_ddladmin

اعضای این گروه توانایی اجرای دستورات از نوع DDL   را دارند.

db_datawriter

اعضای این گروه توانایی تغییر، حذف، و اضافه‌کردن هیچ اطلاعاتی را در جدول‌های تعریف شده توسط کاربر ندارند.

db_datareader

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

db_denydatawriter

اعضای این نقش نمی‌توانند داده‌های موجود در جداول کاربران موجود در یک پایگاه‌داده را اضافه، اصلاح یا حذف کنند.

db_denydatareader

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

در شکل ۸-۴ تیک گزینه‌ی db_securityadmin را انتخاب کنید تا کاربر مورد نظر دسترسی کامل به دیتابیس داشته باشد.

شکل ۸-۴ دسترسی به دیتابیس

بعد از انجام کار می‌توانید بر روی OK کلیک کنید تا کاربر مورد نظر ایجاد شود، بعد از ایجاد کاربر به‌مانند شکل ۹-۴ بر روی کاربرمورد نظر کلیک راست کنید و گزینه‌ی Properties را انتخاب کنید.

شکل ۹-۴ بررسی کاربر

در شکل ۱۰-۴ جزئیات مربوط به کاربر ali را مشاهده می‌کنید، در تب Securables یک سری دسترسی‌های پیشرفته وجود دارد که می‌توانید از طریق مدیر SQL به کاربران و دیتابیس مورد نظر اعطا کنید.

شکل ۱۰-۴ بررسی تب Securables

در تب Status که در شکل ۱۱-۴ مشخص شده است می‌توانید مشخص کنید که کاربر مورد نظر توانایی متصل شدن به Database Engine را داشته باشد یا نه و یا اینکه کاربر مورد نظر را فعال و یا غیرفعال کنید.

شکل ۱۱-۴ بررسی قسمت Status

اگر بخواهیم یک کاربر از طریق Active Directory را به لیست Logins اضافه کنیم باید به‌مانند شکل ۱۲-۴ بر روی Logins کلیک راست کنید و گزینه‌ی New Login را انتخاب کنید.

شکل ۱۲-۴ ایجاد کاربر Active Directory

در شکل ۱۳-۴ باید گزینه‌ی Windows authentication را انتخاب کنید و بر روی Search کلیک کنید.

شکل ۱۳-۴ ایجاد کاربر Active Directory

در شکل ۱۴-۴ باید از قسمت Location دومین خود را انتخاب کنید و کاربر مورد نظر خود را در کادر مشخص شده وارد کنید تا با کلیک بر روی Check Names آن را پیدا کنید.

شکل ۱۴-۴ ایجاد کاربر Active Directory

اگر به شکل ۱۵-۴ توجه کنید بعد از انتخاب کاربر از نوع دومین دیگر نمی‌توانید رمز عبور و دیگر گزینه‌ها را خودتان وارد و انتخاب کنید بلکه این اطلاعات از طریق سرویس Active Directory انجام می‌گیرد.

شکل ۱۵-۴ ایجاد کاربر Active Directory

همان‌طور که در شکل ۱۶-۴ مشاهده می‌کنید هم کاربر ali و هم کاربر spsql که از نوع دومین بوده به لیست SQL  اضافه شده است، برای اینکه با این کاربران وارد SQL شویم باید بر روی آیکون مورد نظر کلیک کنید.

شکل ۱۶-۴ ایجاد کاربر Active Directory

قبل از اینکه ادامه دهیم باید این نکته را متذکر شویم که برای ورود با کاربر تحت دومین باید با همان کاربر اول وارد ویندوز شوید و بعد از آن می‌توانید با انتخاب windows Authentication از آن کاربر استفاده کنید ولی برای ورود با کاربر ali که از نوع SQL Authentication است باید گزینه‌ی SQL Server Authentication را انتخاب کنید و طبق شکل ۱۷-۴ کاربر ALI را وارد و بر روی Connect کلیک کنید، بعد از کلیک با خطایی روبرو خواهید شد که اجازه ورود به سرور را به کاربر ali نمی‌دهد.

شکل ۱۷-۴ احراز هویت SQL

برای حل خطای شکل ۱۷-۴ باید به‌مانند شکل ۱۸-۴ بر روی سرور کلیک راست کنید و گزینه‌ی Properties را انتخاب کنید.

در شکل ۱۹-۴ وارد تب Security شوید و گزینه‌ی SQL Server and Windows Authentication mode را انتخاب کنید، با این کار هم با احراز هویت SQL و هم Windows می‌توانیم وارد سرور SQL شویم.

شکل ۱۹-۴  احراز هویت SQL

در شکل ۲۰-۴ مشخص شده است که کاربر ali که از نوع SQL Authentication است توانسته وارد سرور SQL شود.

شکل ۲۰-۴  احراز هویت SQL

ایجاد کاربر از طریق Query

یکی دیگر از راه‌های ایجاد کاربر یا موارد خاص دیگر استفاده از دستورات SQL است که در این قسمت می‌خواهیم این کار را انجام دهیم، برای شروع باید بر روی نام سرور SQl کلیک راست کنید و گزینه‌ی New Query را به‌مانند شکل ۲۱-۴ انتخاب کنید.

شکل ۲۱-۴ ایجاد کاربر از طریق Query

در صفحه بازشده‌ی شکل ۲۲-۴ دستورات زیر را وارد کنید و بعد از آن کلید F5 را فشار دهید:

USE [DB1]

CREATE LOGIN [reza] WITH PASSWORD='۱', DEFAULT_DATABASE=[DB1], CHECK_EXPIRATION=ON, CHECK_POLICY=ON

 در دستور بالا و در خط اول باید مشخص کنیم که بر روی چه دیتابیسی قرار است کار کنیم که در اینجا دیتابیس DB1 انتخاب شده است، در خط بعد باید دستورات اصلی را وارد کنیم، با دستور CREATE LOGIN مشخص می‌کنیم که می‌‌خواهیم یک LOGIN جدید ایجاد کنیم که بعد از آن هم در [] نام کاربر را که reza است وارد می‌کنیم و با دستور WITH PASSWORD رمز عبور آن را که حتماً هم باید در ‘’ باشد را مشخص می‌کنیم، در ادامه باید ویژگی‌های این کاربر را مشخص کنیم، مثلاً برای اینکه مشخص کنیم که دیتابیس پیش‌فرضی که کاربر بر روی آن کار می‎کند را باید با دستور DEFAULT_DATABASE=[DB1] مشخص کنیم و بعد از آن می‌‌توانیم ویژگی‌های دیگر آن مانند Enforce Password Policy و Enforce Password Expiration را فعال کنید.

بعد از درست واردکردن دستور مورد نظر بر روی کلید F5 فشار دهید تا به‌مانند شکل ۲۲-۴ کاربر مورد نظر ایجاد شود.

شکل ۲۲-۴ ایجاد کاربر از طریق Query

اگر به شکل ۲۳-۴ توجه کنید، کاربر مورد نظر در لیست Logins قرار گرفته است و برای اینکه بررسی بیشتری داشته باشیم بر روی آن کلیک راست کنید و گزینه‌ی Properties را انتخاب کنید.

شکل ۲۳-۴ بررسی کاربر

همان‌طور که در شکل ۲۴-۴ مشاهده می‌کنید اطلاعات کاربر reza دقیقاً همان چیزی است که در دستورات وارد کردیم.

شکل ۲۴-۴ بررسی کاربر

اگر بخواهیم با استفاده از دستور مشخص کنیم که کاربر مورد نظر فعال باشد و یا غیرفعال باید دستور زیر را وارد کنیم:

ALTER LOGIN reza ENABLE;

 در دستور بالا کاربر reza فعال می‌شود و اگر بخواهید غیرفعال کنید باید از دستور DISABLE استفاده کنید.

کتاب‌های جدید

کتاب آموزشی CCNP ENARSI 300-410
زبان فارسی
۱۲۲۲ صفحه
نسخه PDF

کتاب آموزشی CCNA 200-301
زبان فارسی
۷۱۵ صفحه
نسخه PDF

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Scroll to Top