trešdiena, 2012. gada 8. februāris

Transparent Data Encryption (TDE)

Transparent Data Encryption (TDE) ir visas datu bāzes šifrēšana. Tāpat arī tiek šifrētas datu bāzes rezerves kopijas. Šī iespēja ir pieejami sākot ar SQL Server 2008 un tikai dārgākajās tā versijās- Enterprice Edition.

Kā tas strādā
Kā jau minēts ievadā, TDE šifrē visus datu bāzes datus izmantojot speciālu datu bāzes šifrēšanas atslēgu (Database Encryption Key, jeb DEK), kurai var norādīt šifrēšanas algoritmu (atšķirībā no SMK vai DMK).

Ja datu bāzē ir ieslēgta TDE šifrēšana, tad tiek šifrēti pilnīgi visi datu bāzes dati, tajā brīdī, kad tie tiek ierakstīti cietajā diskā. Tie tiek atšifrēti brīdī, kad tie tiek nolasīti no diska. Izņēmums ir FILESTREAM dati, kas netiek šifrēti un ir speciālgadījumi, kad tiek izmantoti Full-Text indeksi.

TDE pieslēgšana ir lieliski aprakstīta msdn rakstā.
Tur aprakstītie soļi ir šādi:
* master datu bāzē jāizveido DMK (ja tādas nav). Šī atslēgai jābūt aizsargātai gan ar paroli, gan arī SMK.
* master datu bāzē jāizveido sertifikāts, kas aizsargāts ar iepriekš izveidoto DMK.
* labā prakse (un vajadzība)- iepriekšējā solī izveidotajam sertifikātam izveidot rezerves kopiju un to noglabāt drošā vietā (msdn piemēra skriptā šis netiek darīts, neaizmirstiet).
* pārslēdzamies uz datu bāzi ko šifrēsim un tajā izveidojam DEK (sintakse msdn rakstā), kas izmanto vēlamo šifrēšanas algoritmu.
* izpildām komandu, kas pieslēdz TDE datu šifrēšanu.

Vaicājumi
Izveidoju vaicājumu, kas parāda sertifikātus, kas tiek izmantoti DEK šifrēšanai un DEK parametrus:
Select
    DB_NAME(k.database_id) database_name,
    c.name certificate_name,
    c.pvt_key_encryption_type_desc,
    c.subject,
    k.key_algorithm,
    k.key_length,
    k.encryption_state,
    k.percent_complete,
    k.create_date,
    k.regenerate_date,
    k.modify_date,
    k.set_date,
    k.opened_date
From master.sys.certificates c
    Inner Join sys.dm_database_encryption_keys k
        On c.thumbprint = k.encryptor_thumbprint
Vaicājums, kas parāda kādā stāvoklī (no šifrēšanas viedokļa) ir datu bāzes:
SELECT DB_Name(database_id),
    encryption_state,
    percent_complete
FROM sys.dm_database_encryption_keys

Nav komentāru:

Komentāra publicēšana