Aracılığıyla paylaş


Saydam veri şifrelemesi (TDE)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Saydam veri şifrelemesi (TDE), SQL Server, Azure SQL Veritabanı ve Azure Synapse Analytics veri dosyalarını şifreler. Bu şifreleme bekleyen verileri şifreleme olarak bilinir.

Kullanıcı veritabanının güvenliğini sağlamaya yardımcı olmak için aşağıdaki gibi önlemler alabilirsiniz:

  • Güvenli bir sistem tasarlama.
  • Gizli varlıkları şifreleme.
  • Veritabanı sunucularının çevresinde güvenlik duvarı oluşturma.

Ancak, sürücüler veya yedekleme bantları gibi fiziksel medyayı çalan kötü amaçlı bir taraf veritabanını geri yükleyebilir veya ekleyebilir ve verilerine göz atabilir.

Çözümlerden biri, veritabanındaki hassas verileri şifrelemek ve verileri şifreleyen anahtarları korumak için bir sertifika kullanmaktır. Bu çözüm, anahtarları olmayan herkesin verileri kullanmasını engeller. Ama bu tür bir korumayı önceden planlamanız gerekir.

TDE, verilerin ve günlük dosyalarının gerçek zamanlı G/Ç şifrelemesini ve şifresini çözmeyi yapar. Şifreleme bir veritabanı şifreleme anahtarı (DEK) kullanır. Veritabanı önyükleme kaydı, kurtarma sırasında kullanılabilirlik anahtarını depolar. DEK simetrik bir anahtardır ve sunucunun master veritabanının depoladığı bir sertifikayla veya EKM modülünün koruduğu asimetrik bir anahtarla güvence altına alınır.

TDE bekleyen verileri korur. Bu, veri ve günlük dosyalarıdır. Çeşitli sektörlerde yer alan birçok yasayı, düzenlemeyi ve yönergeleri izlemenizi sağlar. Bu özellik, yazılım geliştiricilerinin mevcut uygulamaları değiştirmeden AES ve 3DES şifreleme algoritmalarını kullanarak verileri şifrelemesini sağlar.

Uyarı

Sistem veritabanlarında TDE kullanılamaz. , masterveya modelşifrelemek msdbiçin kullanılamaz. tempdb , bir kullanıcı veritabanı TDE'yi etkinleştirdiğinde otomatik olarak şifrelenir, ancak doğrudan şifrelenemez.

TDE, iletişim kanalları arasında şifreleme sağlamaz. İletişim kanalları arasında verileri şifreleme hakkında daha fazla bilgi için bkz. Sertifikayı içeri aktararak SQL Server bağlantılarını şifreleme.

İlgili konular:

TDE hakkında

Veritabanı dosyasının şifrelemesi sayfa düzeyinde yapılır. Şifrelenmiş veritabanındaki sayfalar diske yazılmadan önce şifrelenir ve bellekte okunduğunda şifreleri çözülür. TDE şifrelenmiş veritabanının boyutunu artırmaz.

SQL Veritabanı için geçerli bilgiler

TDE'yi Azure SQL Veritabanı ile kullandığınızda, SQL Veritabanı veritabanında depolanan sunucu düzeyinde sertifikayı master otomatik olarak oluşturur. SQL Veritabanı'nda bir TDE veritabanını taşımak için taşıma işlemi için veritabanının şifresini çözmeniz gerekmez. TDE'yi SQL Veritabanı ile kullanma hakkında daha fazla bilgi için bkz. Azure SQL Veritabanı ile saydam veri şifrelemesi.

SQL Server için geçerli bilgiler

Veritabanının güvenliğini sağladıktan sonra doğru sertifikayı kullanarak veritabanını geri yükleyebilirsiniz. Sertifikalar hakkında daha fazla bilgi için bkz. SQL Server Sertifikaları ve Asimetrik Anahtarlar.

TDE'yi etkinleştirdikten sonra sertifikayı ve ilişkili özel anahtarını hemen yedekleyin. Sertifika kullanılamaz duruma gelirse veya veritabanını başka bir sunucuya geri yükler veya eklerseniz sertifikanın ve özel anahtarın yedeklerine ihtiyacınız vardır. Aksi takdirde, veritabanını açamazsınız. Kapsanan sistem veritabanında depolanan sertifikalar da yedeklenmelidir.

