درباره نویسنده

سید سیاوش گلچوبیان

سید سیاوش گلچوبیان

Microsoft SQL Server Database Administrator at SAIPA Automotive CorporationMicrosoft SQL Server Database Consultant at Persian Vision companyMicrosoft SQL Server Database Administration Consultant at Golrang Industrial GroupMicrosoft SQL Server Database Administration & BI Consultant at Rena Technical Services companySpecialist in :Microsoft SQL Server Database Administration & Performance tuningData Warehouse DesignETL programming with Microsoft SQL Server Integration Services - SSISOLAP design with Microsoft SQL Server Analysis Services - SSASMicrosoft SQL Server Reporting Services - SSRS

21 Comments

  1. فرشید علی اکبری

    فرشید علی اکبری

     سلام

    با نوجه باینکه بنده علاقه شدید به استفاده از TDE دارم، در تاپیک هایی که آقای مسعود طاهری در انجمن سابق نیک آموز، آموزش داده بودند این مورد را بلافاصله روی بانک اطلاعاتی مورد نظرم  راه اندازی کردم و خیلی هم ازش راضی بودم تا اینکه SQL SERVER2014 جداول In-Memory OLTP را در دسترس استفاده برنامه نویسان قرار داد و می دونید که متاسفانه یکی از محدودیت های استفاده از این نوع جداول عدم پشتیبانی از TDE هستش.
    حالا سئوال بنده اینه که: درحال حاضر که تا چند ماه دیگه SQL SERVER2016 (نسخه اصلی) به بازار ارائه نخواهد شد، چه راهکاری برای استفاده همزمان TDE و جداول OLTP در نسخه ۲۰۱۴ وجود دارد؟  (با توجه باینکه امکان چشم پوشی از هیچکدام از این دو مورد امکان پذیر نیست).
    با تشکر.
    پاسخ دادن
    1. سید سیاوش گلچوبیان

      سید سیاوش گلچوبیان

       سلام
      روز شما بخیر، متاسفانه تو SQL Server 2014 تا جایی که میدونم نمیشه به هیچ وجه روی اطلاعاتی که داخل فایل گروپ MEMORY_OPTIMIZED_DATA ذخیره میشوند، TDE پیاده سازی کرد (البته باید ذکر کنم که شما میتونید روی دیتابیستون TDE رو فعال کنید، ولی فایل گروپ مذکور مشمول حال مزایای TDE نمیشه)، ولی میتونید به عنوان جایگزین برای حفاظت از اطلاعات داخل جداول In-Memory از متدهای Encryption دیتا های داخل جدول استفاده کنید. البته این با TDE متفاوته ولی امنیت اطلاعات رو با ناخوانا کردنشون برای افراد غیر مجاز تضمین میکنه.

      باتشکر

      پاسخ دادن
      1. فرشید علی اکبری

        فرشید علی اکبری

        سلام

        البته پشنهادی که شما در خصوص Encrypt کردن جداول In_Memory دادید اولین راهکاری هستش که به ذهن برنامه نویس ها میرسه ولی از طرفی هم باید مسائل مربوط به Performance & Tuning رو هم درنظر گرفت چرا که در داده های حجیم Encrypt/Decrypt کردن داده ها تا حدودی زیبایی سرعت چشمگیر این نوع جداول را کمرنگ تر میکنه.
        باوجودیکه مدتی هستش نسخه ۲۰۱۶ رو نصب کردم و یکی دومرتبه داخلش چرخی زدم تا با امکانات جدیدش بطور گذرا آشنا شوم ولی متاسفانه هنوز فرصت نکردم که چک کنم مایکروسافت برای این مورد در نسخه جدید راهکاری برای Developerها و DBAها در نظر گرفته یا نه. 
        موفق باشید.
    2. سید سیاوش گلچوبیان

      سید سیاوش گلچوبیان

      متاسفانه تو نسخه SQL Server 2016 CTP2 هنوز همچین امکانی گنجانده نشده و نمیشه  داده های درون فایل گروپ MEMORY_OPTIMIZED_DATA رو به کمک TDE، Encrypt کرد.
      همونطور که اشاره فرمودید، استفاده از متدهای Encryption ذاتا بحث های Performance ای رو همیشه با خودش به همراه داشته، حتی تو TDE (البته به لطف Async بودن این فرآیند تو TDE و اعمال اون در حین CheckPoint این اثر منفی از دید ما خیلی کمرنگتر شده) ولی متاسفانه در خصوص In_Memory آبجکت ها فعلا راه دیگه ای به جز Encryption دیتاهای داخل جدول به ذهن من نمیرسه، البته میشه جهت بهبود Performance در روش رمز نگاری اطلاعات جداول، به جای استفاده مستقیم از Asymmetric Key ها از Symmetric Key های Encrypt شده توسط Asymmetric Key استفاده کرد که هم Performance رو تا حدود قابل توجهی بهبود میده و هم امنیت رو خدشه دار نمیکنه.
      ولی نهایتا هزینه ای که پرداخت میکنیم بابت Encryption زیاده، حتی در روش TDE (متاسفانه یکی از مهمترین ابزارهای ما جهت افزایش Performance که همون Compress کردن جداول و ایندکس ها هستش چه در TDE و چه در روش های دیگه Encryption بی ارزش میشه و کارآییش رو از دست میده)

      پاسخ دادن
    3. امین ثریا

       سلام ودرود

      تو SQL Server 2014 و In memory oltp همون طور ک میدونید دیتا فایلها و دلتافایلها ب صورت کدهای محلی توسط کامپایلر سی به وجود میان واگه به مسیر root فایلها برید و یکی از فایلها رو ب عنوان نمونه نگاه کنید مشاهده میکنید ک ماهیت اونها و محتواشون ب صورت کدهای سی اند  ب طوری ک نامفهومند و handle کردنشون هم تنها توسط خود SQL قابل انجامه .

      حالا دقیقا نمیدونم آیا با این وجود هنوز باید نگران امنیتشون باشیم یا این که منظور شما فایلهای با معماری Disk Base هست؟!

      پاسخ دادن
  2. سید علی سیدنژاد جوپاری

    سید علی سیدنژاد جوپاری

     سلام

    تشکر از مقاله مفیدتون لطفا این بحث رو ادامه و بیشتر گسترش بدید

    پاسخ دادن
  3. m

    m

     عالی بود با تشکر از زحماتتون

    پاسخ دادن
  4. جواد

    سلام
    خیلی ممنون خیلی مقالتون مفیده
    قسمت بعدیش رو کی میذارید؟

    پاسخ دادن
  5. مجتبی شهریور

    مجتبی شهریور

     سلام
    مهندس متشکرم
    خیلی عالی بود منتظر قسمتهای بعدی هستیم

    پاسخ دادن
  6. ساناز احمدی

    ساناز احمدی

     سلام
    خیلی عالی بود احسنت….

    پاسخ دادن
  7. tiyara9090@hotmail.com

    tiyara9090@hotmail.com

    salam
    mr30
    ghsmat bad ki up mi konid???????????????????????

    پاسخ دادن
    1. سید سیاوش گلچوبیان

      سید سیاوش گلچوبیان

       باسلام و تشکر از نظرات دوستان، انشا الله تا ۷ مرداد قسمت دوم این مقاله را منتشر خواهم کرد.

      پاسخ دادن
      1. فرشید علی اکبری

        فرشید علی اکبری

         سلام

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

     با سلام و خسته نباشید
    ببخشید قسمت دوم مقاله رو کی می گذارید؟
    باتشکر

    پاسخ دادن
  9. حسن ضرابی

    حسن ضرابی

       با سلام و خسته نباشید خدمت آقای سید سیاوش گلچوبیان

    از مقاله بسیار عالیتون خیلی ممنونم واقعا زحمت کشیدید

    من یک سئوال داشتم

    اگر ما بخواهیم از روش tde برای رمز گذاری استفاده کنیم که کسی به بکاپ های ما دسترسی نداشته باشد من یک روشی به ذهنم خورد که خواستم از شما سئوال کرده باشم که ببینم این روش درست هست یا خیر.

    برای بکاپ گرفتن یک دیتابیس با پسوند bak در روز و زمان خواستی که این بکاپ که بخواهد گرفته شود شاید هم در روز چند بار گرفته شود ما بیاییم کل عملیات را انجام بدهیم که من دیگر واردش نمی شم مثلا در sp کل کدها را می نویسیم و دیتابیس رمزگذاری می شود یعنی کل کارها برای گرفتن بکاپ به صورت tde انجام می شود بعد بکاپ را می گیریم بعد که بکاپ را گرفتیم بیاییم کل دیتابیس را به حالت اولیه برگردانیم یعنی تمام رمزگذاری را drop کنیم و انگار حالت tde در دیتابیس وجود ندارد باز در زمان خواص که بخواهد بکاپ از دیتابیس بگیرد باز اول tde را انجام بدهد بعد بکاپ بگیرد و بعد حالت tde غیر فعال شود

    آیا این روش اصولی هست

    با تشکر از شما
    خیلی مچکرم

    پاسخ دادن
    1. مسعود طاهری

      مسعود طاهری

          سلام دوست عزیز

      روش مورد نظر ما زیاد جالب نیست. هر بار که بخواهید اینکار را بکنید زمان Encrypt کردن و… را باید در نظر بگیرید.
      برای اینکه Backup خود را Encrypt کنید می توانید از قابلیت جدید که از SQL Server 2014 به بعد استفاده کنید 
      Backup Encryption : جهت اطلاعات بیشتر به این لینک مراجعه کنید 
      پاسخ دادن
  10. حسن ضرابی

    حسن ضرابی

     با سلام و خسته نباشید خدمت آقای مسعود طاهری عزیز و آقای سید سیاوش گلچوبیان
    بابت مقاله بسیار عالیشون

    در view سیستمیsys.dm_database_encryption_keys
    که در مقاله بالا توضیح داده شد من در مورد چند فیلد این view سیستمی سئوال
    داشتم

    یکی در مورد فیلد
    create_date
    هست فکر می کنم وقتی ما
    encrypt
    را
    on
    می کنیم و وقتی
    encrypt
    کردن دیتابیس به پایان رسید این فیلد تاریخ مورد نظر را می گیرد

    یکی در مورد فیلد
    modify_date
    هست که اگر یک توضیحی بدهید که چه موقع تاریخ به روز می شود و تفاوت آن با
    فیلد

    regenereate_date
    در چیست

    در مورد فیلد
    set_date
    فکر می کنم که و تستی که کردم وقتی
    encrypt
    را
    off
    می کنیم و بعد
    on
    می کنیم تاریخ آن تغییر می کند خواستم بدونم تستم درست هست یا خیر

    و هم در مورد فیلد
    opened_date
    هست که اگر یک توضیحی بدهید بسیار سپاسگزار می شوم و خیلی محبت می کنید

     

    و
    آخر هم در مورد فیلد
    encryption_state هست که خیلی بر روی این فیلد تست کردم فقط
    مورد ۴ و ۶ را متوجه نشدم چون ۱ یعنی
    encrypt نشده است و ۲ یعنی در حالی encrypt
    کردن هست و در حال انجام کار هست که تمام شود و وقتی که حالت
    encrypt
    کردن به درستی تمام شد عدد ۳ را در فیلد
    encryption_state  ذخیره می کند و عدد ۵ هم یعنی encrypt
    کردن دیتابیس دارد غیر فعال می شود و در فیلد
    precent_complte
    درصد تمام شدن را انجام می دهد که وقتی تمام شد به جای عدد ۵ عدد ۱ به را ذخیره می
    کند عدد ۱ یعنی
    encrypt
    نشده است

     

    حالا
    اگر محبت کنید و توضیح دهید که عدد ۴ و ۶ چه کاری انجام می دهند ممنون می شوم

     

    با
    سپاس از شما و سایت خیلی عالیتون

    ممنونم
    که پاسخ می دهید

    با
    تشکر از شما

    پاسخ دادن
    1. مسعود طاهری

      مسعود طاهری

      سلام در حال حاضر امکان تست دقیق برای فراهم نیست تا همه حالت ها را بتوانم براتون جواب بدهم اما می توانید از لینک زیر به خوبی کمک بگیرید

      پاسخ دادن
  11. فرزام نوذری

       عالی بود <3

    پاسخ دادن

ارسال نظر

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

تمامی حقوق مادی و معنوی این وب سایت متعلق به نیک آموز می باشد.
این سایت توسط تیم آموزش برنامه نویسی نیک آموز مدیریت می شود.