نمایش نتایج 1 تا 11 از 11

نام تاپیک: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

  1. #1

    كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

    سلام
    از طرف دوستان عزيز سوالات مكرري در مورد حفاظت فيزيكي پرسيده مي شه. اول يه توضيح مختصر در مورد دو نوع حفاظت و سپس يه توضيح مشروح در مورد حفاظت فيزيكي مي دم.
    ببينين دو نوع حفاظت از اطلاعات داريم.
    الف - حفاظت از طريق كنترل دسترسي ها (يه جوري بگيم حفاظت نرم افزاري يا سيستمي)
    ب- حفاظت فيزيكي
    قسمت اول كه همون تعريف لاگين ها و يوزر هاست. اين قسمت الزام كار با DB ها هم هست . چرا كه بدون دسترسي امكان مشاهده اطلاعات و كار با اونها وجود نداره.
    نوع دوم حفاظت فيزيكي است. يعني حفاظت از فايل ها. اين موضوع به هيچ طريقي با ابزار الف يا همون لاگين ها و يوزر ها تامين نمي شود.
    چرا كه اگه كسي به فايل ها دسترسي پيدا كرد و امكان داشت كه اونو روي سرور ديگري Attach كنه ، سيستم به لاگين و يوزر ها اصلا نگاه نمي كنه و اونو در سرور جديد بالا مي ياره.
    اما چه كنيم كه حفاظت فيزيكي هم داشته باشيم.
    -------------------------------------------------

    Data Encryption
    مقدمه
    يكي از مهمترين نگراني (concern) هاي يك DBA درز كردن اطلاعات (data leak) است. براي مقابله با آن كليه دسترسي‌ها در سطح كاربري تنظيم و مكررا مرور مي شود. اما به يك سطح حفاظت بيشتر نيز نياز است. حافظت فيزيكي !! بله درست است. بايد فايل هاي داده اي و لاگ sqlserver نيز محافظت شوند.
    براي اين منظور در sql server 2008 امكان جديدي با نام Transparent Data Encryption (TDE) اضافه شده است.
    در اولين نگاه بايد بدانيم كه encryption چيست ؟
    encryption يعني ترجمه و رمز كردن اطلاعات از طريق يك رمزنگار و يا يك الگوريتم بصورتيكه كسي نتواند اطلاعات رابخواند مگر اينكه كليد را داشته باشد.
    دو نوع كليد براي اين عمليات وجود دارد :
    1- symmetric : يعني اينكه يك كليد براي رمز نگاري و رمز گشايي استفاده مي شود.
    2- asymmetric : يعني يك كليد (Privat key) براي رمز نگاري و كليد دوم (Public key) براي رمز گشايي.

    TDE چيست ؟
    TDE يك سطح از Encryption بانك اطلاعاتي است كه هم فايل داده و هم فايل Log را رمزنگاري مي كند.
    اين تعريف در واژه نامه ميكروسافت به اين ترتيب آمده است :
    TDE عمليات رمز نگاري و رمزگشايي را بصورت هم‌زمان و هرزمان (Realtime) روي فايل هاي داده و لاگ انجام مي دهد. براي رمزنگاري از database encryption key (DEK) استفاده مي كند. DEK يك كليد از نوع Symetric است كه خودش توسط يك certificate محافظت مي شود كه اين certificate در بانك اطلاعاتي master ذخيره شده است.
    يكي از مزاياي مهم TDE اين است كه براي فعال سازي و استفاده از آن نبايد به برنامه كاربردي (application) خود دست بزنيد.
    Sql server اين عمليات را از طريق يك share Lock انجام ميدهد.

    قبل از اينكه مشتاق استفاده از اين روش بشويد حتما تا انتهاي مقاله پيش برويد و از خطرات و اشكالات آن هم مطلع شويد.

    چگونه از TDE استفاده كنيم ؟
    4 مرحله براي setup كردن آن وجود دارد :
    1- ايجاد يك Master Key
    2- ايجاد يا دريافت يك Certificate Protected توسط master key
    3- ايجاد يك database Key و protect كردن آن توسط Certificate
    4- Set كردن يك ديتابيس به منظور استفاده از Encryption
    اكنون مثال هاي اجرايي از اين مكانيزم : (دقت شود هيچ موقع مثال ها را براي بار اول روي بانكهاي اصلي خود اجرا نكنيد. )
    مرحله اول : ايجاد Master Key
    اين كليد در بانك اطلاعاتي master ايجاد مي شود. فقط قبل از ايجاد بايد مطمئن شويد كه قبلا ايجاد نشده است.
    USE master;
    GO
    SELECT * FROM sys.symmetric_keys WHERE name LIKE '%MS_DatabaseMasterKey%'
    GO
    اگر نتيجه اين query ركوردي بود، به اين معني است كه شما قبلا يك master key ايجاد كرده ايد.
    اگر master key نداشته باشد:
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '12345';
    GO

    مرحله دوم : ايجاد يك certificate توسط Master Key است
    قبل ازايجاد آن چك مي كنيم كه با نام مورد نظر ما قبلا certificate ايجاد شده يا نه ؟
    SELECT * FROM sys.certificates where [name] = 'Your Certificate Name'
    GO
    اكنون براي ايجاد آن اقدام مي كنيم.
    CREATE CERTIFICATE MyTDECert WITH SUBJECT = 'My TDE Certificate'
    GO
    اگر select بالا را اجرا كنيم، نتيجه ركوردي است كه ستون نام آن MyTDECert مي باشد.
    مرحله سوم : ايجاد يك Encryption Key و Protect كردن آن توسط certificate مي باشد.
    اين مرحله حساس است و حتما بايد مراقب باشيد. (روي بانك اطلاعاتي تستي بانام AdventureWorks)
    Use AdventureWorks
    GO
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_128
    ENCRYPTION BY SERVER CERTIFICATE MyTDECert
    GO

    بعد از اجراي اين دستور چنين پيغامي مي گيريد كه مهم است و بايد به دقت آنرا بخوانيد :
    Warning: The certificate used for encrypting the database encryption key has not been backed up. You should immediately back up the certificate and the private key associated with the certificate. If the certificate ever becomes unavailable or if you must restore or attach the database on another server, you must have backups of both the certificate and the private key or you will not be able to open the database
    اين موضوع توضيح داده خواهد شد.
    اكنون مرحله آخر :
    مرحله چهارم : فعال كردن Encryption در بانك اطلاعاتي است.
    ALTER DATABASE AdventureWorks
    SET ENCRYPTION ON
    GO

    در صورتيكه بانك شما سنگين باشد اين مرحله قدري طول خواهد كشيد.
    بعد از آن شما به اين اسكريپت پي خواهيد برد كه آيا بانك اطلاعاتي شما رمزنگاري شده است.
    SELECT DB_NAME(database_id) AS DatabaseName, * FROM sys.dm_database_encryption_keys
    نتيجه براي يك db دو ركورد است. يكي خودش يكي tempdb.

    حالا سوال ؟
    آيا Encryption واقعا كار مي كنه ؟
    اين مراحل رو براي تست دنبال مي كنيم.
    1- از بانك اطلاعاتي Encrypt شده يك Backup مي گيريم.
    BACKUP DATABASE [AdventureWorks] TO DISK = N'D:\BackUp\AdventureWorks_Encrypted.bak' WITH NOFORMAT, NOINIT,
    NAME = N'AdventureWorks-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
    2- خوب مرحله بعد اينه كه اين Backup رو روي يك سرور ديگه و يا يك Instance ديگه روي همين سرور Restore كنيم. در اين مثال روي يك سرور ديگه Restore مي كنيم.
    RESTORE DATABASE [AdventureWorks]
    FROM DISK = N'D:\AdventureWorks_Encrypted.bak'
    WITH FILE = 1,
    MOVE N'AdventureWorks' TO N'D:\BackUp\AdventureWorks.mdf',
    MOVE N'AdventureWorks_log' TO N'D:\BackUp\AdventureWorks_log.ldf',
    NOUNLOAD, STATS = 10
    GO
    اگه Encription درست انجام شده باشه در اين مرحله بايد خطاي زير رو بگيريد :
    Msg 33111, Level 16, State 3, Line 1
    Cannot find server certificate with thumbprint
    Msg 3013, Level 16, State 1, Line 1
    RESTORE DATABASE is terminating abnormally.
    حالا براي اطمينان بيشتر از مسير ديگه‌اي ميريم. يعني Attach & Detach . ابتدا فايل هاي mdf , ldf رو به سرور ديگه منتقل مي كنيم و با استفاده از دستور زير اونو Attach مي كنيم.
    CREATE DATABASE [AdventureWorks] ON
    ( FILENAME = N'D:\BackUp\AdventureWorks.mdf'),
    ( FILENAME = N'D:\BackUp\AdventureWorks_log.ldf')
    FOR ATTACH
    درسته !!!! يك خطا مثل همون قبلي مي گيريد.

    3- راه برگردوندن يك بانك اطلاعاتي Encrypt شده در يك ديتابيس ديگه :
    *** اينه كه روي sql server مقصد هم همون Certificate رو اعمال كنيد. ***
    براي اين كار دو مرحله وجود داره :
    1-3- Backup گرفتن از certificate سرور اصلي
    Use Master
    GO
    BACKUP CERTIFICATE MyTDECert TO FILE = 'D:\MyTDECert.cert'
    WITH PRIVATE KEY
    (
    FILE = 'D:\EncryptPrivateKey.key',
    ENCRYPTION BY PASSWORD = 'TryToUseOnlyStrongPassword'
    )
    GO

    2-3- Restore كردن آن روي سرور مقصد
    براي اين كار اول بايد master Key رو روي سرور مقصد ايجاد كنيم. بعد بريم سراغ certificate
    USE [master]
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '12345';
    GO
    //*--------------------------------------------*
    CREATE CERTIFICATE MyTDECert
    FROM FILE = 'D:\MyTDECert.cert'
    WITH PRIVATE KEY (
    FILE = 'D:\EncryptPrivateKey.key'
    , DECRYPTION BY PASSWORD = 'TryToUseOnlyStrongPassword'
    )

    4- حالا مي تونيم دوباره دستور restore رو اعمال كنيم.
    RESTORE DATABASE [AdventureWorks]
    FROM DISK = N'D:\AdventureWorks_Encrypted.bak'
    WITH FILE = 1,
    MOVE N'AdventureWorks_data' TO N'D:\BackUp\AdventureWorks_Data.mdf',
    MOVE N'AdventureWorks_log' TO N'D:\BackUp\AdventureWorks_Log.ldf',
    NOUNLOAD, REPLACE, STATS = 10
    GO
    نكات مهم
    نكاتي كه بايد در مورد Encryption به خاطر بسپاريد.
    1- اگر بانك اطلاعاتي شما File Stream دارد و يا ReadOnly File group داريد، اين روش محافظت موفقيت آميز نخواهد بود.
    • دراجراي رمزنگاري File stream با خطايي برخورد نمي كنيد اما به واقع آن فايل هايي كه روي هارد ذخيره شده اند ، كد نميشوند.
    2- اگر شما Plan ي از نوع Maintenance/Recovery/Warm Standby داشته باشيد بايد برنامه خود را مرور كنيد و سروري كه روي آن Restore انجام مي دهيد حتما Certificate داشته باشد.
    3- Backup از certificate حتما داشته باشيد ، چون اگر ويندوز شما از بين برود ديگر Backup هاي شما بدون backup از certificate بدرد بخور نخواهدبود.

    مشكلات فعال شدن TDE
    1- Tempdb
    • به دليل اينكه اين بانك اطلاعاتي هم رمزنگاري مي شود، كارايي سرور پايين مي آيد.
    2- رمزنگاري به شدت روي Compressed Backup تاثير مي گذارد.
    • مكانيزم Compressed Backup بسيار مفيد است كه در زمان فعال شدن Encryption، درجه فشرده سازي بسيار كم مي شود.
    3- باقي ماندن ارجاعي كه هميشه به يك certificate اشاره مي كند.
    • به اين مفهوم كه حتي بعد از متوقف كردن Encryption، باز در هنگام Restore و با وجود موفقيت پيغامي مبني بر نبودن certificate ميدهد.

    موفق باشيد
    لطفا از تجربيات و نظريات خودتون راجع به اين موضوع بنويسيد.
    آخرین ویرایش به وسیله esteghamat : چهارشنبه 28 تیر 1391 در 14:42 عصر

  2. #2

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

    سلام
    در مورد WITH ALGORITHM = AES_128 اينكه يكي از الگوريتم هاي رمزنگاري است.
    موفق باشيد

  3. #3

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

    " اين كليد در بانك اطلاعاتي master ايجاد مي شود. فقط قبل از ايجاد بايد مطمئن شويد كه قبلا ايجاد نشده است. "

    بانک اطلاعاتی master کجا هست؟
    من برای تست یه بانک به نام test ساختم که یک جدول profile داره.
    حالا میخوام این مراحل رو انجام بدم.

    (از sql خود visual studio دارم استفاده میکنم ، میشه؟ )

  4. #4

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

    سلام
    شما هر Instance جديد كه ايجاد مي كنيد يكسري بانك هاي اطلاعاتي سيستمي داره كه مهمترينش master هست.
    آره مي شه.
    فقط جاهايي كه از نام AdventureWorks اسم برده شده، اسم ديتابيس خودت رو بذار.

  5. #5

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

    تشکر

    روش TDE فقط از دیدن اطلاعات محافظت میکنه درسته؟
    مثلا اگر جدول یوزر داشته باشیم ، طرف میتونه سطر یوزر رو پاک کنه؟ ( فرضا بصورت کد شده پاک کنه ) یا کلا دسترسی به بانک نداره؟

  6. #6

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

    سلام
    من یک Windows applicationدارم که با یک دیتبابیس کار می کنه واسه اینکه دیتابیسو Encrypt کنم اونو توی Sql Server Mangement,اتچ کردم بعد ازینکه masterkey,Certificteo ساختم دیتابیسو بااستفاده از اونا Encrypt کردم ,بعدش Deattach میکنم حالا که میخوام توی windows application از استفاده کنم visual sudio هچین پیغامی میده :


    کد HTML:
    Cannot find server certificate with thumbprint '0x3FAC4A245B140BD61305EE0BB48970BC7421C128'.
    Could not open new database 'C:\USERS\ALIREZA\DESKTOP\PROJECT\SAVE AND RETRIEVAL FILES IN DB\PROJECT1\PROJECT1\DATA\DB.MDF'. CREATE DATABASE is aborted.
    An attempt to attach an auto-named database for file C:\Users\Alireza\Desktop\project\Save and retrieval Files in DB\Project1\Project1\Data\DB.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

    یه نسخه از گواهینامه هم واسه خود پایگاه داده نه master کریت کردم ولی بازم جواب نمیده میشه بهم بگید اچیکار باید کنم!
    Use Mydb--//not master
    GO
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_128
    ENCRYPTION BY SERVER CERTIFICATE MyTDECert

    GO
    میشه بهم بگید اگه بخوام windows form applicationام از این دیتابیس رمز گذاری شده استفاده کنه چیکار باید بکنم!

  7. #7

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

    ممنون خوب بود.

  8. #8

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

    سلام دوستان شرمنده كه سوالمو اينجا مطرح ميكنم ميشه بگيد از كجا ميتونم يك مقاله در مورد امنيت فيزيكي DB پيدا كنم ؟؟؟ ممنون ميشم اگه لينكي اينجا قرار بدين

  9. #9

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

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

  10. #10

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

    دوستان کسی اطلاعی نداره ؟
    کارم گیره - لطفا راهنمایی کنید

  11. #11

    نقل قول: كمي در مورد حفاظت فيزيكي و يا مكانيزم TDE - Transparent data Encryption

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

تاپیک های مشابه

  1. سوال در مورد : Bussines skines ، Report builder و حفاظت
    نوشته شده توسط hr110 در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: پنج شنبه 29 اردیبهشت 1384, 21:51 عصر
  2. سوال در مورد Extended Stored Procedure
    نوشته شده توسط محسن در بخش SQL Server
    پاسخ: 12
    آخرین پست: چهارشنبه 26 اسفند 1383, 01:23 صبح
  3. یک تجربه (در مورد تاریخ)
    نوشته شده توسط (امید) در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: چهارشنبه 28 مرداد 1383, 12:31 عصر
  4. سوال در مورد کد اس کیو ال
    نوشته شده توسط ghaum در بخش T-SQL
    پاسخ: 2
    آخرین پست: سه شنبه 06 خرداد 1382, 20:19 عصر
  5. یک سوال در مورد کد sql
    نوشته شده توسط ghaum110 در بخش T-SQL
    پاسخ: 1
    آخرین پست: چهارشنبه 14 اسفند 1381, 16:29 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •