Aracılığıyla paylaş


Always Encrypted için anahtar yönetimine genel bakış

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

Always Encrypted verilerinizi korumak için iki tür şifreleme anahtarı kullanır: verilerinizi şifrelemek için bir anahtar ve verilerinizi şifreleyen anahtarı şifrelemek için başka bir anahtar. Sütun şifreleme anahtarı verilerinizi şifreler, sütun ana anahtarı sütun şifreleme anahtarını şifreler. Bu makalede, bu şifreleme anahtarlarını yönetmeye yönelik ayrıntılı bir genel bakış sağlanır.

Always Encrypted anahtarları ve anahtar yönetimini tartışırken, gerçek şifreleme anahtarları ile anahtarların açıklayan meta veri nesneleri arasındaki ayrımı anlamak önemlidir. Gerçek şifreleme anahtarlarına başvurmak için sütun şifreleme anahtarı ve sütun ana anahtarı terimlerini kullanırız ve veritabanındaki Always Encrypted anahtar açıklamaları başvurmak için sütun şifreleme anahtarı meta verileri ve sütun ana anahtar meta verileri kullanırız.

  • Sütun şifreleme anahtarları verileri şifrelemek için kullanılan içerik şifreleme anahtarlarıdır. Adından da anlaşılacağı gibi, veritabanı sütunlarındaki verileri şifrelemek için sütun şifreleme anahtarlarını kullanırsınız. Bir veya daha fazla sütunu aynı sütun şifreleme anahtarıyla şifreleyebilir veya uygulama gereksinimlerinize bağlı olarak birden çok sütun şifreleme anahtarı kullanabilirsiniz. Sütun şifreleme anahtarları kendileri şifrelenir ve yalnızca sütun şifreleme anahtarlarının şifrelenmiş değerleri veritabanında depolanır (sütun şifreleme anahtarı meta verilerinin bir parçası olarak). Sütun şifreleme anahtarı meta verileri sys.column_encryption_keys (Transact-SQL) ve sys.column_encryption_key_values (Transact-SQL) katalog görünümlerinde depolanır. AES-256 algoritmasıyla kullanılan sütun şifreleme anahtarları 256 bit uzunluğundadır.

  • Sütun ana anahtarları, sütun şifreleme anahtarlarını şifrelemek için kullanılan anahtar koruma anahtarlarıdır. Sütun ana anahtarları Windows Sertifika Deposu, Azure Key Vault veya donanım güvenlik modülü gibi güvenilir bir anahtar deposunda depolanmalıdır. Veritabanı yalnızca sütun ana anahtarları (anahtar deposunun türü ve konumu) hakkındaki meta verileri içerir. Sütun ana anahtarı meta verileri sys.column_master_keys (Transact-SQL) katalog görünümünde depolanır.

Veritabanı sistemindeki anahtar meta verilerinin düz metin sütun ana anahtarları veya düz metin sütun şifreleme anahtarları içermediğini unutmayın. Veritabanı yalnızca sütun ana anahtarlarının türü ve konumu ve sütun şifreleme anahtarlarının şifrelenmiş değerleri hakkında bilgi içerir. Bu, düz metin anahtarlarının hiçbir zaman veritabanı sistemine sunulmaz ve veritabanı sistemi tehlikeye atıldığında bile Always Encrypted kullanılarak korunan verilerin güvenli olmasını sağlar. Veritabanı sisteminin düz metin anahtarlarına erişediğinden emin olmak için, anahtar yönetimi araçlarınızı veritabanınızı barındıran makineden farklı bir makinede çalıştırdığınızdan emin olun. Ayrıntılar için aşağıdaki Anahtar Yönetimi için Güvenlik konuları bölümünü gözden geçirin.

Veritabanı yalnızca şifrelenmiş veriler içerdiğinden (Always Encrypted korumalı sütunlarda) ve düz metin anahtarlara erişemediğinden, verilerin şifresini çözemez. Bu, Always Encrypted sütunlarını sorgulamanın yalnızca şifrelenmiş değerler döndüreceği anlamına gelir; bu nedenle korumalı verileri şifrelemesi veya şifresini çözmesi gereken istemci uygulamalarının sütun ana anahtarına ve ilgili sütun şifreleme anahtarlarına erişebilmesi gerekir. Ayrıntılar için bkz. Always EncryptedKullanarak Uygulama Geliştirme.