Veritabanında TDE'yi devre dışı bırakmış olsanız bile şifreleme sertifikasını koruyun. Veritabanı şifrelenmemiş olsa da işlem günlüğünün bölümleri korumalı kalabilir. Tam veritabanı yedeklemesi yapıncaya kadar bazı işlemler için sertifikaya da ihtiyacınız olabilir.

TDE ile verileri şifrelemek ve şifresini çözmek için son kullanma tarihini aşan bir sertifikayı kullanmaya devam edebilirsiniz.

Şifreleme hiyerarşisi

Windows Veri Koruma API'si (DPAPI), şifreleme ağacının kökündedir, anahtar hiyerarşisini makine düzeyinde güvenli hale getirir ve veritabanı sunucusu örneğinin hizmet ana anahtarını (SMK) korumak için kullanılır. SMK, kullanıcı veritabanı düzeyinde depolanan veritabanı ana anahtarını (DMK) korur ve sertifikaları ve asimetrik anahtarları korur. Bu anahtarlar da simetrik anahtarları korur ve bu da verileri korur. TDE, sertifikaya benzer bir hiyerarşi kullanır. TDE kullandığınızda, DMK ve sertifika veritabanında master depolanmalıdır. Yalnızca TDE için kullanılan ve veritabanı şifreleme anahtarı (DEK) olarak adlandırılan yeni bir anahtar oluşturulur ve kullanıcı veritabanında depolanır.

Aşağıdaki çizimde TDE şifreleme mimarisi gösterilmektedir. SQL Veritabanı'nda TDE kullandığınızda yalnızca veritabanı düzeyindeki öğeler (veritabanı şifreleme anahtarı ve ALTER DATABASE bölümleri) kullanıcı tarafından yapılandırılabilir.

Saydam veri şifreleme mimarisini gösteren diyagram.

TDE'yi etkinleştirme

TDE'yi kullanmak için şu adımları izleyin.

Şunlar için geçerlidir: SQL Server.

  1. Bir ana anahtar oluşturun.
  2. Ana anahtar tarafından korunan bir sertifika oluşturun veya alın.
  3. Bir veritabanı şifreleme anahtarı oluşturun ve sertifikayı kullanarak bu anahtarı koruyun.
  4. Veritabanını şifreleme kullanacak şekilde ayarlayın.

Aşağıdaki örnekte, sunucuda yüklü olan adlı AdventureWorks2025 bir sertifika kullanılarak veritabanının şifresi ve şifresi çözülürMyServerCert.

USE master;
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO

CREATE CERTIFICATE MyServerCert
    WITH SUBJECT = 'My DEK Certificate';
GO

USE AdventureWorks2022;
GO

CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
    ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO

ALTER DATABASE AdventureWorks2022
    SET ENCRYPTION ON;
GO

Şifreleme ve şifre çözme işlemleri SQL Server tarafından arka plan iş parçacıklarında zamanlanır. Bu işlemlerin durumunu görüntülemek için, bu makalenin devamında görüntülenen tabloda yer alan katalog görünümlerini ve dinamik yönetim görünümlerini kullanın.

Dikkat

TDE etkinleştirilmiş veritabanları için yedekleme dosyaları da DEK ile şifrelenir. Sonuç olarak, bu yedeklemeleri geri yüklerken DEK'yi koruyan sertifikanın kullanılabilir olması gerekir. Bu nedenle, veritabanını yedeklemeye ek olarak, sunucu sertifikalarının yedeklerini koruduğundan emin olun. Sertifikalar artık kullanılamıyorsa veri kaybı sonuçları.

Daha fazla bilgi için bkz. SQL Server Sertifikaları ve Asimetrik Anahtarlar.

Komutlar ve işlevler

Aşağıdaki deyimlerin TDE sertifikalarını kabul etmek için, bunları şifrelemek için bir veritabanı ana anahtarı kullanın. Bunları yalnızca parolayla şifrelerseniz, deyimler bunları şifreleyici olarak reddeder.

Önemli

TDE tarafından kullanıldıktan sonra sertifikaların parolasının korunmasını sağlarsanız, yeniden başlatma işleminden sonra veritabanına erişilemez hale gelir.

Aşağıdaki tabloda TDE komutlarının ve işlevlerinin bağlantıları ve açıklamaları sağlanmaktadır:

Komut veya işlev Amaç
VERITABANı ŞIFRELEME ANAHTARı OLUŞTURMA Veritabanını şifreleyen bir anahtar oluşturur
ALTER DATABASE ENCRYPTION KEY Veritabanını şifreleyen anahtarı değiştirir
VERITABANı ŞIFRELEME ANAHTARıNı BıRAKMA Veritabanını şifreleyen anahtarı kaldırır
ALTER DATABASE SET seçenekleri TDE'yi ALTER DATABASE etkinleştirmek için kullanılan seçeneği açıklar

Katalog görünümleri ve dinamik yönetim görünümleri

Aşağıdaki tabloda TDE katalog görünümleri ve dinamik yönetim görünümleri (DMV) gösterilmektedir.

Katalog görünümü veya dinamik yönetim görünümü Amaç
sys.databases Veritabanı bilgilerini görüntüleyen katalog görünümü
sys.certificates Veritabanındaki sertifikaları gösteren katalog görünümü
sys.dm_database_encryption_keys Veritabanının şifreleme anahtarları ve şifreleme durumu hakkında bilgi sağlayan dinamik yönetim görünümü

Permissions

Her TDE özelliği ve komutu, daha önce gösterilen tablolarda açıklandığı gibi tek tek izin gereksinimlerine sahiptir.

TDE ile ilgili meta verileri görüntülemek için sertifika üzerinde VIEW DEFINITION izin gerekir.

Değerlendirmeler

Veritabanı şifreleme işlemi için yeniden şifreleme taraması devam ederken, veritabanına yönelik bakım işlemleri devre dışı bırakılır. Veritabanının bakım işlemlerini yapması için tek kullanıcı modu ayarını kullanabilirsiniz. Daha fazla bilgi için bkz. Veritabanını tek kullanıcı moduna ayarlama.

Veritabanı şifrelemesinin sys.dm_database_encryption_keys durumunu bulmak için dinamik yönetim görünümünü kullanın. Daha fazla bilgi için bu makalenin önceki bölümlerinde yer alan Katalog görünümleri ve dinamik yönetim görünümleri bölümüne bakın.

TDE'de, veritabanındaki tüm dosyalar ve dosya grupları şifrelenir. Veritabanındaki herhangi bir dosya grubu olarak işaretlenirse READ ONLY, veritabanı şifreleme işlemi başarısız olur.

Veritabanı yansıtma veya günlük gönderiminde bir veritabanı kullanıyorsanız, her iki veritabanı da şifrelenir. Günlük işlemleri, aralarında gönderildiğinde şifrelenir.

Önemli

Bir veritabanı şifreleme için ayarlandığında tam metin dizinleri şifrelenir. SQL Server 2005 (9.x) ve önceki sürümlerde oluşturulan bu tür dizinler SQL Server 2008 (10.0.x) ve sonraki sürümler tarafından veritabanına aktarılır ve TDE tarafından şifrelenir.

İpucu

Veritabanının TDE durumundaki değişiklikleri izlemek için SQL Server Denetimi'ni veya Azure SQL Veritabanı denetimini kullanın. SQL Server için TDE, DATABASE_OBJECT_CHANGE_GROUP grubu altında izlenir.

Sınırlamalar

İlk veritabanı şifrelemesi, anahtar değişikliği veya veritabanı şifre çözme sırasında aşağıdaki işlemlere izin verilmez:

  • Veritabanındaki bir dosya grubundan dosya bırakma
  • Veritabanını bırakma
  • Veritabanını çevrimdışına alma
  • Veritabanını ayırma
  • Veritabanını veya dosya grubunu duruma geçirme READ ONLY

, , CREATE DATABASE ENCRYPTION KEYALTER DATABASE ENCRYPTION KEYve DROP DATABASE ENCRYPTION KEY deyimleri sırasında aşağıdaki işlemlere ALTER DATABASE...SET ENCRYPTIONizin verilmez:

  • Veritabanındaki bir dosya grubundan dosya bırakma
  • Veritabanını bırakma
  • Veritabanını çevrimdışına alma
  • Veritabanını ayırma
  • Veritabanını veya dosya grubunu duruma geçirme READ ONLY
  • ALTER DATABASE Komut kullanma
  • Veritabanı veya veritabanı dosyası yedeklemesi başlatma
  • Veritabanı veya veritabanı dosyası geri yükleme başlatma
  • Anlık görüntü oluşturma

Aşağıdaki işlemler veya koşullar , , CREATE DATABASE ENCRYPTION KEYALTER DATABASE ENCRYPTION KEYve DROP DATABASE ENCRYPTION KEY deyimlerini engellerALTER DATABASE...SET ENCRYPTION:

  • Veritabanı salt okunurdur veya salt okunur dosya gruplarına sahiptir.
  • Bir ALTER DATABASE komut çalışıyor.
  • Bir veri yedeklemesi çalışıyor.
  • Veritabanı çevrimdışı veya geri yükleme koşulundadır.
  • Anlık görüntü devam ediyor.
  • Veritabanı bakım görevleri çalışıyor.

Veritabanı dosyaları oluşturulduğunda, TDE etkinleştirildiğinde anlık dosya başlatma kullanılamaz.

DEK'yi asimetrik anahtarla şifrelemek için asimetrik anahtarın genişletilebilir bir anahtar yönetimi sağlayıcısında olması gerekir.

TDE taraması

Veritabanında TDE'yi etkinleştirmek için SQL Server'ın bir şifreleme taraması yapması gerekir. Tarama, veri dosyalarındaki her sayfayı arabellek havuzuna okur ve ardından şifrelenmiş sayfaları diske geri yazar.

Şifreleme taraması üzerinde daha fazla denetim sahibi olmanız için SQL Server 2019 (15.x), askıya alma ve sürdürme söz dizimi içeren TDE taramasını tanıtır. Sistemdeki iş yükü yoğunken veya iş açısından kritik saatlerde taramayı duraklatabilir ve ardından taramayı daha sonra sürdürebilirsiniz.

TDE şifreleme taramasını duraklatmak için aşağıdaki söz dizimini kullanın:

ALTER DATABASE <db_name> SET ENCRYPTION SUSPEND;

Benzer şekilde, TDE şifreleme taramasını sürdürmek için aşağıdaki söz dizimini kullanın:

ALTER DATABASE <db_name> SET ENCRYPTION RESUME;

encryption_scan_state sütunu dinamik yönetim görünümüne sys.dm_database_encryption_keys eklendi. Şifreleme taramasının geçerli durumunu gösterir. Son şifreleme tarama durumu değişikliğinin tarih ve saatini içeren encryption_scan_modify_date adlı yeni bir sütun da vardır.

Şifreleme taraması askıya alınırken SQL Server örneği yeniden başlatılırsa, başlatma sırasında hata günlüğüne bir ileti kaydedilir. İleti, var olan bir taramanın duraklatıldığını gösterir.

Önemli

TDE tarama özelliğini askıya alma ve sürdürme özelliği şu anda Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analytics'te kullanılamaz.

TDE ve işlem günlükleri

TDE bekleyen veri dosyalarını ve günlük dosyalarını korur. Şifrelenmemiş bir veritabanında TDE'yi etkinleştirdikten sonra veritabanının tamamını şifrelemek, boyutlandırılabilir bir veri işlemidir ve bu işlemin süresi bu veritabanının çalıştığı sistem kaynaklarına bağlıdır. sys.dm_database_encryption_keys DMV, veritabanının şifreleme durumunu belirlemek için kullanılabilir.

TDE açıldığında Veritabanı Altyapısı, veritabanı şifreleme anahtarı tarafından şifrelenecek yeni bir işlem günlüğü oluşturmaya zorlar. Önceki işlemler veya geçerli uzun süre çalışan işlemler tarafından oluşturulan ve TDE durum değişikliği arasında kesişen günlükler şifrelenmez.

