Azure Arc tarafından etkinleştirilen SQL Yönetilen Örneği'nde saydam veri şifrelemesini etkinleştirin (önizleme)

Bu makalede, Azure Arc tarafından etkinleştirilen bir SQL Yönetilen Örneği üzerinde atıl 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ını ifade eder ve TDE'nin etkinleştirilmesi/devre dışı bırakılması, yönetilen örnekte çalışan tüm veritabanlarını kapsar.

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.

Azure CLI ile TDE etkinleştirilmiş bir yönetilen örnek oluşturun

Aşağıdaki örnek, Azure Arc tarafından etkinleştirilen, tek bir replika ve TDE etkinleştirilmiş bir SQL Yönetilen Örneği oluşturur:

az sql mi-arc create --name sqlmi-tde --k8s-namespace arc --tde-mode ServiceManaged --use-k8s

Yönetilen örnekte TDE'yi açma

TDE'nin Arc özellikli SQL Yönetilen Örneği'nde etkinleştirilmesiyle, 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 yönetimli
  • 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ı, örnek ile aynı Kubernetes ad alanında gizli nesne 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 ile etkinleştirilmiş 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ındaki ilişkili DEK'leri (Veritabanı Şifreleme Anahtarları) kaldırır.
  3. Hizmet tarafından yönetilen sertifika koruyucusunu devre dışı 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 /var/opt/mssql/data'ye yedekleyin.

    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. /var/opt/mssql/data dosya yollarını 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>' );
    
  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