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: Windows
Azure SQL Veritabanı'nda SQL Server 2019 (15.x) ve sonraki sürümleri
Bu makalede, Güvenli Kuşatmalar ile Always Encryptediçin kullanılan, sunucu tarafındaki güvenli kuşatmalarda hesaplamaları destekleyen kuşatma destekli anahtarların nasıl temin edildiği ve yapılandırıldığı açıklanmaktadır.
Always Encrypted anahtarlarını yönetme için genel yönergeler ve işlemler, kapanım özellikli anahtarları sağlarken geçerlidir. Bu makalede, güvenli kuşatmalarla Always Encrypted'a özgü ayrıntılar ele alınıyor.
SQL Server Management Studio veya PowerShell kullanarak kapanım özellikli bir sütun ana anahtarı sağlamak için yeni anahtarın kapanım hesaplamalarını desteklediğinden emin olun. Bu, aracın (SSMS veya PowerShell) veritabanındaki sütunların anahtar meta verileri içinde CREATE COLUMN MASTER KEY'i ayarlayan ENCLAVE_COMPUTATIONS deyimini üretmesine neden olur. Daha fazla bilgi için bkz. CREATE COLUMN MASTER KEY (Transact-SQL)
Araç ayrıca sütun ana özelliklerini sütun ana anahtarıyla dijital olarak imzalar ve imzayı veritabanı meta verilerinde depolar. İmza, ENCLAVE_COMPUTATIONS ayarında kötü niyetli müdahaleyi önler. SQL istemci sürücüleri, güvenli alan kullanımına izin vermeden önce imzaları doğrular. Bu, güvenlik yöneticilerine kapalı alan içinde hangi sütun verilerinin hesaplanabileceğini denetleme olanağı sağlar.
ENCLAVE_COMPUTATIONS sabittir, yani meta verilerde sütun ana anahtarını tanımladıktan sonra değiştiremezsiniz. Belirli bir sütun ana anahtarının şifrelediği bir sütun şifreleme anahtarı kullanarak enklav hesaplamalarını etkinleştirmek için, sütun ana anahtarını döndürmeniz ve bunu enklav destekli bir sütun ana anahtarıyla değiştirmeniz gerekir. Bkz. Enklav etkin anahtarları döndürme.
Not
Şu anda hem SSMS hem de PowerShell, Azure Key Vault veya Windows Sertifika Deposu'nda depolanan kapanım özellikli sütun ana anahtarlarını destekler. Donanım güvenlik modülleri (CNG veya CAPI kullanılarak) desteklenmez.
Enclave özellikli bir sütun şifreleme anahtarı oluşturmak için, yeni anahtarı şifrelemek amacıyla enclave özellikli bir sütun ana anahtarı seçtiğinizden emin olmanız gerekir.
Aşağıdaki bölümlerde, SSMS ve PowerShell kullanarak kapanım özellikli anahtarları sağlama hakkında daha fazla ayrıntı sağlanır.
SQL Server Management Studio kullanarak güvenli bölge özellikli anahtarları sağlama
SQL Server Management Studio'da şunlar sağlayabilirsiniz:
- Yeni Sütun Ana Anahtar Dialogunu kullanan kapalı oturum özellikli sütun anahtarı.
- Enklav özellikli bir sütun şifreleme anahtarı, Yeni Sütun Şifreleme Anahtarı iletişim kutusu kullanılarak oluşturulur.
Always Encrypted Sihirbazı, kapanım özellikli bir sütun ana anahtarı ve kapanım özellikli bir sütun şifreleme anahtarı oluşturmanıza da olanak tanır.
SQL Server Management Studio'nun (SSMS) en son sürümünü yükleyin.
Yeni Sütun Ana Anahtarı iletişim kutusuyla kapanım özellikli sütun ana anahtarlarını sağlama
Enklav özellikli bir sütun ana anahtarı sağlamak için Yeni Sütun Ana Anahtarı İletişim Kutusu ile Sütun Ana Anahtarlarını Sağlama adımlarını izleyin. Enklav hesaplamalarına izin ver'i seçtiğinizden emin olun. Aşağıdaki ekran görüntüsüne bakın:
Not
Kapanım hesaplamalarına izin ver onay kutusu yalnızca veritabanınız için güvenli bir kapanım yapılandırıldığında görünür. SQL Server kullanıyorsanız SQL Server'da güvenli korunağı yapılandırma bölümüne bakın. Azure SQL Veritabanı kullanıyorsanız bkz. Azure SQL Veritabanınız için güvenli kuşatmalarla Always Encrypted'ı etkinleştirme.
Bahşiş
Bir sütun anahtar yöneticisinin gömülü etkin olup olmadığını kontrol etmek için Nesne Gezgini'nde bu anahtara sağ tıklayın ve Özelliklerseçeneğini seçin. Anahtar yerleşik etkinse, anahtarın özelliklerini gösteren pencerede Yerleşik Hesaplamalar: İzin Verilen görünür. Alternatif olarak, sys.column_master_keys (Transact-SQL) görünümünü kullanabilirsiniz.
Yeni Sütun Şifreleme Anahtarı iletişim kutusuyla enclav güvenlik özellikli sütun şifreleme anahtarlarını sağlayın
Kapanım özellikli bir sütun şifreleme anahtarı sağlamak için Sütun Şifreleme Anahtarlarını Yeni Sütun Şifreleme Anahtarı İletişim Kutusu ile Sağlamaadımlarını izleyin. Bir sütun ana anahtarı seçerken enclave etkin olduğundan emin olun.
Bahşiş
Sütun şifreleme anahtarının güvenli alan etkin olup olmadığını denetlemek için Nesne Gezgini'nde bu anahtara sağ tıklayın ve Özelliklerseçin. Anahtar yerleşik etkinse, anahtarın özelliklerini gösteren pencerede Yerleşik Hesaplamalar: İzin Verilen görünür.
PowerShell kullanarak enklav destekli anahtarları sağlama
PowerShell kullanarak kapanım özellikli anahtarlar sağlamak için SqlServer PowerShell modülü sürüm 22 veya üzeri gerekir.
Genel olarak, PowerShell kullanarak Always Encrypted Anahtarları Sağlama başlığında açıklanan PowerShell anahtar sağlama iş akışları (rol ayrımı ile ve olmaksızın), gerek Always Encrypted gerekse ağ kapsayıcılı anahtarlar için de geçerlidir. Bu bölümde, kapanım özellikli anahtarlara özgü ayrıntılar açıklanmaktadır.
SqlServer PowerShell modülü, New-SqlCertificateStoreColumnMasterKeySettings ve New-SqlAzureKeyVaultColumnMasterKeySettings cmdlet'lerini -AllowEnclaveComputations parametresiyle genişleterek, temin işlemi sırasında enclave özellikli bir sütun anahtarı belirtmenize olanak sağlar. Her iki cmdlet de Azure Key Vault veya Windows Sertifika Deposu'nda depolanan bir sütun anahtarının özelliklerini içeren bir yerel nesne oluşturur. belirtilirse, -AllowEnclaveComputations özelliği anahtarı yerel nesnede enclave-enabled olarak işaretler. Ayrıca cmdlet'in başvuruda bulunan sütun ana anahtarına erişmesine (Azure Key Vault'ta veya Windows Sertifika Deposu'nda) anahtarın özelliklerini dijital olarak imzalamasına da neden olur. Yeni bir kapanım destekli sütun ana anahtarı için bir ayar nesnesi oluşturduktan sonra, bu nesneyi veritabanında yeni anahtarı açıklayan bir meta veri nesnesi oluşturmak üzere sonraki bir çağrıda New-SqlColumnMasterKey cmdlet'inde kullanabilirsiniz.
Kapanım özellikli sütun şifreleme anahtarlarının sağlanması, kapanım etkin olmayan sütun şifreleme anahtarlarının sağlanmasından farklı değildir. Yeni sütun şifreleme anahtarını şifrelemek için kullanılan sütun ana anahtarının enclave özellikli olduğundan emin olmanız yeterlidir.
Not
SqlServer PowerShell modülü şu anda donanım güvenlik modüllerinde (CNG veya CAPI kullanarak) depolanan kapanım özellikli anahtarları sağlamayı desteklememektedir.
Örnek - Windows Sertifika Deposu'nı kullanarak kapanım özellikli anahtarları sağlama
Aşağıdaki uçtan uca örnekte, Windows Sertifika Deposu'nda depolanan sütun ana anahtarını depolayarak kapanım özellikli anahtarların nasıl sağlandığı gösterilmektedir. Betik, Rol Ayrımı Olmadan Windows Sertifika Deposu (Örnek) içindeki örneği temel alır. Dikkat edilmesi gereken nokta, -AllowEnclaveComputations cmdlet'indeki parametresinin kullanılmasıdır. Bu, iki örnekteki iş akışları arasındaki tek farktır.
# Create a column master key in Windows Certificate Store.
$cert = New-SelfSignedCertificate -Subject "AlwaysEncryptedCert" -CertStoreLocation Cert:CurrentUser\My -KeyExportPolicy Exportable -Type DocumentEncryptionCert -KeyUsage DataEncipherment -KeySpec KeyExchange
# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# Connect to your database.
$serverName = "<server name>"
$databaseName = "<database name>"
# Change the authentication method in the connection string, if needed.
$connStr = "Server = " + $serverName + "; Database = " + $databaseName + "; Integrated Security = True; TrustServerCertificate = True"
$database = Get-SqlDatabase -ConnectionString $connStr
# Create a SqlColumnMasterKeySettings object for your column master key
# using the -AllowEnclaveComputations parameter.
$cmkSettings = New-SqlCertificateStoreColumnMasterKeySettings -CertificateStoreLocation "CurrentUser" -Thumbprint $cert.Thumbprint -AllowEnclaveComputations
# Create column master key metadata in the database.
$cmkName = "CMK1"
New-SqlColumnMasterKey -Name $cmkName -InputObject $database -ColumnMasterKeySettings $cmkSettings
# Generate a column encryption key, encrypt it with the column master key and create column encryption key metadata in the database.
$cekName = "CEK1"
New-SqlColumnEncryptionKey -Name $cekName -InputObject $database -ColumnMasterKey $cmkName
Örnek - Azure Key Vault kullanarak kapanım özellikli anahtarları sağlama
Aşağıdaki uçtan uca örnek, Azure Key Vault'taki bir anahtar kasasında sütun ana anahtarını depolayarak kapsül özellikli anahtarların nasıl sağlanabileceğini göstermektedir. Script, Rol Ayrımı Olmadan (Örnek) Azure Key Vaultörneği temel alır. Kapanım özellikli anahtarlar için iş akışı ile kapanım etkin olmayan anahtarlar arasındaki iki farka dikkat etmek önemlidir.
- Aşağıdaki betikte New-SqlCertificateStoreColumnMasterKeySettings, yeni sütun ana anahtarını enclave etkin hale getirmek için
-AllowEnclaveComputationsparametresini kullanır. - Aşağıdaki betik, anahtar kasaları için erişim belirteci elde etmek amacıyla Get-AzAccessToken cmdlet'ini kullanır. New-SqlAzureKeyVaultColumnMasterKeySettings
sütun ana anahtarının özelliklerini imzalamak için Azure Key Vault'a erişimi olması gerektiğinden bu gereklidir.
# Create a column master key in Azure Key Vault.
Import-Module "SqlServer" -MinimumVersion 22.0.50
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
$SubscriptionId = "<Azure SubscriptionId>"
$resourceGroup = "<resource group name>"
$azureLocation = "<datacenter location>"
$akvName = "<key vault name>"
$akvKeyName = "<key name>"
$azureCtx = Set-AzConteXt -SubscriptionId $SubscriptionId # Sets the context for the below cmdlets to the specified subscription.
New-AzResourceGroup -Name $resourceGroup -Location $azureLocation # Creates a new resource group - skip, if your desired group already exists.
New-AzKeyVault -VaultName $akvName -ResourceGroupName $resourceGroup -Location $azureLocation # Creates a new key vault - skip if your vault already exists.
Set-AzKeyVaultAccessPolicy -VaultName $akvName -ResourceGroupName $resourceGroup -PermissionsToKeys get, create, delete, list, wrapKey,unwrapKey, sign, verify -UserPrincipalName $azureCtx.Account
$akvKey = Add-AzKeyVaultKey -VaultName $akvName -Name $akvKeyName -Destination "Software"
# Connect to your database.
$serverName = "<server name>"
$databaseName = "<database name>"
# Change the authentication method in the connection string, if needed.
$connStr = "Server = " + $serverName + "; Database = " + $databaseName + "; Integrated Security = True; TrustServerCertificate = True"
$database = Get-SqlDatabase -ConnectionString $connStr
# Obtain an access token for key vaults.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token
# Create a SqlColumnMasterKeySettings object for your column master key.
$cmkSettings = New-SqlAzureKeyVaultColumnMasterKeySettings -KeyURL $akvKey.ID -AllowEnclaveComputations -KeyVaultAccessToken $keyVaultAccessToken
# Create column master key metadata in the database.
$cmkName = "CMK1"
New-SqlColumnMasterKey -Name $cmkName -InputObject $database -ColumnMasterKeySettings $cmkSettings
# Generate a column encryption key, encrypt it with the column master key and create column encryption key metadata in the database.
$cekName = "CEK1"
New-SqlColumnEncryptionKey -Name $cekName -InputObject $database -ColumnMasterKey $cmkName -KeyVaultAccessToken $keyVaultAccessToken
İlgili içerik
- Güvenli bölgeler kullanarak Transact-SQL ifadesini çalıştırma
- Güvenli kuşatmalarla Always Encrypted kullanarak sütun şifrelemeyi yerinde yapılandırma
- Mevcut şifrelenmiş sütunlar için güvenli kuşatmalarla Always Encrypted'ı etkinleştirme
- Güvenli kuşatmalarla Always Encrypted kullanarak uygulama geliştirme
- Güvenli kuşatmalarla Always Encrypted kullanmaya başlama
- Güvenli kuşatmalarla Always Encrypted anahtarlarını yönetme
- KOLON ANA ANAHTARI OLUŞTUR (Transact-SQL)