Azure Arc tarafından etkinleştirilen SQL Yönetilen Örneği saydam veri şifrelemesini etkinleştirme (önizleme)
Bu makalede, Azure Arc tarafından etkinleştirilen bir SQL Yönetilen Örneği bekleyen saydam veri şifrelemesini (TDE) etkinleştirme ve devre dışı bırakma işlemleri açıklanmaktadır. Bu makalede yönetilen örnek terimi, Azure Arc tarafından etkinleştirilen SQL Yönetilen Örneği dağıtımı anlamına gelir ve TDE'nin etkinleştirilmesi/devre dışı bırakılması yönetilen örnekte çalışan tüm veritabanlarına uygulanır.
TDE hakkında daha fazla bilgi için bkz . Saydam veri şifrelemesi.
TDE özelliğini açmak aşağıdakileri yapar:
- Tüm mevcut veritabanları artık otomatik olarak şifrelenecek.
- Yeni oluşturulan tüm veritabanları otomatik olarak şifrelenir.
Not
Önizleme özelliği olarak, bu makalede sunulan teknoloji Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları'na tabidir.
Önkoşullar
Bu makaleye devam etmeden önce Azure Arc kaynağı tarafından etkinleştirilmiş bir SQL Yönetilen Örneği oluşturmanız ve buna bağlanmanız gerekir.
- Azure Arc tarafından etkinleştirilen bir SQL Yönetilen Örneği oluşturma
- Azure Arc tarafından etkinleştirilen SQL Yönetilen Örneği bağlanma
Sınırlamalar
Otomatik TDE'yi etkinleştirdiğinizde aşağıdaki sınırlamalar geçerlidir:
- Yalnızca Genel Amaçlı Katman desteklenir.
- Yük devretme grupları desteklenmez.
TDE etkin (Azure CLI) ile yönetilen örnek oluşturma
Aşağıdaki örnek, Azure Arc tarafından etkinleştirilen bir SQL Yönetilen Örneği oluşturur ve tek bir çoğaltma, TDE etkindir:
az sql mi-arc create --name sqlmi-tde --k8s-namespace arc --tde-mode ServiceManaged --use-k8s
Yönetilen örnekte TDE'yi açma
TDE Arc özellikli SQL Yönetilen Örneği etkinleştirildiğinde, veri hizmeti otomatik olarak aşağıdaki görevleri yapar:
- Hizmet tarafından yönetilen veritabanı ana anahtarını
master
veritabanına ekler. - Hizmet tarafından yönetilen sertifika koruyucusunu ekler.
- Yönetilen örnekteki tüm veritabanlarına ilişkili Veritabanı Şifreleme Anahtarlarını (DEK) ekler.
- Yönetilen örnekteki tüm veritabanlarında şifrelemeyi etkinleştirir.
Azure Arc TDE tarafından etkinleştirilen SQL Yönetilen Örneği iki moddan birinde ayarlayabilirsiniz:
- Hizmet tarafından yönetilen
- Müşteri tarafından yönetilen
Hizmet tarafından yönetilen modda TDE, yönetilen örneğin hem hizmet tarafından yönetilen veritabanı ana anahtarını hem de hizmet tarafından yönetilen sunucu sertifikasını kullanmasını gerektirir. Bu kimlik bilgileri, hizmet tarafından yönetilen TDE etkinleştirildiğinde otomatik olarak oluşturulur.
Müşteri tarafından yönetilen modda, TDE hizmet tarafından yönetilen bir veritabanı ana anahtarı kullanır ve sunucu sertifikası için sağladığınız anahtarları kullanır. Müşteri tarafından yönetilen modu yapılandırmak için:
- Bir sertifika oluşturun.
- Sertifikayı örnekle aynı Kubernetes ad alanında gizli dizi olarak depolayın.
Etkinleştir
Aşağıdaki bölümde hizmet tarafından yönetilen modda TDE'nin nasıl etkinleştirileceği açıklanmaktadır.
Hizmet yönetilen modunda TDE'yi etkinleştirmek için aşağıdaki komutu çalıştırın:
az sql mi-arc update --tde-mode ServiceManaged
Yönetilen örnekte TDE'yi kapatma
Arc özellikli SQL Yönetilen Örneği TDE devre dışı bırakıldığında, veri hizmeti otomatik olarak aşağıdaki görevleri yapar:
- Yönetilen örnekteki tüm veritabanlarında şifrelemeyi devre dışı bırakır.
- Yönetilen örnekteki tüm veritabanlarında ilişkili DEK'leri bırakır.
- Hizmet tarafından yönetilen sertifika koruyucusunu bırakır.
- Hizmet tarafından yönetilen veritabanı ana anahtarını
master
veritabanına bırakır.
TDE'yi devre dışı bırakmak için:
az sql mi-arc update --tde-mode Disabled
TDE kimlik bilgilerini yedekleme
Kimlik bilgilerini yönetilen örnekten yedeklediğinizde, kimlik bilgileri kapsayıcı içinde depolanır. Kimlik bilgilerini kalıcı bir birimde depolamak için kapsayıcıdaki bağlama yolunu belirtin. Örneğin, var/opt/mssql/data
. Aşağıdaki örnek, yönetilen örnekten bir sertifikayı yedekler:
Not
kubectl cp
Komut Windows'tan çalıştırılırsa, mutlak Windows yolları kullanılırken komut başarısız olabilir. Göreli yolları veya aşağıda belirtilen komutları kullanın.
Sertifikayı kapsayıcıdan öğesine yedekleyin
/var/opt/mssql/data
.USE master; GO BACKUP CERTIFICATE <cert-name> TO FILE = '<cert-path>' WITH PRIVATE KEY ( FILE = '<private-key-path>', ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
Örnek:
USE master; GO BACKUP CERTIFICATE MyServerCert TO FILE = '/var/opt/mssql/data/servercert.crt' WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key', ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
Sertifikayı kapsayıcıdan dosya sisteminize kopyalayın.
Özel anahtarı kapsayıcıdan dosya sisteminize kopyalayın.
Sertifikayı ve özel anahtarı kapsayıcıdan silin.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Örnek:
kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
Yönetilen örneğe TDE kimlik bilgilerini geri yükleme
Yukarıdakine benzer şekilde, kimlik bilgilerini geri yüklemek için bunları kapsayıcıya kopyalayın ve ilgili T-SQL'i daha sonra çalıştırın.
Not
kubectl cp
Komut Windows'tan çalıştırılırsa, mutlak Windows yolları kullanılırken komut başarısız olabilir. Göreli yolları veya aşağıda belirtilen komutları kullanın.
TDE etkinleştirilmeden önce alınan veritabanı yedeklemelerini geri yüklemek için SQL Yönetilen Örneği TDE'yi devre dışı bırakmanız, veritabanı yedeklemesini geri yüklemeniz ve TDE'yi yeniden etkinleştirmeniz gerekir.
Sertifikayı dosya sisteminizden kapsayıcıya kopyalayın.
Özel anahtarı dosya sisteminizden kapsayıcıya kopyalayın.
dosyasındaki dosya yollarını
/var/opt/mssql/data
kullanarak sertifikayı oluşturun.USE master; GO CREATE CERTIFICATE <certicate-name> FROM FILE = '<certificate-path>' WITH PRIVATE KEY ( FILE = '<private-key-path>', DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
Örnek:
USE master; GO CREATE CERTIFICATE MyServerCertRestored FROM FILE = '/var/opt/mssql/data/servercert.crt' WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key', DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
Sertifikayı ve özel anahtarı kapsayıcıdan silin.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Örnek:
kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"