İşlem günlükleri sys.dm_db_log_info DMV kullanılarak izlenebilir ve bu da günlük dosyasının Azure SQL ve SQL Server 2019 (15.x) ve sonraki sürümlerde kullanılabilen sütun kullanılarak vlf_encryptor_thumbprint şifrelenip şifrelenmediğini gösterir. Görünümdeki sütunu encryption_state kullanarak günlük dosyasının sys.dm_database_encryption_keys şifreleme durumunu bulmak için örnek bir sorgu aşağıda verilmişti:

USE AdventureWorks2022;
GO

/* The value 3 represents an encrypted state
   on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO

SQL Server günlük dosyası mimarisi hakkında daha fazla bilgi için bkz. İşlem günlüğü.

Bir DEK değişmeden önce, önceki DEK işlem günlüğüne yazılan tüm verileri şifreler.

Bir DEK'yi iki kez değiştirirseniz, DEK'yi yeniden değiştirebilmeniz için önce bir günlük yedeklemesi yapmanız gerekir.

TDE ve tempdb sistem veritabanı

tempdb SQL Server örneğindeki başka bir veritabanı TDE kullanılarak şifreleniyorsa sistem veritabanı şifrelenir. Bu şifreleme, aynı SQL Server örneğindeki şifrelenmemiş veritabanları için bir performans etkisine sahip olabilir. Sistem veritabanı hakkında tempdb daha fazla bilgi için bkz. tempdb Veritabanı.

TDE ve çoğaltma

Çoğaltma, TDE özellikli bir veritabanındaki verileri şifrelenmiş bir biçimde otomatik olarak çoğaltmaz. Dağıtım ve abone veritabanlarını korumak istiyorsanız TDE'yi ayrı olarak etkinleştirin.

Anlık görüntü çoğaltma verileri BCP dosyaları gibi şifrelenmemiş ara dosyalarda depolayabilir. İşlem ve birleştirme çoğaltması için ilk veri dağıtımı da yapılabilir. Bu tür çoğaltma sırasında, iletişim kanalını korumak için şifrelemeyi etkinleştirebilirsiniz.

Daha fazla bilgi için bkz. Sertifikayı içeri aktararak SQL Server bağlantılarını şifreleme.

TDE ve kullanılabilirlik grupları

Always On kullanılabilirlik grubuna şifrelenmiş veritabanı ekleyebilirsiniz.

Kullanılabilirlik grubunun parçası olan veritabanlarını şifrelemek için, birincil çoğaltmada veritabanı şifreleme anahtarı oluşturmadan önce tüm ikincil çoğaltmalarda ana anahtarı ve sertifikaları veya asimetrik anahtarı (EKM) oluşturun.

DEK'yi korumak için bir sertifika kullanılıyorsa, birincil çoğaltmada oluşturulan sertifikayı yedekleyin ve ardından birincil çoğaltmada DEK'yi oluşturmadan önce sertifikayı tüm ikincil çoğaltmalardaki bir dosyadan oluşturun .

TDE ve FILESTREAM verileri

TDE'yi etkinleştirdiğinizde bile FILESTREAM verileri şifrelenmez.

TDE ve yedeklemeler

Sertifikalar, DEK'yi korumak için Saydam Veri Şifrelemesi'nde yaygın olarak kullanılır. Sertifika veritabanında oluşturulmalıdır master . TDE etkinleştirilmiş veritabanlarının yedekleme dosyaları da DEK kullanılarak şifrelenir. Sonuç olarak, bu yedeklemelerden geri yükleme yaptığınızda DEK'yi koruyan sertifikanın kullanılabilir olması gerekir. Bu, veritabanını yedeklemeye ek olarak, veri kaybını önlemek için sunucu sertifikalarının yedeklerini tutmanız gerektiği anlamına gelir. Sertifika artık kullanılamıyorsa veri kaybı oluşur.

TDE'yi kaldırma

deyimini kullanarak veritabanından şifrelemeyi ALTER DATABASE kaldırın.

ALTER DATABASE <db_name> SET ENCRYPTION OFF;

Veritabanının durumunu görüntülemek için sys.dm_database_encryption_keys dinamik yönetim görünümünü kullanın.

Uyarı

Şifreleme işlemi devam ederken veritabanında ALTER DATABASE deyimlere izin verilmez. Şifreleme işlemi tamamlanana kadar veritabanının şifresini çözmeye başlayamazsınız.

DROP DATABASE ENCRYPTION KEY kullanarak DEK'yi kaldırmadan önce şifre çözme işleminin tamamlanmasını bekleyin.

Önemli

TDE için kullanılan ana anahtarı ve sertifikayı güvenli bir konuma yedekleyin. Veritabanı TDE ile şifrelendiğinde alınan yedeklemeleri geri yüklemek için ana anahtar ve sertifika gereklidir. DEK'yi kaldırdıktan sonra bir günlük yedeği alın ve ardından şifresi çözülen veritabanının yeni tam yedeğini alın.

TDE ve arabellek havuzu uzantısı

TDE kullanarak bir veritabanını şifrelediğinizde, arabellek havuzu uzantısı (BPE) ile ilgili dosyalar şifrelenmez. Bu dosyalar için dosya sistemi düzeyinde BitLocker veya EFS gibi şifreleme araçlarını kullanın.

TDE ve In-Memory OLTP

In-Memory OLTP nesneleri olan bir veritabanında TDE'yi etkinleştirebilirsiniz. SQL Server 2016 (13.x) ve Azure SQL Veritabanı'nda, TDE'yi etkinleştirirseniz OLTP günlük kayıtları ve verileri In-Memory şifrelenir. SQL Server 2014'te (12.x), TDE'yi etkinleştirirseniz In-Memory OLTP günlük kayıtları şifrelenir, ancak dosya grubundaki MEMORY_OPTIMIZED_DATA dosyalar şifrelenmez.

TDE'de kullanılan sertifikaları yönetme yönergeleri

Veritabanı TDE için etkinleştirildiğinde ve günlük gönderiminde veya veritabanı yansıtmasında kullanıldığında sertifikayı ve veritabanı ana anahtarını yedeklemeniz gerekir. Kapsanan sistem veritabanında depolanan sertifikalar da yedeklenmelidir.

DEK'yi korumak için kullanılan sertifika hiçbir zaman veritabanından master bırakılmamalıdır. Bunun yapılması şifrelenmiş veritabanının erişilemez duruma gelmesine neden olur.

Komutta kullanılan sertifika henüz yedeklenmemişse yürütüldükten CREATE DATABASE ENCRYPTION KEY sonra aşağıdaki gibi bir ileti (hata 33091) oluşturulur.

Uyarı

Veritabanı şifreleme anahtarını şifrelemek için kullanılan sertifika yedeklenmedi. Sertifikayı ve sertifikayla ilişkili özel anahtarı hemen yedeklemeniz gerekir. Sertifika kullanılamaz duruma gelirse veya veritabanını başka bir sunucuya geri yüklemeniz veya eklemeniz gerekiyorsa, hem sertifikanın hem de özel anahtarın yedeklerine sahip olmanız gerekir, aksi takdirde veritabanını alamayacaksınız.

Aşağıdaki sorgu, TDE'de kullanılan ve oluşturulduğu zamandan itibaren yedeklenmemiş sertifikaları tanımlamak için kullanılabilir.

SELECT pvt_key_last_backup_date,
       Db_name(dek.database_id) AS encrypteddatabase,
       c.name AS Certificate_Name
FROM sys.certificates AS c
     INNER JOIN sys.dm_database_encryption_keys AS dek
         ON c.thumbprint = dek.encryptor_thumbprint;

sütun pvt_key_last_backup_date ise NULL, bu satıra karşılık gelen veritabanı TDE için etkinleştirilmiştir, ancak DEK'sini korumak için kullanılan sertifika yedeklenmemiştir. Sertifikayı yedekleme hakkında daha fazla bilgi için bkz . BACKUP CERTIFICATE.