امنيت SQL Server – قسمت پنجم – رمزگذاری داده‌ها و امنيت يكپارچه CLR

امنيت SQL Server – قسمت پنجم – رمزگذاری داده‌ها و امنيت يكپارچه CLR

تاریخ ایجاد

IRCAR201405216
تاريخ: 5/3/93

1- مقدمه
SQL Server ويژگي‌هاي زيادي دارد كه ايجاد برنامه‌هايي با پايگاه داده امن را پشتيباني مي‌كند. صرفنظر از نسخه SQL Server، ملاحظات امنيتي معمول مانندسرقت داده‌ها و جامعيت داده‌ها در اين نرم‌افزار در نظر گرفته مي‎شود. درصورتي‌كه داده‌ها محافظت نگردند، ممكن است به علت دستكاري و تغييرات غيرعمدي يا خرابكارانه پاك شوند يا تغيير يابند و ارزش خود را از دست بدهند. بعلاوه، اغلب بايد مسائلي مانند ذخيره‌سازي صحيح اطلاعات محرمانه نيز مورد توجه قرار گيرد.
هر نسخه از SQL Server مانند هر نسخه از ويندوز، ويژگي‌هاي امنيتي متفاوتي نسبت به نسخه‌هاي پيشين خود دارد و نسخه‌هاي جديدتر، عملكرد بهتري نسبت به نسخه‌هاي پيشين دارند.
اين مهم است كه درك كنيم كه ويژگي‌هاي امنيتي به تنهايي قادر به تضمين يك برنامه پايگاه داده امن نيستند. هر برنامه پايگاه داده از جهت ملزومات، محيط اجرا، مدل اجرا، موقعيت فيزيكي و تعداد كاربران منحصر به فرد است. ممكن است برخي برنامه‌هاي محلي نيازمند امنيت حداقلي باشند، درحالي‌كه ساير برنامه‌هاي محلي و يا برنامه‌هايي كه بر روي اينترنت به كار گرفته مي‌شوند ممكن است به معيارهاي امنيتي قوي‌تر و مانيتورينگ و ارزيابي دائم نياز داشته باشند.
ملزومات امنيتي يك برنامه پايگاه داده SQL Server بايد در زمان طراحي در نظر گرفته شود نه پس از آن. ارزيابي تهديدات در ابتداي چرخه توسعه برنامه اين فرصت را در اختيار شما قرار مي‌دهد كه خسارت بالقوه را در هرجايي كه يك آسيب‌پذيري شناسايي مي‌شود، كاهش دهيد.
حتي اگر طراحي اوليه يك برنامه بي‌عيب و نقص باشد، باز هم تهديدات جديد ممكن است در زمان بهره‌برداري از سيستم رونمايي كنند. با ايجاد خطوط دفاعي مختلف براي پايگاه داده، مي‌توانيد خسارت وارد شده توسط يك نشت امنيتي را به حداقل برسانيد. نخستين خط دفاعي، كاهش سطح حمله با اعطاي مجوزهاي حداقلي و رعايت اصل حداقل دسترسي است.
در قسمت قبلي مجموعه مقالات امنيت SQL Server، به نماي كلي امنيت SQL Server، انواع سناريوهاي احراز هويت در SQL Server، و تفويض اختيار و مجوزها در SQL Server پرداختيم. اين بخش از اين مجموعه مقالات به طور مختصر به توضيح رمز گذاري داده‌ها و امنيت يكپارچه CLR در SQL Server مي‌پردازد.

2- رمزگذاري داده‌ها در SQL Server
SQL Server توابعي را براي رمزگذاري و رمزگشايي داده‌ها با استفاده از يك كليد نامتقارن يا يك كليد متقارن، فراهم مي‌آورد. SQL Server تمامي اين فعاليت‌ها را در يك محل ذخيره‌سازي (حافظه) دروني گواهينامه مديريت مي‌كند. اين حافظه از يك سلسله مراتب رمزگذاري استفاده مي‌كند كه گواهينامه‌ها و كليدها را در يك سطح با لايه‌اي بر روي آن در اين سلسله مراتب، امن‌سازي مي‌كند. اين محدوده SQL Server تحت عنوان حافظه محرمانه (Secret Storage) شناخته مي‌شود.
سريع‌ترين مود رمزگذاري پشتيباني شده توسط توابع رمزگذاري، رمزگذاري با استفاده از كليدهاي متقارن است. اين مود رمزگذاري براي مديريت حجم زيادي از داده‌ها مفيد بوده و مورد استفاده قرار مي‌گيرد. كليدهاي متقارن رمزگذاري مي‌توانند توسط گواهينامه‌ها، كلمات عبور يا ساير كليدهاي متقارن رمزگشايي شوند.
2-1- كليدها و الگوريتم‌ها
SQL Server چندين الگوريتم متفاوت رمزگذاري با استفاده از كليد متقارن را پشتيباني مي‌كند. از جمله اين الگوريتم‌هاي كليد متقارن مي‌توان به DES، Triple DES، RC2، RC4، 128-bit RC4، 128-bit AES و 256-bit AES اشاره كرد. قابل ذكر است كه تمامي الگوريتم‌هاي مذكور با استفاده از Windows Crypto API پياده‌سازي مي‌شوند.
SQL Server در داخل قلمرو يك ارتباط پايگاه داده مي‌تواند چندين كليد متقارن باز را نگهداري كند. يك كليد باز از حافظه بازيابي مي‌گردد و براي رمزگشايي داده‌ها در دسترس قرار مي‌گيرد. زماني كه داده‌اي رمزگشايي مي‌شود، نيازي نيست كه كليد متقارن مورد استفاده براي اين رمزگشايي مشخص گردد. چرا كه هر داده رمز شده شامل يك شناسه كليد (key GUID) مربوط به كليد مورد استفاده براي رمز كردن همان داده مي‌باشد. درصورتي‌كه كليد صحيح رمزگشايي شده و باز باشد، موتور SQL Server جريان بايت رمز شده را با اين كليد متقارن باز تطبيق مي‌دهد. سپس اين كليد براي انجام عمليات رمزگشايي مورد استفاده قرار گرفته و داده‌هاي رمزگشايي شده را باز مي‌گرداند. اما درصورتي‌كه كليد صحيح باز نباشد، مقدار NULL بازگردانده مي‌شود.

3- امنيت يكپارچه CLR در SQL Server
Microsoft SQL Server، يكپارچه‌سازي جزء CLR فريم ورك .NET را فراهم مي‌آورد. يكپارچه‌سازي CLR به شما اجازه مي‌دهد كه روال‌هاي ذخيره شده، تريگرها، انواع (type ها) تعريف شده توسط كاربر، توابع تعريف شده توسط كاربر، توابع تجميعي (aggregate ها) تعريف شده توسط كاربر، و توابع streaming table-valued را با استفاده از هر زبان فريم ورك .NET مانند Microsoft Visual Basic .NET يا Microsoft Visual C#، بنويسيد.
CLR يك مدل امنيتي به نام مدل امنيتي دسترسي كد (CAS) را براي كدهاي مديريت شده پشتيباني مي‌نمايد. در اين مدل، مجوزها بر اساس شواهد تأمين شده توسط كد در متاديتا به assembly ها تخصيص مي‌يابند. SQL Server، مدل امنيتي مبتني بر كاربر SQL Server را با مدل امنيتي مبتني بر دسترسي كد CLR مجتمع مي‌سازد.

برچسب‌ها