Set-SqlColumnEncryption
Mengenkripsi, mendekripsi, atau mengenkripsi ulang kolom yang ditentukan dalam database.
Sintaks
ByObject
Set-SqlColumnEncryption
[-InputObject] <Database>
-ColumnEncryptionSettings <SqlColumnEncryptionSettings[]>
[-UseOnlineApproach]
[-KeepCheckForeignKeyConstraints]
[-MaxDowntimeInSeconds <Int32>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-LockTimeoutInSeconds <Int32>]
[-MaxIterationDurationInDays <Int32>]
[-MaxDivergingIterations <Int32>]
[-MaxIterations <Int32>]
[-EnclaveAttestationProtocol <SqlConnectionAttestationProtocol>]
[-EnclaveAttestationURL <String>]
[-LogFileDirectory <String>]
[-AllowVerboseLogging]
[-DisableFallBackToClientSide]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<CommonParameters>]
ByPath
Set-SqlColumnEncryption
[[-Path] <String>]
-ColumnEncryptionSettings <SqlColumnEncryptionSettings[]>
[-UseOnlineApproach]
[-KeepCheckForeignKeyConstraints]
[-MaxDowntimeInSeconds <Int32>]
[-KeyVaultAccessToken <String>]
[-ManagedHsmAccessToken <String>]
[-LockTimeoutInSeconds <Int32>]
[-MaxIterationDurationInDays <Int32>]
[-MaxDivergingIterations <Int32>]
[-MaxIterations <Int32>]
[-EnclaveAttestationProtocol <SqlConnectionAttestationProtocol>]
[-EnclaveAttestationURL <String>]
[-LogFileDirectory <String>]
[-AllowVerboseLogging]
[-DisableFallBackToClientSide]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[<CommonParameters>]
Deskripsi
Cmdlet Set-SqlColumnEncryption mengenkripsi, mendekripsi, atau mengenkripsi ulang kolom database yang ditentukan menggunakan fitur Always Encrypted.
Cmdlet menerima array objek SqlColumnEncryptionSettings , yang masing-masing menentukan konfigurasi enkripsi target untuk satu kolom dalam database.
Cmdlet akan mengenkripsi, mendekripsi, atau mengenkripsi ulang setiap kolom yang ditentukan, tergantung pada konfigurasi enkripsi kolom saat ini dan pengaturan enkripsi target yang ditentukan.
Cmdlet berkomunikasi dengan penyimpanan kunci yang menyimpan kunci master kolom. Jika ada kunci master kolom yang melindungi kolom yang akan dienkripsi, didekripsi, atau dienkripsi ulang, disimpan di Azure, Anda perlu menentukan token autentikasi yang valid untuk brankas kunci atau HSM terkelola yang memegang kunci. Atau, Anda dapat mengautentikasi ke Azure dengan Add-SqlAzureAuthenticationContext sebelum memanggil cmdlet ini.
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
Contoh
Contoh 1: Terapkan pengaturan enkripsi target yang ditentukan ke tiga kolom database.
Dalam contoh ini, kolom dienkripsi dbo.Student.Id menggunakan enkripsi deterministik dan kunci enkripsi kolom, bernama MyCEK.
Kolom dbo.Student.LastName dienkripsi menggunakan enkripsi acak dan kunci enkripsi kolom, bernama MyCEK.
Kolom dbo.StudentFirstName tidak dienkripsi (jika kolom awalnya dienkripsi, kolom akan didekripsi).
Contoh menggunakan pendekatan offline, yang berarti tabel Siswa akan tetap tidak tersedia untuk pembaruan di seluruh operasi.
Asumsikan kunci master kolom, melindungi MyCEK, tidak disimpan di Azure Key Vault.
$ces1 = New-SqlColumnEncryptionSettings -ColumnName 'dbo.Student.Id' -EncryptionType 'Deterministic' -EncryptionKey 'MyCek'
$ces2 = New-SqlColumnEncryptionSettings -ColumnName 'dbo.Student.LastName' -EncryptionType 'Randomized' -EncryptionKey 'MyCek'
$ces3 = New-SqlColumnEncryptionSettings -ColumnName 'dbo.Student.FirstName' -EncryptionType 'Plaintext'
Set-SqlColumnEncryption -ColumnEncryptionSettings $ces1,$ces2,$ces3 -LogFileDirectory .
Contoh 2: Terapkan pengaturan enkripsi target yang ditentukan ke tiga kolom database (kunci master kolom disimpan di Azure Key Vault.)
Contoh ini mirip dengan yang di atas; hanya perbedaannya adalah bahwa perlindungan MyCEK kunci master kolom disimpan di Azure Key Vault.
# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount
# Obtain an access token for key vaults.
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token
$ces1 = New-SqlColumnEncryptionSettings -ColumnName 'dbo.Student.Id' -EncryptionType 'Deterministic' -EncryptionKey 'MyCek'
$ces2 = New-SqlColumnEncryptionSettings -ColumnName 'dbo.Student.LastName' -EncryptionType 'Randomized' -EncryptionKey 'MyCek'
$ces3 = New-SqlColumnEncryptionSettings -ColumnName 'dbo.Student.FirstName' -EncryptionType 'Plaintext'
# Pass the token to the cmdlet. It will use the token to communicate with Azure Key Vault to obtain the plaintext value of the column encryption key.
Set-SqlColumnEncryption -ColumnEncryptionSettings $ces1,$ces2,$ces3 -LogFileDirectory . -KeyVaultAccessToken $keyVaultAccessToken
Contoh 3: Terapkan pengaturan enkripsi target yang ditentukan ke tiga kolom database menggunakan pendekatan online.
Dalam contoh Student tabel ini akan tidak tersedia untuk baca dan tulis hingga 30 detik (nilai yang ditentukan menggunakan parameter MaxDowntimeInSeconds .) Asumsikan kunci master kolom, melindungi MyCEK, disimpan di luar Azure (meneruskan token Azure tidak diperlukan).
$ces1 = New-SqlColumnEncryptionSettings -ColumnName 'dbo.Student.Id' -EncryptionType 'Deterministic' -EncryptionKey 'MyCek'
$ces2 = New-SqlColumnEncryptionSettings -ColumnName 'dbo.Student.LastName' -EncryptionType 'Randomized' -EncryptionKey 'MyCek'
$ces3 = New-SqlColumnEncryptionSettings -ColumnName 'dbo.Student.FirstName' -EncryptionType 'Plaintext'
Set-SqlColumnEncryption -ColumnEncryptionSettings $ces1,$ces2,$ces3 -UseOnlineApproach -MaxDowntimeInSeconds 30 -LogFileDirectory .
Contoh 4: Terapkan pengaturan enkripsi target ke beberapa kolom menggunakan enkripsi di tempat.
$ces1 = New-SqlColumnEncryptionSettings -ColumnName dbo.Student.Id -EncryptionType 'Randomized' -EncryptionKey 'CEK1'
$ces2 = New-SqlColumnEncryptionSettings -ColumnName dbo.Student.LastName -EncryptionType 'Randomized' -EncryptionKey 'CEK1'
$ces3 = New-SqlColumnEncryptionSettings -ColumnName dbo.Student.FirstName -EncryptionType 'Randomized' -EncryptionKey 'CEK1'
Set-SqlColumnEncryption -ColumnEncryptionSettings $ces1,$ces2,$ces3 -LogFileDirectory . -EnclaveAttestationProtocol 'AAS' -EnclaveAttestationURL 'https://enclavedemoattest.weu.attest.azure.net'
Contoh ini menerapkan pengaturan enkripsi target ke kolom database menggunakan enkripsi di tempat, asalkan semua prasyarat untuk enkripsi di tempat terpenuhi, yaitu, database mengaktifkan enklave dan kunci yang digunakan dalam operasi kriptografi, yang dipicu cmdlet, diaktifkan enklave.
Parameter
-AccessToken
Token akses yang digunakan untuk mengautentikasi ke SQL Server, sebagai alternatif untuk pengguna/kata sandi atau Autentikasi Windows.
Ini dapat digunakan, misalnya, untuk menyambungkan ke SQL Azure DB dan SQL Azure Managed Instance menggunakan Service Principal atau Managed Identity.
Parameter yang digunakan dapat berupa string yang mewakili token atau objek seperti yang PSAccessToken dikembalikan dengan menjalankan Get-AzAccessToken -ResourceUrl https://database.windows.net.
Parameter ini baru dalam v22 modul.
Properti parameter
| Jenis: | PSObject |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-AllowVerboseLogging
Jika diatur, cmdlet akan menambahkan pesan verbose ke file log (jika parameter 'LogFileDirectory' diatur) dan mempertahankan file dacpac yang digunakan oleh pustaka yang mendasarinya untuk melakukan operasi.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-ColumnEncryptionSettings
Menentukan array objek SqlColumnEncryptionSettings , yang masing-masing menentukan konfigurasi enkripsi target untuk satu kolom dalam database.
Properti parameter
| Jenis: | SqlColumnEncryptionSettings[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-DisableFallBackToClientSide
Saat menentukan parameter ini, cmdlet akan mengalami kesalahan dengan pesan kesalahan yang sesuai jika operasi tidak memenuhi syarat untuk mode di tempat alih-alih secara diam-diam jatuh kembali ke mode enkripsi sisi klien.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-EnclaveAttestationProtocol
Menentukan protokol pengesahan enklave untuk Always Encrypted dengan enklave aman. Parameter ini diperlukan agar cmdlet melakukan operasi kriptografi di tempat - di dalam enklave aman sisi server - untuk membatalkan pengeluaran mengunduh dan mengunggah data. Perhatikan bahwa enkripsi di tempat memiliki prasyarat lain: database Anda harus memiliki enklave yang dikonfigurasi dan Anda perlu menggunakan kunci kriptografi berkemampuan enklave.
Properti parameter
| Jenis: | SqlConnectionAttestationProtocol |
| Nilai default: | None |
| Nilai yang diterima: | NotSpecified, AAS, None, HGS |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | AttestationProtocol |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-EnclaveAttestationURL
Menentukan URL pengesahan enklave untuk enkripsi di tempat saat menggunakan Always Encrypted dengan enklave aman. Diperlukan jika EnclaveAttestationProtocol diatur ke AAS atau HGS.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Encrypt
Jenis enkripsi yang akan digunakan saat menyambungkan ke SQL Server.
Nilai ini memetakan ke Encrypt properti SqlConnectionEncryptOption pada objek SqlConnection dari driver Microsoft.Data.SqlClient.
Dalam v22 modul, defaultnya adalah Optional (untuk kompatibilitas dengan v21). Dalam v23+ modul, nilai defaultnya adalah 'Wajib', yang dapat membuat perubahan yang melanggar untuk skrip yang ada.
Parameter ini baru dalam v22 modul.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Nilai yang diterima: | Mandatory, Optional, Strict |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-HostNameInCertificate
Nama host yang akan digunakan dalam memvalidasi sertifikat SQL Server TLS/SSL. Anda harus meneruskan parameter ini jika instans SQL Server Anda diaktifkan untuk Enkripsi Paksa dan Anda ingin terhubung ke instans menggunakan nama host/nama pendek. Jika parameter ini dihilangkan, maka meneruskan Nama Domain yang Sepenuhnya Memenuhi Syarat (FQDN) ke -ServerInstance diperlukan untuk terhubung ke instans SQL Server yang diaktifkan untuk Enkripsi Paksa.
Parameter ini baru dalam v22 modul.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-InputObject
Menentukan objek database SQL, yang cmdlet ini menjalankan operasi.
Properti parameter
| Jenis: | Database |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
ByObject
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-KeepCheckForeignKeyConstraints
Jika diatur, periksa semantik (CHECK atau NOCHECK) batasan kunci asing dipertahankan.
Jika tidak, jika tidak diatur, dan jika UseOnlineApproach tidak diatur, batasan kunci asing selalu dibuat ulang dengan opsi NOCHECK untuk meminimalkan dampak pada aplikasi.
KeepCheckForeignKeyConstraints hanya valid saat UseOnlineApproach diatur.
Dengan pendekatan offline, semantik batasan kunci asing selalu dipertahankan.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-KeyVaultAccessToken
Menentukan token akses untuk brankas kunci di Azure Key Vault. Gunakan parameter ini jika salah satu kunci master kolom yang melindungi kolom untuk dienkripsi, didekripsi, atau dienkripsi ulang, disimpan dalam brankas kunci di Azure Key Vault.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-LockTimeoutInSeconds
Menentukan waktu maksimum (dalam detik) cmdlet akan menunggu kunci database yang diperlukan untuk memulai iterasi mengejar ketinggalan terakhir. Nilai -1 (default) menunjukkan tidak ada periode batas waktu (yaitu, tunggu selamanya). Nilai 0 berarti tidak menunggu sama sekali. Saat menunggu kunci melebihi nilai waktu habis, kesalahan dikembalikan. Valid hanya jika UseOnlineApproach diatur.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | -1 |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-LogFileDirectory
Jika diatur, cmdlet akan membuat file log di direktori yang ditentukan.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-ManagedHsmAccessToken
Menentukan token akses untuk HSM terkelola di Azure Key Vault. Gunakan parameter ini jika salah satu kunci master kolom yang melindungi kolom untuk dienkripsi, didekripsi, atau dienkripsi ulang, disimpan dalam HSM terkelola di Azure Key Vault.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-MaxDivergingIterations
Menentukan jumlah maksimum perulangan catch-up berturut-turut, di mana jumlah baris yang diproses meningkat. Ketika batas ini tercapai, cmdlet mengasumsikan bahwa itu tidak akan dapat mengejar perubahan yang dibuat dalam tabel sumber, dan membatalkan operasi dan membuat kembali status asli database. Valid hanya jika UseOnlineApproach diatur. Harus kurang dari nilai MaxIterations.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | 5 |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-MaxDowntimeInSeconds
Menentukan waktu maksimum (dalam detik), di mana tabel sumber tidak akan tersedia untuk dibaca dan ditulis. Valid hanya jika UseOnlineApproach diatur.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | 300 |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-MaxIterationDurationInDays
Menentukan waktu maksimum (dalam hari) penyemaian atau satu perulangan catch-up. Jika penyemaian atau perulangan catch-up membutuhkan lebih dari nilai yang ditentukan, cmdlet membatalkan operasi dan membuat kembali status asli database. Valid hanya jika UseOnlineApproach diatur.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | 3 |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-MaxIterations
Menentukan jumlah maksimum iterasi dalam fase catch-up. Ketika batas ini tercapai, cmdlet membatalkan operasi dan membuat ulang status asli database. Valid hanya jika UseOnlineApproach diatur.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | 100 |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Path
Menentukan jalur database SQL, yang cmdlet ini menjalankan operasi. Jika Anda tidak menentukan nilai untuk parameter ini, cmdlet menggunakan lokasi kerja saat ini.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
ByPath
| Position: | 1 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Script
Menunjukkan bahwa cmdlet ini mengembalikan skrip Transact-SQL yang melakukan tugas yang dilakukan cmdlet ini.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-TrustServerCertificate
Menunjukkan apakah saluran akan dienkripsi saat melewati rantai sertifikat untuk memvalidasi kepercayaan.
Dalam v22 modul, defaultnya adalah $true (untuk kompatibilitas dengan v21). Dalam v23+ modul, nilai defaultnya adalah '$false', yang dapat membuat perubahan yang melanggar untuk skrip yang ada.
Parameter ini baru dalam v22 modul.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-UseOnlineApproach
Jika diatur, cmdlet akan menggunakan pendekatan online, untuk memastikan database tersedia untuk aplikasi lain untuk baca dan tulis selama sebagian besar durasi operasi.
Jika tidak, cmdlet akan mengunci tabel yang terkena dampak, membuatnya tidak tersedia untuk pembaruan untuk seluruh operasi. Tabel akan tersedia untuk dibaca.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | False |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.