Mengonfigurasi Always Encrypted menggunakan PowerShell
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Modul SqlServer PowerShell menyediakan cmdlet untuk mengonfigurasi Always Encrypted di Azure SQL Database atau SQL Server.
Pertimbangan Keamanan saat menggunakan PowerShell untuk Mengonfigurasi Always Encrypted
Karena tujuan utama Always Encrypted adalah untuk memastikan data sensitif terenkripsi aman, bahkan jika sistem database disusupi, menjalankan skrip PowerShell yang memproses kunci atau data sensitif di komputer SQL Server dapat mengurangi atau mengalahkan manfaat fitur. Untuk rekomendasi terkait keamanan tambahan, lihat Pertimbangan Keamanan untuk Manajemen Kunci.
Anda dapat menggunakan PowerShell untuk mengelola kunci Always Encrypted baik dengan dan tanpa pemisahan peran, memberikan kontrol atas siapa yang memiliki akses ke kunci enkripsi aktual di penyimpanan kunci, dan siapa yang memiliki akses ke database.
Untuk rekomendasi tambahan, lihat Pertimbangan Keamanan untuk Manajemen Kunci.
Prasyarat
Instal modul SqlServer PowerShell versi 22.0.50 atau yang lebih baru di komputer aman yang BUKAN komputer yang menghosting instans SQL Server Anda. Modul dapat diinstal langsung dari galeri PowerShell. Lihat petunjuk pengunduhan untuk detail selengkapnya.
Mengimpor modul SqlServer
Untuk memuat modul SqlServer:
- Gunakan cmdlet Set-ExecutionPolicy untuk mengatur kebijakan eksekusi skrip yang sesuai.
- Gunakan cmdlet Import-Module untuk mengimpor modul SqlServer.
Contoh ini memuat modul SqlServer.
# Import the SQL Server Module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
Menyambungkan ke database
Beberapa cmdlet Always Encrypted bekerja dengan data atau metadata dalam database dan mengharuskan Anda menyambungkan ke database terlebih dahulu. Ada dua metode yang direkomendasikan untuk menyambungkan ke database saat mengonfigurasi Always Encrypted menggunakan modul SqlServer:
- Sambungkan menggunakan cmdlet Get-SqlDatabase .
- Sambungkan menggunakan Penyedia PowerShell SQL Server.
Menggunakan Get-SqlDatabase
Cmdlet Get-SqlDatabase memungkinkan Anda menyambungkan ke database di SQL Server atau di Azure SQL Database. Ini mengembalikan objek database, yang kemudian dapat Anda teruskan menggunakan parameter InputObject cmdlet yang tersambung ke database.
Menggunakan SQL Server PowerShell
# Import the SqlServer module
Import-Module "SqlServer" -MinimumVersion 22.0.50
# Connect to your database
# Set the valid server name, database name and authentication keywords in the connection string
$serverName = "<Azure SQL server name>.database.windows.net"
$databaseName = "<database name>"
$connStr = "Server = " + $serverName + "; Database = " + $databaseName + "; Authentication = Active Directory Integrated"
$database = Get-SqlDatabase -ConnectionString $connStr
# List column master keys for the specified database.
Get-SqlColumnMasterKey -InputObject $database
Atau, Anda dapat menggunakan pipa:
$database | Get-SqlColumnMasterKey
Menggunakan Penyedia PowerShell SQL Server
Penyedia PowerShell SQL Server mengekspos hierarki objek SQL Server di jalur yang mirip dengan jalur sistem file. Dengan SQL Server PowerShell, Anda dapat menavigasi jalur menggunakan alias Windows PowerShell yang mirip dengan perintah yang biasanya Anda gunakan untuk menavigasi jalur sistem file. Setelah Anda menavigasi ke instans target dan database, cmdlet berikutnya menargetkan database tersebut, seperti yang ditunjukkan dalam contoh berikut.
Catatan
Metode menyambungkan ke database ini hanya berfungsi untuk SQL Server (tidak didukung di Azure SQL Database).
# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# Navigate to the database in the remote instance.
cd SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase
# List column master keys in the above database.
Get-SqlColumnMasterKey
Atau, Anda dapat menentukan jalur database menggunakan parameter Jalur generik, alih-alih menavigasi ke database.
# Import the SqlServer module.
Import-Module "SqlServer" -MinimumVersion 22.0.50
# List column master keys for the specified database.
Get-SqlColumnMasterKey -Path SQLSERVER:\SQL\servercomputer\DEFAULT\Databases\yourdatabase
Tugas Always Encrypted menggunakan PowerShell
- Menyediakan Kunci Always Encrypted menggunakan PowerShell
- Memutar Kunci Always Encrypted menggunakan PowerShell
- Mengenkripsi, Mengenkripsi Ulang, atau Mendekripsi Kolom dengan Always Encrypted menggunakan PowerShell
Referensi Cmdlet Always Encrypted
Cmdlet PowerShell berikut ini tersedia untuk Always Encrypted:
CMDLET | Deskripsi |
---|---|
Add-SqlAzureAuthenticationContext | Melakukan autentikasi ke Azure dan memperoleh token autentikasi. |
Add-SqlColumnEncryptionKeyValue | Menambahkan nilai terenkripsi baru untuk objek kunci enkripsi kolom yang ada dalam database. |
Complete-SqlColumnMasterKeyRotation | Menyelesaikan rotasi kunci master kolom |
Get-SqlColumnEncryptionKey | Mengembalikan semua objek kunci enkripsi kolom yang ditentukan dalam database, atau mengembalikan satu objek kunci enkripsi kolom dengan nama yang ditentukan. |
Get-SqlColumnMasterKey | Mengembalikan objek kunci master kolom yang ditentukan dalam database, atau mengembalikan satu objek kunci master kolom dengan nama yang ditentukan. |
Invoke-SqlColumnMasterKeyRotation | Memulai rotasi kunci master kolom. |
New-SqlAzureKeyVaultColumnMasterKeySettings | Membuat objek SqlColumnMasterKeySettings yang menjelaskan kunci asimetris yang disimpan di Azure Key Vault. |
New-SqlCngColumnMasterKeySettings | Membuat objek SqlColumnMasterKeySettings yang menjelaskan kunci asimetris yang disimpan di penyimpanan kunci yang mendukung Cryptography Next Generation (CNG) API. |
New-SqlColumnEncryptionKey | Membuat objek kunci enkripsi kolom dalam database. |
New-SqlColumnEncryptionKeyEncryptedValue | Menghasilkan nilai terenkripsi dari kunci enkripsi kolom. |
New-SqlColumnEncryptionSettings | Membuat objek SqlColumnEncryptionSettings yang merangkum informasi tentang enkripsi kolom tunggal, termasuk CEK dan jenis enkripsi. |
New-SqlColumnMasterKey | Membuat objek kunci master kolom dalam database. |
New-SqlColumnMasterKeySettings | Membuat objek SqlColumnMasterKeySettings untuk kunci master kolom dengan penyedia dan jalur kunci yang ditentukan. |
New-SqlCspColumnMasterKeySettings | Membuat objek SqlColumnMasterKeySettings yang menjelaskan kunci asimetris yang disimpan di penyimpanan kunci dengan Penyedia Layanan Kriptografi (CSP) yang mendukung Cryptography API (CAPI). |
Remove-SqlColumnEncryptionKey | Menghapus objek kunci enkripsi kolom dari database. |
Remove-SqlColumnEncryptionKeyValue | Menghapus nilai terenkripsi dari objek kunci enkripsi kolom yang ada dalam database. |
Remove-SqlColumnMasterKey | Menghapus objek kunci master kolom dari database. |
Set-SqlColumnEncryption | Mengenkripsi, mendekripsi, atau mengenkripsi ulang kolom yang ditentukan dalam database. |