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.

En son güncelleştirmeler sürüm notlarında bulunur.

Ö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.

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:

  1. Hizmet tarafından yönetilen veritabanı ana anahtarını master veritabanına ekler.
  2. Hizmet tarafından yönetilen sertifika koruyucusunu ekler.
  3. Yönetilen örnekteki tüm veritabanlarına ilişkili Veritabanı Şifreleme Anahtarlarını (DEK) ekler.
  4. 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:

  1. Bir sertifika oluşturun.
  2. 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:

  1. Yönetilen örnekteki tüm veritabanlarında şifrelemeyi devre dışı bırakır.
  2. Yönetilen örnekteki tüm veritabanlarında ilişkili DEK'leri bırakır.
  3. Hizmet tarafından yönetilen sertifika koruyucusunu bırakır.
  4. 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.

  1. 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>');
    
  2. Sertifikayı kapsayıcıdan dosya sisteminize kopyalayın.

    kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>
    

    Örnek:

    kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
    

  1. Özel anahtarı kapsayıcıdan dosya sisteminize kopyalayın.

     kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>
    

    Örnek:

    kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
    

  1. 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.

  1. Sertifikayı dosya sisteminizden kapsayıcıya kopyalayın.

    type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>
    

    Örnek:

    type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
    

  1. Özel anahtarı dosya sisteminizden kapsayıcıya kopyalayın.

    type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>
    

    Örnek:

    type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
    
  2. dosyasındaki dosya yollarını /var/opt/mssql/datakullanarak 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>' );
    
  3. 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"
    

Saydam veri şifrelemesi