محافظت از داده ها توسط امضاء دیجیتالی در SQL Server

محافظت از داده ها توسط امضاء دیجیتالی در SQL Server

نوشته شده توسط: حمید فرد
تاریخ انتشار: ۰۵ شهریور ۱۳۹۴
آخرین بروزرسانی: ۲۷ خرداد ۱۴۰۳
زمان مطالعه: 5 دقیقه
۰
(۰)

مقدمه

 
چطور می توان این عملیات خرابکارانه در داده ها را تشخیص داد؟ یا چطور می توان داده های تغییر یافته شده توسط سارق را شناسایی کرد؟

یک داستان

یک شرکت بازرگانی املاک وجود دارد که در حال حاضر دارای سیستم فروش است. در این سیستم فروش یک قابلیتی وجود دارد به نام «قراردادها» که کاربر می تواند اطلاعات کلیدی قرارداد را وارد کند اعم از قیمت- مقدار درصد کمیسیون و البته نام کاربر سیستم. در این شرکت شخص یا اشخاصی هستند که توانایی بستن قرارداد را ندارند و برای اینکه از کار بی کار نشوند دست به تغییرات اطلاعات کلیدی کاربران دیگر می زنند!
در SQL Server ما توانایی این را داریم که داده ها را به صورت دیجیتالی توسط صاحب داده امضاء شود. امضاء کردن داده توسط Private Key در Certificate یا در Asymetric Key قابل انجام است. در نظر داشته باشید که Private Key باید فقط و تنها در دست صاحب امضاء و Public Key در دست دیگر کاربران برای تغیید امضاء باشد.

مدیران پایگاه داده می توانند داده های را به ترتیب مراحل زیر امضاء دیجیتالی کنند.

۱- گواهینامه و صاحب داده باید با هم جفت شوند.
۲- امتیاز کنترول گواهینامه از عموم باید گرفته شود.
۳- امضاء دیجیتالی توسط SignByCert.
۴- تشخیص امضاء صاحب داده توسط VerifySignedByCert.
کد زیر برای داستان بالا ساخته شده است.
نکته : کد بالا را کپی نکنید! تایپ کنید!ُ

چه رتبه ای می‌دهید؟

میانگین ۰ / ۵. از مجموع ۰

اولین نفر باش

