Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru di Windows
Azure SQL Database
Artikel ini menjelaskan cara menyediakan kunci yang diaktifkan enklave yang mendukung komputasi di dalam enklave aman di sisi server yang digunakan untuk Always Encrypted dengan enklave aman.
Pedoman dan proses umum untuk mengelola kunci Always Encrypted berlaku saat Anda menyediakan kunci yang diaktifkan untuk enklave. Artikel ini mengulas detail khusus mengenai Always Encrypted dengan enklave aman.
Untuk membuat kunci master kolom yang mendukung enklave menggunakan SQL Server Management Studio atau PowerShell, pastikan kunci baru tersebut mendukung komputasi enklave. Ini akan menyebabkan alat (SSMS atau PowerShell) menghasilkan pernyataan CREATE COLUMN MASTER KEY yang menetapkan ENCLAVE_COMPUTATIONS dalam metadata kunci master kolom di dalam database. Untuk informasi selengkapnya, lihat MEMBUAT KUNCI MASTER KOLOM (Transact-SQL).
Alat ini juga akan menandatangani properti master kolom secara digital dengan kunci master kolom, dan akan menyimpan tanda tangan dalam metadata database. Tanda tangan mencegah perusakan berbahaya pada ENCLAVE_COMPUTATIONS pengaturan. Driver klien SQL memverifikasi tanda tangan sebelum mengizinkan penggunaan enklave. Ini memberi kontrol kepada administrator keamanan atas kolom data mana yang dapat dihitung di enklave.
ENCLAVE_COMPUTATIONS tidak dapat diubah, artinya, Anda tidak dapat mengubahnya setelah Anda menentukan kunci master kolom dalam metadata. Untuk mengaktifkan komputasi enklave menggunakan kunci enkripsi kolom yang telah dienkripsi oleh sebuah kunci master kolom, Anda perlu mengganti kunci master kolom tersebut dan menggantinya dengan kunci master kolom yang mendukung enklave. Lihat Putar kunci yang diaktifkan untuk enklave.
Catatan
Saat ini, SSMS dan PowerShell mendukung kunci master kolom yang didukung enklave yang disimpan di Azure Key Vault atau Windows Certificate Store. Modul keamanan perangkat keras (menggunakan CNG atau CAPI) tidak didukung.
Untuk membuat kunci enkripsi kolom dengan dukungan enklave, Anda perlu memastikan bahwa Anda memilih kunci master kolom yang mendukung enklave untuk mengenkripsi kunci baru.
Bagian berikut ini memberikan detail lebih lanjut tentang cara menyediakan kunci yang diaktifkan untuk enklave menggunakan SSMS dan PowerShell.
Mengelola kunci yang diaktifkan enklave menggunakan SQL Server Management Studio
Di SQL Server Management Studio, Anda dapat menyediakan:
- Kolom kunci master yang diaktifkan enklave menggunakan dialog Kunci Master Kolom Baru.
- Kunci enkripsi kolom yang diaktifkan enklave menggunakan kotak dialog Kunci Enkripsi Kolom Baru.
Wizard Always Encrypted juga memungkinkan Anda membuat kunci master kolom dengan dukungan enklave dan kunci enkripsi kolom yang diaktifkan enklave.
Instal versi terbaru SQL Server Management Studio (SSMS).
Memprovisikan kunci master kolom yang mendukung enklave melalui dialog Kunci Master Kolom Baru
Untuk memprovisikan kunci master kolom yang didukung enklave, ikuti langkah-langkah dalam Memprovisikan Kunci Master Kolom dengan Dialog Kunci Master Kolom Baru. Pastikan Anda memilih Izinkan komputasi enklave. Lihat cuplikan layar di bawah ini:
Catatan
Kotak centang Izinkan komputasi enklave muncul hanya jika enklave aman telah dikonfigurasi untuk database Anda. Jika Anda menggunakan SQL Server, lihat Mengonfigurasi enklave aman di SQL Server. Jika Anda menggunakan Azure SQL Database, silakan lihat Cara Mengaktifkan Always Encrypted dengan menggunakan enklave yang aman untuk Azure SQL Database Anda.
Petunjuk
Untuk memeriksa apakah kunci master kolom diaktifkan untuk enklave, klik kanan padanya di Object Explorer dan pilih Properti. Jika kunci diaktifkan untuk enklave, Enclave Computations: Allowed muncul di jendela yang menampilkan properti kunci. Atau, Anda dapat menggunakan tampilan dari
Memprovisikan kunci enkripsi kolom yang diaktifkan oleh enklave dengan dialog Kunci Enkripsi Kolom Baru
Untuk menyediakan kunci enkripsi kolom yang mendukung enklave, ikuti langkah-langkah dalam Menyediakan Kunci Enkripsi Kolom dengan Dialog Kunci Enkripsi Kolom Baru. Saat memilih kunci master kolom, pastikan kunci tersebut mendukung enklave.
Petunjuk
Untuk memeriksa apakah kunci enkripsi kolom diaktifkan untuk enklave, klik kanan padanya di Object Explorer dan pilih Properti. Jika kunci diaktifkan untuk enklave, Enclave Computations: Allowed muncul di jendela yang menampilkan properti kunci.
Menyediakan kunci yang diaktifkan enklave menggunakan PowerShell
Untuk menyediakan kunci berkemampuan enklave menggunakan PowerShell, Anda memerlukan modul SqlServer PowerShell versi 22 atau yang lebih tinggi.
Secara umum, alur kerja provisi kunci PowerShell (dengan dan tanpa pemisahan peran) untuk Always Encrypted, yang dijelaskan dalam Menyediakan Kunci Always Encrypted menggunakan PowerShell juga berlaku untuk kunci yang diaktifkan enklave. Bagian ini menjelaskan rincian khusus untuk kunci yang diaktifkan enklave.
Modul SqlServer PowerShell memperluas cmdlet New-SqlCertificateStoreColumnMasterKeySettings dan New-SqlAzureKeyVaultColumnMasterKeySettings dengan -AllowEnclaveComputations parameter untuk memungkinkan Anda menentukan kunci master kolom yang diaktifkan enklave selama proses provisi. Salah satu cmdlet membuat objek lokal yang berisi properti dari kunci master kolom (disimpan di Azure Key Vault atau di Penyimpanan Sertifikat Windows). Jika ditentukan, properti -AllowEnclaveComputations menandai kunci sebagai enklave-diaktifkan dalam objek lokal. Ini juga menyebabkan cmdlet mengakses kunci master kolom yang dirujuk (di Azure Key Vault atau di Windows Certificate Store) untuk menandatangani properti kunci secara digital. Setelah Anda membuat objek pengaturan untuk kunci master kolom baru yang mendukung enklave, Anda dapat menggunakannya dalam pemanggilan cmdlet New-SqlColumnMasterKey untuk membuat objek metadata yang mendeskripsikan kunci baru dalam database.
Menyediakan kunci enkripsi kolom yang memiliki enklave tidak berbeda dengan menyediakan kunci enkripsi kolom yang tidak memiliki enklave. Anda hanya perlu memastikan bahwa kunci master kolom yang digunakan untuk mengenkripsi kunci enkripsi kolom baru memiliki fitur enklave yang diaktifkan.
Catatan
Modul SqlServer PowerShell saat ini tidak mendukung provisi kunci berkemampuan enklave yang disimpan dalam modul keamanan perangkat keras (menggunakan CNG atau CAPI).
Contoh - menyediakan kunci yang diaktifkan enklave menggunakan Windows Certificate Store
Contoh end-to-end di bawah ini menunjukkan cara menyediakan kunci yang diaktifkan oleh enklave, serta menyimpan kunci master kolom dalam *Windows Certificate Store*. Skrip didasarkan pada contoh di Penyimpanan Sertifikat Windows tanpa Pemisahan Peran (Contoh). Penting untuk dicatat adalah penggunaan -AllowEnclaveComputations parameter dalam cmdlet New-SqlCertificateStoreColumnMasterKeySettings , yang merupakan satu-satunya perbedaan antara alur kerja dalam dua contoh.
# 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
Contoh - menggunakan Azure Key Vault untuk menyediakan kunci yang diaktifkan oleh enklave
Contoh end-to-end di bawah ini menunjukkan cara menyediakan kunci yang diaktifkan oleh enklave, menyimpan kunci master kolom di Azure Key Vault. Skrip didasarkan pada contoh di Azure Key Vault tanpa Pemisahan Peran (Contoh). Penting untuk dicatat dua perbedaan antara alur kerja untuk kunci yang diaktifkan enklave dibandingkan dengan kunci yang tidak diaktifkan enklave.
- Dalam skrip di bawah ini, New-SqlCertificateStoreColumnMasterKeySettings menggunakan parameter
-AllowEnclaveComputationsuntuk membuat kunci master kolom baru yang diaktifkan enklave. - Skrip di bawah ini menggunakan cmdlet Get-AzAccessToken untuk mendapatkan token akses untuk brankas kunci. Ini diperlukan, karena New-SqlAzureKeyVaultColumnMasterKeySettings harus memiliki akses ke Azure Key Vault untuk menandatangani properti kunci master kolom.
# 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
Konten terkait
- Menjalankan pernyataan Transact-SQL menggunakan enklave aman
- Mengonfigurasi enkripsi kolom secara langsung menggunakan Always Encrypted dengan enklave yang aman
- Aktifkan Always Encrypted dengan enklaf yang aman untuk kolom terenkripsi yang ada
- Mengembangkan aplikasi menggunakan Always Encrypted dengan enklave aman
- Memulai penggunaan Always Encrypted dengan enklave yang aman
- Mengelola kunci untuk fitur Always Encrypted dengan enklave yang aman
- BUAT KUNCI MASTER KOLOM (Transact-SQL)