Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Sütun Ana Anahtarları, Always Encrypted'da sütun şifreleme anahtarlarını şifrelemek için kullanılan anahtar koruma anahtarlarıdır. Sütun ana anahtarları güvenilir bir anahtar deposunda depolanmalıdır ve anahtarların verileri şifrelemesi veya şifresini çözmesi gereken uygulamalar ve Always Encrypted anahtarlarını yapılandırma ve Always Encrypted anahtarlarını yönetme araçları tarafından erişilebilir olması gerekir.
Bu makalede, bir anahtar deposu seçme ve Always Encrypted için sütun ana anahtarları oluşturmayla ilgili ayrıntılar sağlanır. Ayrıntılı bir genel bakış için bkz. Always Encryptediçin Anahtar Yönetimine Genel Bakış.
Sütun Ana Anahtarınız için Anahtar Deposu Seçme
Always Encrypted, Always Encrypted sütun ana anahtarlarını depolamak için birden çok anahtar depolarını destekler. Desteklenen anahtar depoları, kullandığınız sürücüye ve sürüme bağlı olarak değişir.
Dikkate alınması gereken iki üst düzey anahtar deposu kategorisi vardır: Yerel Anahtar Depolarıve Merkezi Anahtar Depoları.
Yerel veya Merkezi Anahtar Deposu mu?
Yerel Anahtar Depoları- yalnızca yerel anahtar depoyu içeren bilgisayarlardaki uygulamalar tarafından kullanılabilir. Başka bir deyişle, anahtar deposunu ve anahtarı uygulamanızı çalıştıran her bilgisayara çoğaltmanız gerekir. Yerel anahtar deposuna örnek olarak Windows Sertifika Deposu yer alır. Yerel anahtar deposu kullanırken, anahtar deposunun uygulamanızı barındıran her makinede bulunduğundan ve bilgisayarın Always Encrypted kullanılarak korunan verilere erişmek için uygulamanızın ihtiyaç duyduğu sütun ana anahtarlarını içerdiğinden emin olmanız gerekir. Bir sütun ana anahtarını ilk kez sağladığınızda veya anahtarı değiştirdiğinizde (döndürdüğünüzde), anahtarın uygulamalarınızın barındırılacağı tüm makinelere dağıtıldığından emin olmanız gerekir.
Merkezi Anahtar Depoları- uygulamaları birden çok bilgisayarda sunar. Merkezi anahtar deposuna örnek olarak Azure Key Vault. Merkezi anahtar deposu genellikle anahtar yönetimini kolaylaştırır çünkü sütun ana anahtarlarınızın birden çok kopyasını birden çok makinede tutmanız gerekmez. Uygulamalarınızın merkezi anahtar deposuna bağlanacak şekilde yapılandırıldığından emin olun.
Always Encrypted Özellikli İstemci Sürücülerinde Hangi Anahtar Depoları Desteklenir?
Always Encrypted özellikli istemci sürücüleri, Always Encrypted'i istemci uygulamalarınıza eklemeye yönelik yerleşik desteğe sahip SQL Server istemci sürücüleridir. Always Encrypted özellikli sürücüler popüler anahtar depoları için birkaç yerleşik sağlayıcı içerir. Bazı sürücüler ayrıca özel bir sütun ana anahtar deposu sağlayıcısı uygulamanıza ve kaydetmenize olanak sağlar; böylece yerleşik sağlayıcı olmasa bile herhangi bir anahtar depounu kullanabilirsiniz. Yerleşik sağlayıcı ile özel sağlayıcı arasında karar verirken, yerleşik sağlayıcı kullanmanın genellikle uygulamalarınızda daha az değişiklik anlamına geldiğini düşünün (bazı durumlarda yalnızca veritabanı bağlantı dizesini değiştirmek gerekir).
Kullanılabilir yerleşik sağlayıcılar hangi sürücünün, sürücü sürümünün ve işletim sisteminin seçildiğine bağlıdır. Hangi anahtar depolarının kullanıma hazır olarak destekleneceğini ve sürücünüzün özel anahtar deposu sağlayıcılarını destekleyip desteklemediğini belirlemek için lütfen belirli sürücünüz için Always Encrypted belgelerine bakın Always Encryptedkullanarak uygulama geliştirme.
SQL Araçlarında Hangi Anahtar Depoları Desteklenir?
SQL Server Management Studio, Azure Data Studio ve SqlServer PowerShell modülünde depolanan sütun ana anahtarları desteklenir:
Azure Key Vault'ta anahtar kasaları ve yönetilen HSM'ler.
Not
Yönetilen HSM'ler SSMS 18.9 veya üzerini ve SqlServer PowerShell modülünün 21.1.18235 veya sonraki bir sürümünü gerektirir. Azure Data Studio şu anda yönetilen HSM'leri desteklememektedir.
Windows Sertifika Deposu.
Şifreleme Yeni Nesil (CNG) API'si veya Şifreleme API'si (CAPI) sağlayan donanım güvenlik modülü gibi anahtar depolama sistemleri.
Windows Sertifika Deposu'nda Sütun Ana Anahtarları Oluşturma
Sütun ana anahtarı, Windows Sertifika Deposu'nda depolanan bir sertifika olabilir. Always Encrypted özellikli bir sürücü, son kullanma tarihini veya sertifika yetkilisi zincirini doğrulamaz. Sertifika yalnızca ortak ve özel anahtardan oluşan bir anahtar çifti olarak kullanılır.
Geçerli bir sütun ana anahtarı olmak için sertifikanın şunları yapması gerekir:
- bir X.509 sertifikası olmalı.
- iki sertifika deposu konumundan birinde depolanabilir: yerel makine veya geçerli kullanıcı . (Yerel makine sertifika deposu konumunda sertifika oluşturmak için hedef makinede yönetici olmanız gerekir.)
- özel anahtar içerir (sertifikadaki anahtarların önerilen uzunluğu 2048 bit veya üzeridir).
- anahtar değişimi için oluşturulmalıdır.
Geçerli bir sütun ana anahtarı olan bir sertifika oluşturmanın birden çok yolu vardır, ancak en basit seçenek otomatik olarak imzalanan bir sertifika oluşturmaktır.
PowerShell kullanarak otomatik olarak imzalanan sertifika oluşturma
New-SelfSignedCertificate cmdlet'ini kendi kendine imzalanan bir sertifika oluşturmak için kullanın. Aşağıdaki örnekte Always Encrypted için sütun ana anahtarı olarak kullanılabilecek bir sertifikanın nasıl oluşturulacağı gösterilmektedir.
# New-SelfSignedCertificate is a Windows PowerShell cmdlet that creates a self-signed certificate. The below examples show how to generate a certificate that can be used as a column master key for Always Encrypted.
$cert = New-SelfSignedCertificate -Subject "AlwaysEncryptedCert" -CertStoreLocation Cert:CurrentUser\My -KeyExportPolicy Exportable -Type DocumentEncryptionCert -KeyUsage KeyEncipherment -KeySpec KeyExchange -KeyLength 2048
# To create a certificate in the local machine certificate store location you need to run the cmdlet as an administrator.
$cert = New-SelfSignedCertificate -Subject "AlwaysEncryptedCert" -CertStoreLocation Cert:LocalMachine\My -KeyExportPolicy Exportable -Type DocumentEncryptionCert -KeyUsage KeyEncipherment -KeySpec KeyExchange -KeyLength 2048
SQL Server Management Studio (SSMS) kullanarak otomatik olarak imzalanan sertifika oluşturma
Ayrıntılar için bkz. SQL Server Management Studio kullanarak Always Encrypted anahtarlarını sağlama. SSMS kullanan ve Always Encrypted anahtarlarını Windows Sertifika Deposu'nda depolayan adım adım öğretici için bkz. Always Encrypted Sihirbazı öğreticisi (Windows Sertifika Deposu).
Sertifikaları Uygulamaların ve Kullanıcıların Kullanımına Sunma
Sütun ana anahtarınız yerel makine sertifika deposu konumunda depolanan bir sertifikaysa, sertifikayı özel anahtarla dışarı aktarmanız ve şifrelenmiş sütunlarda depolanan verileri şifrelemesi veya şifresini çözmesi beklenen uygulamaları barındıran tüm makinelere veya Always Encrypted anahtarlarını yönetmek için araçlara aktarmanız gerekir. Ayrıca, sertifikayı sütun ana anahtarı olarak kullanabilmesi için her kullanıcıya yerel makine sertifika deposu konumunda depolanan sertifika için okuma izni verilmesi gerekir.
Sütun ana anahtarınız geçerli kullanıcı sertifika deposu konumunda depolanan bir sertifikaysa, sertifikayı özel anahtarla dışarı aktarmanız ve şifrelenmiş sütunlarda depolanan verileri şifrelemesi veya şifresini çözmesi beklenen uygulamaları çalıştıran tüm kullanıcı hesaplarının geçerli kullanıcı sertifika deposu konumuna aktarmanız gerekir. veya Always Encrypted'ı yapılandırmaya ve Always Encrypted anahtarlarını yönetmeye yönelik araçlar (bu uygulamaları/araçları içeren tüm makinelerde). İzin yapılandırması gerekmez- bir makinede oturum açtıktan sonra, kullanıcı geçerli kullanıcı sertifika deposu konumundaki tüm sertifikalara erişebilir.
PowerShell kullanma
Import-PfxCertificate ve Export-PfxCertificate cmdlet'lerini kullanarak sertifikayı içeri ve dışarı aktarın.
Microsoft Yönetim Konsolu'nu kullanma
Kullanıcıya yerel makine sertifika deposu konumunda depolanan bir sertifika için Okuma izni vermek için şu adımları izleyin:
- Bir komut istemi açın ve mmc yazın.
- MMC konsolunda, Dosya menüsünde, Ek Bileşen Ekle/Kaldır seçeneğine tıklayın.
- Ek Bileşen Ekle/Kaldır iletişim kutusunda Ekleöğesine tıklayın.
- Tek Başına Ek Bileşen Ekle iletişim kutusunda Sertifikalar 'e tıklayın, Ekle 'ye tıklayın.
- Sertifikalar ek bileşeni iletişim kutusunda, Bilgisayar hesabıöğesine tıklayın ve sonra Sonöğesine tıklayın.
- Tek Başına Ek Bileşen Ekle iletişim kutusunda Kapat'atıklayın.
- Ek Bileşen Ekle/Kaldır iletişim kutusunda Tamam'ne tıklayın.
- Sertifikaları ek bileşeninden sertifikayı Sertifikalar > Kişisel klasöründe bulun, Sertifika'ya sağ tıklayın, Tüm Görevler üzerine gelin ve Özel Anahtarları Yönet'etıklayın.
- Güvenlik iletişim kutusunda, gerekirse kullanıcı hesabı için okuma izni ekleyin.
Azure Key Vault'ta Sütun Ana Anahtarları Oluşturma
Azure Key Vault, şifreleme anahtarlarının ve gizli dizilerin korunmasına yardımcı olur ve özellikle de uygulamalarınız Azure'da barındırılıyorsa Always Encrypted için sütun ana anahtarlarını depolamak için kullanışlı bir seçenektir. Azure Key Vault'nde anahtar oluşturmak için Azure aboneliği ve Azure Key Vault gerekir. Anahtar, bir anahtar kasasında veya yönetilen HSMdepolanabilir. Geçerli bir sütun ana anahtarı olmak için Azure Key Vault'ta yönetilen anahtar bir RSA anahtarı olmalıdır.
Azure CLI, Portal veya PowerShell kullanma
Anahtar kasasında anahtar oluşturma hakkında bilgi için bkz:
- Hızlı Başlangıç: Azure CLI kullanarak Azure Key Vault'tan anahtar ayarlama ve alma
- Hızlı Başlangıç: Azure PowerShell kullanarak Azure Key Vault'tan anahtar ayarlama ve alma
- Hızlı Başlangıç: Azure portalını kullanarak Azure Key Vault'tan anahtar ayarlama ve alma
Yönetilen HSM'de anahtar oluşturma hakkında bilgi için bkz:
- Azure CLI kullanarak Yönetilen HSM'yi yönetme
SQL Server Management Studio (SSMS)
SSMS kullanarak bir anahtar kasasında veya Azure Key Vault'ta yönetilen bir HSM'de sütun ana anahtarı oluşturma hakkında ayrıntılı bilgi için bkz. SQL Server Management Studio kullanarak Always Encrypted anahtarlarını sağlama . SSMS kullanan ve Always Encrypted anahtarlarını bir anahtar kasasında depolayan adım adım öğretici için bkz. Always Encrypted Sihirbazı öğreticisi (Azure Key Vault).
Azure Key Vault Anahtarlarını Uygulamalar ve Kullanıcılar için Kullanılabilir Hale Getirme
Şifrelenmiş bir sütuna erişmek için uygulamanızın Azure Key Vault'a erişebilmesi ve sütunu koruyan sütun şifreleme anahtarının şifresini çözmek için sütun ana anahtarı üzerinde belirli izinlere sahip olması gerekir.
Always Encrypted anahtarlarını yönetmek için Azure Key Vault'ta sütun ana anahtarlarını listeleme ve oluşturma ve anahtarları kullanarak şifreleme işlemleri gerçekleştirme izinlerine sahip olmanız gerekir.
Anahtar Kasaları
Sütun ana anahtarlarınızı bir anahtar kasasında depolarsanız ve yetkilendirme için rol izinlerini kullanıyorsanız:
Uygulamanızın kimliğinin anahtar kasasında aşağıdaki veri düzlemi eylemlerine izin veren rollerin bir üyesi olması gerekir:
- Microsoft.KeyVault/vaults/keys/şifreyi_cozme/eylem
- Microsoft.KeyVault/vaults/keys/read
- Microsoft.KeyVault/vaults/keys/verify/action
Uygulamaya gerekli izni vermenin en kolay yolu kimliğini Key Vault Şifreleme Kullanıcısı rolüne eklemektir. Gerekli izinlere sahip özel bir rol de oluşturabilirsiniz.
Always Encrypted anahtarlarını yöneten bir kullanıcının, anahtar kasasında aşağıdaki veri düzlemi işlemlerine izin veren bir üye veya rollerden biri olması gerekir.
- Microsoft.KeyVault/vaults/keys/create/action
- Microsoft.KeyVault/vaults/keys/şifreyi_cozme/eylem
- Microsoft.KeyVault/vaults/keys/encrypt/action
- Microsoft.KeyVault/vaults/keys/read
- Microsoft.KeyVault/vaults/keys/sign/action
- Microsoft.KeyVault/vaults/keys/verify/action
Kullanıcıya gerekli izni vermenin en kolay yolu kullanıcıyı Key Vault Şifreleme Kullanıcısı rolüne eklemektir. Gerekli izinlere sahip özel bir rol de oluşturabilirsiniz.
Sütun anahtarlarınızı bir anahtar kasasında depoluyorsanız ve yetkilendirme amacıyla erişim ilkeleri kullanıyorsanız:
- Uygulamanızın kimliği, anahtar kasasında aşağıdaki erişim ilkesi izinlerine ihtiyaç duyar: alın, unwrapKeyve doğrulayın.
- Always Encrypted anahtarlarını yöneten bir kullanıcı, anahtar kasasında aşağıdaki erişim ilkesi izinlerine ihtiyaç duyar: oluşturma, alma, listeleme, imzalama, anahtar çözme, anahtar sarma, doğrulama.
Anahtar kasaları için kimlik doğrulama ve yetkilendirmeyi yapılandırma hakkında genel bilgiler için bakınız Bir güvenlik sorumlusunun Key Vault'a erişmesini yetkilendirin.
Yönetilen HSM'ler
Uygulamanızın kimliği, yönetilen HSM'nizde aşağıdaki veri düzlemi eylemlerine izin veren rollerin bir üyesi olmalıdır:
- Microsoft.KeyVault/managedHsm/keys/decrypt/action
- Microsoft.KeyVault/managedHsm/anahtarlar/oku/eylem
- Microsoft.KeyVault/managedHsm/keys/verify/action
Microsoft, yalnızca yukarıdaki izinleri içeren özel bir rol oluşturmanızı önerir.
Always Encrypted için anahtarları yöneten bir kullanıcının, anahtar üzerinde aşağıdaki veri düzlemi eylemlerine izin veren bir üye veya rol olması gerekir:
- Microsoft.KeyVault/managedHsm/keys/create/action
- Microsoft.KeyVault/managedHsm/keys/decrypt/action
- Microsoft.KeyVault/managedHsm/keys/encrypt/action
- Microsoft.KeyVault/managedHsm/keys/read
- Microsoft.AnahtarKasası/yönetilenHsm/anahtarlar/imzala/eylem
- Microsoft.KeyVault/managedHsm/keys/verify/action
Kullanıcıya yukarıdaki izinleri vermenin en kolay yolu kullanıcıyı Yönetilen HSM Şifreleme Kullanıcısı rolüne eklemektir. Gerekli izinlere sahip özel bir rol de oluşturabilirsiniz.
Yönetilen HSM'ler için erişim denetimi hakkında daha fazla bilgi için bkz:
- yönetilen HSM erişim denetimi
- Yönetilen HSM yerel RBAC yerleşik roller.
CNG kullanarak Donanım Güvenlik Modüllerinde Sütun Ana Anahtarları Oluşturma
Always Encrypted için sütun ana anahtarı, Şifreleme Yeni Nesil (CNG) API'sini uygulayan bir anahtar deposunda depolanabilir. Genellikle bu tür bir depo bir donanım güvenlik modülüdür (HSM). HSM, dijital anahtarları koruyan ve yöneten ve şifreleme işlemi sağlayan fiziksel bir cihazdır. HSM'ler geleneksel olarak bir eklenti kartı veya doğrudan bir bilgisayara (yerel HSM'ler) veya bir ağ sunucusuna bağlanan bir dış cihaz biçiminde gelir.
Bir HSM'nin belirli bir makinedeki uygulamaların kullanımına sunulması için, CNG uygulayan bir Anahtar Depolama Sağlayıcısının (KSP) makineye yüklenmesi ve yapılandırılması gerekir. Always Encrypted istemci sürücüsü (sürücü içindeki bir sütun ana anahtar deposu sağlayıcısı), anahtar deposunda depolanan sütun ana anahtarıyla korunan sütun şifreleme anahtarlarını şifrelemek ve şifresini çözmek için KSP'yi kullanır.
Windows, test amacıyla kullanabileceğiniz yazılım tabanlı bir KSP olan Microsoft Yazılım Anahtarı Depolama Sağlayıcısını içerir. bkz. CNG Anahtar Depolama Sağlayıcıları.
CNG/KSP kullanarak Anahtar Deposunda Sütun Ana Anahtarları Oluşturma
Sütun ana anahtarı, RSA algoritmasını kullanan bir asimetrik anahtar (ortak/özel anahtar çifti) olmalıdır. Önerilen anahtar uzunluğu 2048 veya üzeridir.
HSM'ye Özgü Araçları Kullanma
HSM'nizin belgelerine bakın.
PowerShell kullanma
PowerShell'de CNG kullanarak anahtar deposunda anahtar oluşturmak için .NET API'lerini kullanabilirsiniz.
$cngProviderName = "Microsoft Software Key Storage Provider" # If you have an HSM, you can use a KSP for your HSM instead of a Microsoft KSP
$cngAlgorithmName = "RSA"
$cngKeySize = 2048 # Recommended key size for Always Encrypted column master keys
$cngKeyName = "AlwaysEncryptedKey" # Name identifying your new key in the KSP
$cngProvider = New-Object System.Security.Cryptography.CngProvider($cngProviderName)
$cngKeyParams = New-Object System.Security.Cryptography.CngKeyCreationParameters
$cngKeyParams.provider = $cngProvider
$cngKeyParams.KeyCreationOptions = [System.Security.Cryptography.CngKeyCreationOptions]::OverwriteExistingKey
$keySizeProperty = New-Object System.Security.Cryptography.CngProperty("Length", [System.BitConverter]::GetBytes($cngKeySize), [System.Security.Cryptography.CngPropertyOptions]::None);
$cngKeyParams.Parameters.Add($keySizeProperty)
$cngAlgorithm = New-Object System.Security.Cryptography.CngAlgorithm($cngAlgorithmName)
$cngKey = [System.Security.Cryptography.CngKey]::Create($cngAlgorithm, $cngKeyName, $cngKeyParams)
SQL Server Management Studio'yu kullanma
Bkz. SQL Server Management Studio kullanarak Always Encrypted anahtarları sağlama.
CNG Anahtarlarını Uygulama ve Kullanıcılara Kullanılabilir Hale Getirme
Bir makinede KSP'yi yapılandırma ve uygulamalara ve kullanıcılara HSM erişimi verme hakkında HSM ve KSP belgelerinize bakın.
CAPI kullanarak Donanım Güvenlik Modüllerinde Sütun Ana Anahtarları Oluşturma
Always Encrypted için sütun ana anahtarı, Şifreleme API'sini (CAPI) uygulayan bir anahtar deposunda depolanabilir. Genellikle bu tür bir depo, dijital anahtarları koruyan ve yöneten ve şifreleme işleme sağlayan fiziksel bir cihaz olan bir donanım güvenlik modülüdür (HSM). HSM'ler geleneksel olarak bir eklenti kartı veya doğrudan bir bilgisayara (yerel HSM'ler) veya bir ağ sunucusuna bağlanan bir dış cihaz biçiminde gelir.
Bir HSM'nin belirli bir makinedeki uygulamaların kullanımına sunulması için, CAPI uygulayan bir Şifreleme Hizmet Sağlayıcısının (CSP) makineye yüklenmesi ve yapılandırılması gerekir. Always Encrypted istemci sürücüsü (sürücü içindeki bir sütun ana anahtar deposu sağlayıcısı), anahtar deposunda depolanan sütun ana anahtarıyla korunan sütun şifreleme anahtarlarını şifrelemek ve şifresini çözmek için CSP'yi kullanır.
Not
CAPI eski, kullanım dışı bırakılmış bir API'dir. HSM'niz için bir KSP varsa CSP/CAPI yerine bunu kullanmanız gerekir.
CSP, Always Encrypted ile kullanılacak RSA algoritmasını desteklemelidir.
Windows, RSA'yi destekleyen ve test amacıyla kullanabilen aşağıdaki yazılım tabanlı (HSM tarafından desteklenmeyen) CSP'leri içerir: Microsoft Gelişmiş RSA ve AES Şifreleme Sağlayıcısı.
CAPI/CSP kullanarak Anahtar Deposunda Sütun Ana Anahtarları Oluşturma
Sütun ana anahtarı, RSA algoritmasını kullanan bir asimetrik anahtar (ortak/özel anahtar çifti) olmalıdır. Önerilen anahtar uzunluğu 2048 veya üzeridir.
HSM'ye Özgü Araçları Kullanma
HSM'nizin belgelerine bakın.
SQL Server Management Studio'yu (SSMS) kullanma
Bkz. SQL Server Management Studio kullanarak Always Encrypted anahtarları sağlama.
CNG Anahtarlarını Uygulama ve Kullanıcılara Kullanılabilir Hale Getirme
Bir makinede CSP'yi yapılandırma ve uygulamalara ve kullanıcılara HSM erişimi verme hakkında HSM ve CSP'nizin belgelerine bakın.
Sonraki Adımlar
- SQL Server Management Studio'u kullanarak Always Encrypted anahtarlarını sağla
- PowerShell kullanarak Always Encrypted anahtarlarını sağlamak
Ayrıca Bkz.
- Her Zaman Şifreli
- Always Encrypted için anahtar yönetimine genel bakış