title sign
معرفی نویسنده
حمید فرد
مقالات
6 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
حمید فرد
پروفایل نویسنده
title sign
معرفی محصول
title sign
دیدگاه کاربران

    •  حمید جان مقاله بسیار جالب و کاربردی بود ، ممنونم 

    • حمید عزیز و همچنین سایر دوستان

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

      •  بیومتریک از طریق دستگاه های جانبی امکان اجرا هست و اینکه این روش فقط از طریق نرم افزار ساخته شده امکان پذیر است برای سناریو ایی که هر کاربر فقط داده های خود را بتواند بازیابی و تغییر دهد و اینکه یک مشکل خیلی بزرگ وجود دارد به مثال زیر توجه کنید: 

        سازمان اکس اکس از این تکنیک استفاده کرده حال یکی از کارمندان می خواهد استفاع بدهد چنانچه از بیومتریک استفاده شود آن داده ها غیر قابل بازیابی برای سازمان است مگر اینکه داده به شخص دیگری محول شود که از این نظر توی قسمت Audit به مشکل بر می خورید.
        لطف کنید در پیاده سازی نرم افزار و پایگاه داده از کمترین پیچیده گی استفاده کنید.
    • سیاوش: شما درست می گید و اینکه اصلا دیگر قوه قهریه نیست یک سوء تفاهم بود که به نظرم رفع شد. البته این مورد را ذاکر بشم که بنده هیچوقت فکر نکردم که همه چیز رو درباره اس کیو ال می دونم. 

      شاید به دلیل اینکه من زیاد با ایرانی ها کار نکردم خلق و خویم تغییر یافته. به هر حال اگر ببینم مقاله ای به درد نیک آموز می خوره انتشار می دهم.
      فرید: به نظر من اگر یک Terms & Conditions برای قسمت نظرات ارایه بدید که با تایید آن ما بتوانیم نظرات خود را به صورت همزمان در سایت گذاشته و اگر نظری با قوانین سایت مقایرت داشت توسط شما پاک شود. این روش بنظر بهینه تر از روش حاضر است.
      به هر حال من از وضعیت پیش آمده از دوستان عذر خواهی می کنم.
    •  با سلام
      این موضوع را قبلا هم توضیح دادم که نمی خواهیم ماهیت سایت از یک سایت آموزشی به سایت خبری تبدیل شود اگر ما هر روز ۵ مقاله منتشر کنیم هم جذابیت از بین می رود و هم مطالب دوستان خوانده نمی شود.

      ولی هر کدام از دوستان همان روز که نظر می گذارند همان روز یا چند دقیقه بعد نظرشان منتشر می گردد و پروسه بررسی فنی مثل مقالات ندارند.

      البته الان یک دستورالعمل درست کردم که بزودی در قسمت مقالات سایت قرار خواهد گرفت و دوستان طبق آن دستورالعمل می توانند مقالات خود را برای سایت ارسال کنند.

      تایید نظرات ساده و … توسط دوستان دیگر انجام می گردد و نظراتی که نیاز به بررسی دارند را به شخصه می خوانم و یک ایمیل شخصی برای فرد ارسال می کنم یا اگر نیاز باشد مذاکره ای انجام می گردد، و بر اساس برخی اصول نظر یا منتشر می گردد یا اصلا منتشر نمی گردد.
      ولی تا الان نظری را حذف نکردیم.

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

      امیدوارم این بحث همین جا خاتمه پیدا کند و چون ادامه آن هیچ سودی نخواهد داشت.

    •  مطلب خوب و مفیدی بود ممنون

    •  درج همراه با تاخیر مطالب بر روی سایت مسله آزار دهنده ای است که کم و بیش دوستانی که مقاله مینویسند و یا کامنت میگذارند اون رو تجربه کردن حمید, اما نباید از حق هم گذشت که این سایت با اینکه سالهاست راه اندازی شده ولی عملا تازه چند ماهه که به شکل جدی شروع به کار کرده و طبیعتا هنوز منابع کافی برای پاسخ گویی سریع ندارند و نمیشه انتظار یک سرویس تمام و کمال رو امروز ازشون داشته باشیم (البته قطعا در آینده نه چندان دور این انتظار خواهد رفت), از طرفی با توجه به عرف کاری ایران, این دو برادر تو همین زمان کوتاه قدم های خوب , سریع و هوشمندانه ای برداشتن. بنظرم کمی صبر و بردباری میتونه مانع از بروز اختلاف و جدایی تو جامعه کوچک ادمین های اس کیو ال ما بشه. چه بسا از قسمت تماس با ما, شما هم مانند برخی از ما میتونی با سایت ارتباط برقرار کنی و دلیل تاخیر رو جویا شی تا خدای ناکرده مثل امروز سؤتفاهم ای ایجاد نشه. البته در این بین جا داره از فرید هم بخوایم تو قسمت ثبت نام سایت یا حتی تو قسمت درج کامنت ها این موضوع رو به اطلاع کاربران برسونه که ارسال مقاله و کامنت بدلیل پروسه بررسی با تاخیر و حداکثر طی مدت مشخصی انجام میشه و نهایت سعی اش رو بکنه, تو اون مدت مشخص پروسه رو به اتمام برسونه(فکر میکنم علاوه بر آقای حافظی خیلی از دوستان تو همین سایت هستن که حاضر هستند بدون هیچ توقعی به سایت کمک کنند, چه بسا اینگونه سرعت بررسی ها افزایش پیدا کنه)

      جمله آخر اینکه هیچکس کامل نیست و هیچکس هم نمیتونه ادعا کنه حرفه ای ترین اس کیو ال من موجود در این سایته. هرکسی ,هم موضوعاتی برای یاد دادن داره, هم برای یادگرفتن و خوب میدونیم که همیچ وقت یادگیری تموم نمیشه, پس نیازی به استفاده از قوه قهریه توسط طرفین (چه مسعود و چه شما) هم نیست. (یه شعری بود که میگفت :آسوده مباش که بی نیازی, یک آن دگر پر از نیازی, آنجا که تو فرعون زمانی, در تیر رس باد خزانی)
      حمید و مسعود, جسار ت و پر حرفی بنده رو ببخشید. حمید امیدوارم شما هم همچنان ارتباط ارزشمند و گران مایه ات رو با سایت حفظ کنی و از ما آموخته و به ما بیاموزی.
      آقای طاهری/حافظی اگر صلاح دونستید میتونید این متن رو تو کامنت ها به صورت عمومی نگذا رید, چون این بحث ربطی به این مقاله نداره, اما شاید مطلع کردن حمید و مسعود از این کامنت, اقدام مناسبی جهت بازگشت و حفظ جو مناسب سایت و روابط فی ما بین باشه.
      تشکر
    •  جناب طاهری: تا جایی که بنده در سایتهای خارجی نظر می دهدم نیازی به تایید نویسنده نیست. همان لحظه ثبت می شود و دیگران می توانند آن را بخوانند.

      درباره نکته دوم: تمامی آنها Data Page هستند فقط نوع شان از نظر عملکرد فرق می کند. وقتی شما … می گذارید یعنی CLR – Execution Plan – User Connection Tokens – Scheduler Worker Task Info. و بقیه قسمتها هم در Buffer Pool بارگذاری می شوند.
      درباره نکته سوم: اگر ممکن است در مقالات یا گزارشات بعدی تصاویر و نوشته ها را به صورت مرتب دسته بندی کنید.
      البته بنده نگفته ام که شما خواهش کردید! به هر حال!
      • این موضوع در ایران امکان پذیر نیست از کجا معلوم نظرات اشخاص سیاسی و… نباشه اون موقع به راحتی سایت مثل آب خوردن فیلتر میشه. متاسفانه از این موضوع یکبار ضربه خورده ایم. 
        در ضمن در ضمن از … برداشت های زیادی میشه کرد سر کلاس هم من اشاره به انواع Pageها کرده ام در توضیحات هم انواع Pageها هم گفته ام چی است
        درباره نکته سوم بلی باید کلی توضیح می دادم درست است اما در هر حداقل جمله ای که اشاره کرده ام کار دستور DBCC MemoryStatus را توضیح داده و چون بحث Buffer Pool را شرح داده ایم تصویر مربوط به آن را گذاشته ایم بدون توضیح اضافی و…
        در ضمن در دانش و سطح علمی هیچ شکی نیست و اصلا هدف من سرکوب و… نمی باشد. چون اعتقاد دارم کسی که MCM را گرفته واقعا دانش بالا و… دارد
        در هر حال موفق باشید و ما خوشحال می شویم که شما در سایت ما حضور داشته باشید
    • حمید عزیز

      به مباحث زیر دقت کنیداین موارد جژء الزامات CMSها می باشد.
      ۱- زمانی که شخصی نظر ارائه می کند اگر نویسنده مقاله خود شخص نباشد  نظرات مربوط به او بدون تایید مدیر نمایش داده نمی شود. نظراتی که شما ارائه می دهید همان دقیقه توسط مدیر تایید نمی شود. ممکن است مدتی بررسی آن طول بکشد بنابراین فکر نکنید نظر شما حذف می شود. 
      ضمنا اگر هم دوست ندارید مقاله ای در سایت ارائه دهید هیچ مشکلی نیست ما از شما خواهش نکردیم که در سایت ما مقاله ارائه دهید. همیشه به دوستان گفته ایم خوشحال می شویم که مقالات خود را در سایت ارائه دهند شما در ساعات ۱۴:۳۰ و ۱۴:۳۲ دقیقه در گزارش دوره نظر داده اید که هنوز توسط مدیر سایت بررسی نشده بود همین.
      ۲- اما در مورد اشکالات بنده در هر کجایی اشتباه کرده باشم می پذیرم و اصلا توجیح نمی کنم به همین راحتی در ضمن مقاله مربوط به این موضوعات در این آدرس است 
      در مورد نکته ۱ : بلی نظر شما درست نباید بگویم کنترل Transaction باید بگویم استفاده از پروسه Recovery …..
      در مورد نکته ۲ :   در متن گفته شده است یکی از بزرگترین بخش‌های حافظه RAM متعلق به SQL Server است که محل قرار گیری Data Page، Index Pageها و … می‌باشد تا جایی که اطلاع دارم Data Page ، Index Page ، IAM Page ، GAM_PAGE،TEXT_MIX_PAGE   و… متفاوت از هم است Page Type آنها با هم فرق می کنند خروجی کوئری زیر دقیقا این موضوع را نشان می دهد. 
      SELECT DISTINCT page_type from sys.dm_os_buffer_descriptors 
      همچنین Pageهایی از نوع Text,Imageمخصوص LOB ها بوده که توصیه شده از دیتا تایپ های آن استفاده نکنیم که این نوع پیج ها هم در Buffer Pool ذخیره می شوند  
      در مورد نکته ۳ : در متن گفته شده است که 
      برای مشاهده قسمت‌های مختلف حافظه متعلق به SQL Server می‌توانید از دستور زیر استفاده کنید 
      DBCC MemoryStatus
      تصویری که گذاشتیم صرفا قسمت Buffer Pool را نمایش می دهد . جمله بالایی را بادقت بخونید جمله به یک موضوع خاص اشاره داره و عکس به یک موضوع خاص دیگر (که عکس در مورد Buffer Pool است هیچ توضیحی هم بابت اون ندایدم که Dirty Page چیه و… / فقط منظور این است که می توان وضعیت حافظه ای تخصیص یافته  Buffer Pool را با استفاده از این دستور مشاهده کرد)
    • حمید عزیز

      به مباحث زیر دقت کنیداین موارد جژء الزامات CMSها می باشد.
      ۱- زمانی که شخصی نظر ارائه می کند اگر نویسنده مقاله خود شخص نباشد  نظرات مربوط به او بدون تایید مدیر نمایش داده نمی شود. نظراتی که شما ارائه می دهید همان دقیقه توسط مدیر تایید نمی شود. ممکن است مدتی بررسی آن طول بکشد بنابراین فکر نکنید نظر شما حذف می شود. 
      ضمنا اگر هم دوست ندارید مقاله ای در سایت ارائه دهید هیچ مشکلی نیست ما از شما خواهش نکردیم که در سایت ما مقاله ارائه دهید. همیشه به دوستان گفته ایم خوشحال می شویم که مقالات خود را در سایت ارائه دهند شما در ساعات ۱۴:۳۰ و ۱۴:۳۲ دقیقه در گزارش دوره نظر داده اید که هنوز توسط مدیر سایت بررسی نشده بود همین.
      ۲- اما در مورد اشکالات بنده در هر کجایی اشتباه کرده باشم می پذیرم و اصلا توجیح نمی کنم به همین راحتی در ضمن مقاله مربوط به این موضوعات در این آدرس است 
      در مورد نکته ۱ : بلی نظر شما درست نباید بگویم کنترل Transaction باید بگویم استفاده از پروسه Recovery …..
      در مورد نکته ۲ :   در متن گفته شده است یکی از بزرگترین بخش‌های حافظه RAM متعلق به SQL Server است که محل قرار گیری Data Page، Index Pageها و … می‌باشد تا جایی که اطلاع دارم Data Page ، Index Page ، IAM Page ، GAM_PAGE،TEXT_MIX_PAGE   و… متفاوت از هم است Page Type آنها با هم فرق می کنند خروجی کوئری زیر دقیقا این موضوع را نشان می دهد. 
      SELECT DISTINCT page_type from sys.dm_os_buffer_descriptors 
      همچنین Pageهایی از نوع Text,Imageمخصوص LOB ها بوده که توصیه شده از دیتا تایپ های آن استفاده نکنیم که این نوع پیج ها هم در Buffer Pool ذخیره می شوند  
      در مورد نکته ۳ : در متن گفته شده است که 
      برای مشاهده قسمت‌های مختلف حافظه متعلق به SQL Server می‌توانید از دستور زیر استفاده کنید 
      DBCC MemoryStatus
      تصویری که گذاشتیم صرفا قسمت Buffer Pool را نمایش می دهد . جمله بالایی را بادقت بخونید جمله به یک موضوع خاص اشاره داره و عکس به یک موضوع خاص دیگر (که عکس در مورد Buffer Pool است هیچ توضیحی هم بابت اون ندایدم که Dirty Page چیه و… / فقط منظور این است که می توان وضعیت حافظه ای تخصیص یافته  Buffer Pool را با استفاده از این دستور مشاهده کرد)
هر روز یک ایمیل، هر روز یک درس
آموزش SQL Server بصورت رایگان
همین حالا فرم زیر را تکمیل کنید
دانلود رایگان جلسه اول
نیک آموز علاوه بر آموزش، پروژه‌های بزرگ در حوزه هوش تجاری و دیتا انجام می‌دهد.
close-link
ثبت‌نام دوره‌های آنلاین تابستانه نیک‌آموز شروع شد 🏄
مشاهده سرفصل و رزرو رایگان
close-image