رمز نگاری روال های ذخیره شده و View ها در پایگاه داده
  در این ترفند به معرفی روش بسیار ساده ای جهت رمز نگاری محتوای روال های ذخیره شده و View ها در پایگاه داده می پردازم.
   SQL Server
   ۱۵۳۴۷
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۸۸/۱۱/۵
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

یکی از مشکلاتی که طراحان پایگاه داده و توسعه گران با آن روبرو هستند این است که اگر شخصی به پایگاده داده دسترسی داشته باشد در حقیقت به محتوای تمام روال های ذخیره شده (stored procedure) و View ها دسترسی دارد.

با توجه به اینکه معمولا پایگاه  داده برنامه ها بر روی سرور های اشتراکی(shared servers) بارگزاری می شوند، دیگر نمی توان به عدم دسترسی برخی افراد به محتوای روال های ذخیره شده و View ها اطمینان خاطر صد در صد داشت و حتی اگر اینگونه نباشد، باز هم مدیر سرور و سایر افرادی که دسترسی کافی بر روی سرور دارند نیز می توانند محتوای روال های ذخیره شده را ملاحظه نمایند و این موضوع می تواند مورد استفاده افراد بدخواه قرار گیرد.

برای حل این مشکل راه حل بسیار ساده ای برای پایگاه داده SQL Server وجود دارد که متاسفانه کمتر مورد استفاده قرار می گیرد.

هنگام ایجاد و یا تغییر یک روال ذخیره شده یا یک View می توانیم براحتی محتوای آن را رمزنگاری کنیم.

به تعریف روال ذخیره شده زیر دقت نمایید.

CREATE PROCEDURE uspSampleProcedure
WITH ENCRYPTION
AS
BEGIN

    SELECT Field1,Field2 FROM MyTable
END

همانطور که ملاحظه می نمایید، تنها با استفاده از کلمه ی کلیدی Encryption ما محتوای این روال را رمز نگاری نموده ایم. اکنون اگر با استفاده از Management Studio این روال را مورد بررسی قرار دهیم، متوجه خواهیم شد که یک علامت قفل بر روی آن ایجاد شده است. و در صورتی که روی روال کلیک راست نماییم، ملاحظه می کنیم که گزینه Modify غیر فعال شده است و در نتیجه محتوای این روال برای هیج شخصی قابل نمایش نمی باشد.

رمز نمودن یک روال ذخیره شده، پس از ایجاد نیز قابل انجام است.

در صورتی که شما قبلا یک روال ذخیره شده را ایجاد نموده اید با استفاده از دستور Alter می توانید این عمل را انجام دهید. به مثال زیر توجه نمایید.

ALTER PROCEDURE uspSampleProcedure
WITH ENCRYPTION
AS
SELECT Field1,Field2 FROM MyTable

عملکرد قطعه بالا کاملا مشخص می باشد.

مطالب ذکر شده جهت رمز نگاری یک روال ذخیره شده به شکل کاملا مشابهی می تواند برای یک View نیز انجام شود.

به مثال زیر دقت نمایید.

CREATE VIEW vwSample
WITH ENCRYPTION
AS
SELECT
Field1,Field2 FROM MyTable

محتوای این View نیز رمز شده است.

در مورد View نیز می توان پس از ایجاد، آن را رمز نگاری کرد.

ALTER VIEW vwSample
WITH ENCRYPTION
AS
SELECT
Field1,Field2 FROM MyTable

تذکر بسیار بسیار مهم:

با توجه به اینکه پس از رمز نگاری روال های ذخیره شده و View ها، دیگر دسترسی به محتوای آن ها امکان پذیر نمی باشد، به یاد داشته باشید که قبل از رمز نگاری این عناصر، حتما یک نسخه پشتیبان برای خود نگهداری نمایید و در غیر اینصورت دیگر خود شما نیز به محتوای این عناصر دسترسی نخواهید داشت!