Anahtar Yönetimi Görevleri

Anahtarları yönetme işlemi aşağıdaki üst düzey görevlere ayrılabilir:

  • Anahtar sağlama - Fiziksel anahtarları güvenilen bir anahtar deposunda oluşturma (örneğin, Windows Sertifika Deposu, Azure Key Vault veya donanım güvenlik modülünde), sütun şifreleme anahtarlarını sütun ana anahtarlarıyla şifreleme ve veritabanındaki her iki anahtar türü için meta veriler oluşturma.

  • Anahtar döndürme - Mevcut bir anahtarı düzenli aralıklarla yeni bir anahtarla değiştirme. Anahtarın gizliliği ihlal edildiyse veya kuruluşunuzun şifreleme anahtarlarının döndürülmesi gereken ilkelere veya uyumluluk düzenlemelerine uymak için anahtarı döndürmeniz gerekebilir.

Anahtar Yönetimi Rolleri

Always Encrypted anahtarlarını yöneten kullanıcıların iki farklı rolü vardır; Güvenlik Yöneticileri ve Veritabanı Yöneticileri (DTA' lar):

  • Güvenlik Yöneticisi - sütun şifreleme anahtarları ve sütun ana anahtarları oluşturur ve sütun ana anahtarlarını içeren anahtar depolarını yönetir. Bu görevleri gerçekleştirmek için Güvenlik Yöneticisinin anahtarlara ve anahtar deposuna erişebilmesi gerekir, ancak veritabanına erişmesi gerekmez.
  • DBA- veritabanındaki anahtarlarla ilgili meta verileri yönetir. Anahtar yönetimi görevlerini gerçekleştirmek için DBA'nın veritabanındaki anahtar meta verilerini yönetebilmesi gerekir, ancak anahtarlara veya sütun ana anahtarlarının bulunduğu anahtar deposuna erişmesi gerekmez.

Yukarıdaki rolleri göz önünde bulundurarak Always Encrypted için anahtar yönetim görevlerini gerçekleştirmenin iki farklı yolu vardır; rol ayrımı ileve rol ayrımı olmadan. Kuruluşunuzun gereksinimlerine bağlı olarak gereksinimlerinize en uygun anahtar yönetimi sürecini seçebilirsiniz.

Rol Ayrımı ile Anahtarları Yönetme

Always Encrypted anahtarları rol ayrımı ile yönetildiğinde, kuruluştaki farklı kişiler Güvenlik Yöneticisi ve DBA rollerini kabul eder. Rol ayrımı içeren bir anahtar yönetimi işlemi, DTA'ların gerçek anahtarları tutan anahtarlara veya anahtar depolarına erişimi olmamasını ve Güvenlik Yöneticilerinin hassas veriler içeren veritabanına erişimi olmamasını sağlar. Amacınız kuruluşunuzdaki DTA'ların hassas verilere erişemediğini sağlamaksa anahtarları rol ayrımı ile yönetmeniz önerilir.

Not: Güvenlik Yöneticileri düz metin anahtarları oluşturur ve bunlarla çalışır, bu nedenle görevlerini hiçbir zaman veritabanı sistemini barındıran aynı bilgisayarlarda ya da DTA'lar veya olası saldırgan olabilecek başka kişiler tarafından erişilebilen bilgisayarlarda gerçekleştirmemelidir.

Rol Ayrımı Olmadan Anahtarları Yönetme

Always Encrypted anahtarları rol ayrımı olmadan yönetildiğinde, tek bir kişi hem Güvenlik Yöneticisi hem de DBA rollerini varsayabilir. Bu, kişinin hem anahtarlara/anahtar depolarına hem de anahtar meta verilerine erişmesi ve bunları yönetebilmesi gerektiği anlamına gelebilir. DevOps modelini kullanan kuruluşlar veya veritabanı bulutta barındırılıyorsa ve birincil hedef bulut yöneticilerinin (şirket içi DTA'ları değil) hassas verilere erişmesini kısıtlamaksa anahtarları rol ayrımı olmadan yönetmesi önerilir.

Always Encrypted Anahtarlarını Yönetme Araçları

Always Encrypted anahtarları SQL Server Management Studio (SSMS) ve PowerShellkullanılarak yönetilebilir:

  • SQL Server Management Studio (SSMS) - anahtar deposu erişimi ve veritabanı erişimini içeren görevleri birleştiren iletişim kutuları ve sihirbazlar sağlar, bu nedenle SSMS rol ayrımını desteklemez, ancak anahtarlarınızı yapılandırmayı kolaylaştırır. Anahtarları SSMS kullanarak yönetme hakkında daha fazla bilgi için bkz:

  • SQL Server PowerShell : Always Encrypted anahtarlarını rol ayrımı ile ve rol ayrımı olmadan yönetmek için cmdlet'ler içerir. Daha fazla bilgi için bkz:

    • PowerShell kullanarak Always Encrypted anahtarlarını yapılandırma
    • PowerShell kullanarak Always Encrypted anahtarlarını döndürme

Anahtar Yönetimi için Güvenlik Konuları

Always Encrypted'ın birincil amacı, veritabanı sistemi veya barındırma ortamı tehlikeye girmiş olsa bile veritabanında depolanan hassas verilerin güvenli olduğundan emin olmaktır. Always Encrypted'ın hassas veri sızıntılarını önlemeye yardımcı olabileceği güvenlik saldırılarına örnek olarak şunlar verilebilir:

  • DBA gibi hassas veri sütunlarını sorgulayan kötü amaçlı bir yüksek ayrıcalıklı veritabanı kullanıcısı.
  • SQL Server örneğini barındıran, SQL Server işleminin belleğini veya SQL Server işlem dökümü dosyalarını tarayan bir bilgisayarın düzenbaz yöneticisi.
  • Müşteri veritabanını sorgulayan, SQL Server döküm dosyalarını inceleyerek veya müşteri verilerini bulutta barındıran bir bilgisayarın belleğini inceleyerek kötü amaçlı bir veri merkezi operatörü.
  • Veritabanını barındıran bir bilgisayarda çalışan kötü amaçlı yazılım.

Always Encrypted'ın bu tür saldırıları önlemede etkili olduğundan emin olmak için, anahtar yönetimi işleminiz sütun ana anahtarlarının ve sütun şifreleme anahtarlarının ve sütun ana anahtarlarını içeren bir anahtar deposunun kimlik bilgilerinin hiçbir zaman olası bir saldırgana açık olmadığından emin olmalıdır. Aşağıdaki yönergeleri izlemeniz gerekir:

  • Veritabanınızı barındıran bir bilgisayarda hiçbir zaman sütun ana anahtarları veya sütun şifreleme anahtarları oluşturmayın. Bunun yerine, anahtarları anahtar yönetimine adanmış ayrı bir bilgisayarda veya yine de anahtarlara erişmesi gereken uygulamaları barındıran bir makinede oluşturun. Bu, veritabanınızı barındıran bilgisayarda anahtarları oluşturmak için kullanılan araçları hiçbir zaman çalıştırmamanız gerektiği anlamına gelir çünkü bir saldırgan Always Encrypted anahtarlarınızı sağlamak veya korumak için kullanılan bir bilgisayara erişirse, anahtarlar yalnızca kısa bir süre için aracın belleğinde görünse bile, saldırgan anahtarlarınızı potansiyel olarak alabilir.
  • Anahtar yönetimi işleminizin yanlışlıkla sütun ana anahtarlarını veya sütun şifreleme anahtarlarını göstermediğinden emin olmak için, bir anahtar yönetimi işlemi tanımlayıp uygulamadan önce olası saldırganları ve güvenlik tehditlerini belirlemek kritik önem taşır. Örneğin, amacınız DBA'ların hassas verilere erişimi olmadığından emin olmaksa, DBA anahtarları oluşturmakla sorumlu olamaz. Ancak DBA , meta veriler düz metin anahtarlarını içermediğinden veritabanındaki anahtar meta verilerini yönetebilir.

Sonraki Adımlar