خانه/ وبلاگ/ Windows vs SQL Authentication
امنیت SQL Server

تفاوت Windows Authentication و SQL Server Authentication

مفاهیم پایه ۲۶ مرداد ۱۴۰۴ ۸ دقیقه مطالعه

وقتی برای اولین بار به یک نمونه (Instance) از SQL Server وصل می‌شوی، SSMS از تو می‌خواهد نوع Authentication را انتخاب کنی: Windows Authentication یا SQL Server Authentication. این انتخاب، دقیقاً مشخص می‌کند سرور چطور هویت تو را تأیید می‌کند — و انتخاب اشتباه، رایج‌ترین علت خطای Login Failed for User است.

Windows Authentication چیست؟

در این روش، SQL Server از حساب کاربری‌ای که هم‌اکنون در ویندوز با آن وارد سیستم شده‌ای استفاده می‌کند. رمز عبور جداگانه‌ای وارد نمی‌کنی — اعتبارسنجی به‌طور کامل توسط ویندوز (یا Active Directory در محیط سازمانی) انجام می‌شود و SQL Server فقط بررسی می‌کند که آیا آن حساب ویندوزی اجازه‌ی دسترسی دارد یا نه.

  • نیازی به مدیریت رمز عبور جداگانه در SQL Server نیست.
  • از سیاست‌های امنیتی مرکزی Active Directory (پیچیدگی رمز، انقضا، قفل‌شدن) بهره می‌برد.
  • گزینه‌ی پیش‌فرض و پیشنهادی مایکروسافت برای محیط‌های سازمانی و داخل دامنه.
  • محدودیت: فقط برای کاربران/سرویس‌هایی که عضو همان دامنه‌ی ویندوزی هستند کاربرد دارد.

SQL Server Authentication چیست؟

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

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

مقایسه‌ی سریع

ویژگیWindows AuthenticationSQL Server Authentication
محل ذخیره‌ی رمز عبورActive Directory / ویندوزداخل خودِ SQL Server
مناسب برایکاربران داخل دامنه‌ی سازمانیبرنامه‌ها/کاربران خارج از دامنه
پیش‌فرض فعال است؟بله، همیشهخیر، باید Mixed Mode فعال شود
سطح امنیت پیشنهادی مایکروسافتبالاتر (SSO و Policy مرکزی)نیاز به مدیریت دستی رمز عبور
نحوه‌ی اتصال در Connection StringTrusted_Connection=TrueUser Id=...;Password=...

کدام را انتخاب کنیم؟

قانون کلی: اگر همه‌چیز داخل یک دامنه‌ی ویندوزی و شبکه‌ی سازمانی اجرا می‌شود، Windows Authentication امن‌تر و کم‌دردسرتر است. اگر برنامه از بیرون دامنه وصل می‌شود (مثلاً یک سرویس ابری، اپلیکیشن لینوکسی، یا اتصال از طریق اینترنت)، ناچار به SQL Server Authentication هستی.

در عمل، بسیاری از سازمان‌ها هر دو روش را هم‌زمان فعال نگه می‌دارند (Mixed Mode) تا هم کاربران داخلی از SSO استفاده کنند و هم برنامه‌های بیرونی بتوانند با Login مخصوص خودشان وصل شوند.

ساخت Login با هر دو روش (T-SQL)

sql
-- ساخت یک Login با SQL Server Authentication
CREATE LOGIN ali_app WITH PASSWORD = N'Str0ngP@ssw0rd!';

-- ساخت یک Login که به یک حساب ویندوزی نگاشت می‌شود
CREATE LOGIN [DOMAIN\ali] FROM WINDOWS;

جمع‌بندی

  • Windows Authentication از حساب ویندوزی فعلی استفاده می‌کند و رمز جداگانه‌ای نیاز ندارد.
  • SQL Server Authentication نام‌کاربری/رمزعبور مستقلی دارد که داخل خودِ SQL Server ذخیره می‌شود.
  • برای استفاده از روش دوم، سرور باید روی Mixed Mode تنظیم شده باشد.

برای یادگیری کامل مفاهیم Login و User، درس Logins را در دوره‌ی SQLFarsi ببین، یا اگر با خطای اتصال روبه‌رو شده‌ای، راهنمای رفع مشکل Login Failed for User را بخوان.

می‌خوای مفاهیم امنیت SQL Server را کامل یاد بگیری؟

فصل امنیت دوره‌ی SQLFarsi، Login، User، Role و Permission را از پایه توضیح می‌دهد.

شروع فصل امنیت