Bagikan melalui


Mengonfigurasi Always Encrypted menggunakan PowerShell

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure 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:

  1. Gunakan cmdlet Set-ExecutionPolicy untuk mengatur kebijakan eksekusi skrip yang sesuai.
  2. 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:

  1. Sambungkan menggunakan cmdlet Get-SqlDatabase .
  2. 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

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.

Lihat Juga