Aracılığıyla paylaş


Always Encrypted kullanarak şifrelenmiş verileri sütunlara toplu yükleme

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Toplu kopyalama işlemleri sırasında sunucuda meta veri denetimleri gerçekleştirmeden şifrelenmiş verileri yüklemek için seçeneğiyle ALLOW_ENCRYPTED_VALUE_MODIFICATIONS kullanıcıyı oluşturun. Bu seçenek, Always Encrypted kullanamayan eski araçlar veya üçüncü taraf Extract-Transform-Load (ETL) iş akışları tarafından kullanılmak üzere tasarlanmıştır. Bu, kullanıcının şifrelenmiş sütunlar içeren bir tablo kümesindeki şifrelenmiş verileri şifrelenmiş sütun içeren başka bir tablo kümesine (aynı veya farklı bir veritabanında) güvenli bir şekilde taşımasına olanak tanır.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS seçeneği

Hem CREATE USER hem de ALTER USER seçenekleri ALLOW_ENCRYPTED_VALUE_MODIFICATIONS vardır. olarak ayarlandığında ON (varsayılan değer), OFFbu seçenek sunucuda toplu kopyalama işlemlerinde şifreleme meta verileri denetimlerini gizler ve bu da kullanıcının verilerin şifresini çözmeden şifrelenmiş verileri tablolar veya veritabanları arasında toplu olarak kopyalamasını sağlar.

Veri geçişi senaryoları

Aşağıdaki tabloda, çeşitli geçiş senaryoları için uygun önerilen ayarlar gösterilmektedir.

Birkaç geçiş senaryosu için uygun önerilen ayarları gösteren bir tablonun ekran görüntüsü.

Şifrelenmiş verileri toplu yükleme

Şifrelenmiş verileri yüklemek için aşağıdaki işlemi kullanın.

  1. Toplu kopyalama işleminin hedefi olan veritabanındaki kullanıcı için seçeneğini ON olarak ayarlayın. Örneğin:

     ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;
    
  2. Toplu kopyalama uygulamanızı veya aracınızı bu kullanıcı olarak bağlanarak çalıştırın. (Uygulamanız Always Encrypted özellikli bir istemci sürücüsü kullanıyorsa, şifrelenmiş sütunlardan alınan verilerin şifrelenmiş kaldığından emin olmak için veri kaynağının bağlantı dizesinin içermediğinden column encryption setting=enabled emin olun. Daha fazla bilgi için bkz . Always Encrypted kullanarak uygulama geliştirme.)

  3. ALLOW_ENCRYPTED_VALUE_MODIFICATIONS seçeneğini yeniden OFF olarak ayarlayın. Örneğin:

    ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = OFF;
    

Veri bozulması olasılığı

Bu seçeneğin yanlış kullanılması veri bozulmasına neden olabilir. seçeneği ALLOW_ENCRYPTED_VALUE_MODIFICATIONS , kullanıcının veritabanındaki şifrelenmiş sütunlara farklı anahtarlarla şifrelenmiş, yanlış şifrelenmiş veya hiç şifrelenmemiş veriler de dahil olmak üzere tüm verileri eklemesine olanak tanır. Kullanıcı, hedef sütun için ayarlanan şifreleme şemasını (sütun şifreleme anahtarı, algoritma, şifreleme türü) kullanarak doğru şekilde şifrelenmemiş verileri yanlışlıkla kopyalarsa, verilerin şifresini çözemezsiniz (veriler bozulmuştur). Bu seçenek, veritabanındaki verilerin bozulmasına neden olabileceğinden dikkatli bir şekilde kullanılmalıdır.

Aşağıdaki senaryoda verilerin yanlış içeri aktarılmasının veri bozulmasına nasıl yol açabileceği gösterilmektedir:

  1. Bir kullanıcı için seçenek ON olarak ayarlanır.

  2. Kullanıcı veritabanına bağlanan uygulamayı çalıştırır. Uygulama, şifrelenmiş sütunlara düz metin değerleri eklemek için toplu API'ler kullanır. Uygulama, Always Encrypted özellikli bir istemci sürücüsünün ekleme işlemindeki verileri şifrelemesini bekler. Ancak, uygulama yanlış yapılandırıldığından Always Encrypted'ı desteklemeyen bir sürücü kullanır veya bağlantı dizesi column encryption setting=enabled içermez.

  3. Uygulama sunucuya düz metin değerleri gönderir. Kullanıcı için sunucuda şifreleme meta verileri denetimleri devre dışı bırakıldığından, sunucu hatalı verilerin (doğru şifrelenmiş şifreleme metni yerine düz metin) şifrelenmiş bir sütuna eklenmesine izin verir.

  4. Aynı veya başka bir uygulama, Always Encrypted özellikli bir sürücü kullanarak ve bağlantı dizesindeki column encryption setting=enabled ile veritabanına bağlanır ve verileri alır. Uygulama, verilerin şifresinin saydam olarak çözülmesini bekler. Ancak, veriler yanlış şifreleme metni olduğundan sürücü verilerin şifresini çözemiyor.

En iyi uygulama

Bu seçeneği kullanarak uzun süre çalışan iş yükleri için belirlenen kullanıcı hesaplarını kullanın.

Şifrelenmiş verileri şifresini çözmeden taşıması gereken kısa süre çalışan toplu kopyalama uygulamaları veya araçları için, uygulamayı çalıştırmadan hemen önce seçeneğini ON ayarlayın ve işlemi çalıştırdıktan hemen sonra KAPALI olarak ayarlayın.

Yeni uygulamalar geliştirmek için bu seçeneği kullanmayın. Bunun yerine, SQL Server için .NET Framework Veri Sağlayıcısı seçeneği gibi AllowEncryptedValueModifications tek bir oturum için şifreleme meta veri denetimlerini gizlemeye yönelik bir API sunan bir istemci sürücüsü kullanın. Bkz. SqlBulkCopy kullanarak Şifrelenmiş Verileri Kopyalama.