Bagikan melalui


New-SqlColumnEncryptionKey

Membuat objek kunci enkripsi kolom dalam database.

Sintaks

New-SqlColumnEncryptionKey
   -ColumnMasterKeyName <String>
   [-EncryptedValue <String>]
   [-KeyVaultAccessToken <String>]
   [-ManagedHsmAccessToken <String>]
   [-Name] <String>
   [-InputObject] <Database>
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [-ProgressAction <ActionPreference>]
   [<CommonParameters>]
New-SqlColumnEncryptionKey
   -ColumnMasterKeyName <String>
   [-EncryptedValue <String>]
   [-KeyVaultAccessToken <String>]
   [-ManagedHsmAccessToken <String>]
   [-Name] <String>
   [[-Path] <String>]
   [-Script]
   [-AccessToken <PSObject>]
   [-TrustServerCertificate]
   [-HostNameInCertificate <String>]
   [-Encrypt <String>]
   [-ProgressAction <ActionPreference>]
   [<CommonParameters>]

Deskripsi

cmdlet New-SqlColumnEncryptionKey membuat objek kunci enkripsi kolom dalam database. Objek kunci enkripsi kolom merangkum nilai terenkripsi dari kunci kriptografi konten yang kemudian dapat digunakan untuk mengenkripsi kolom database menggunakan fitur Always Encrypted.

Cmdlet ini mendukung dua mode operasi:

  • Jika nilai terenkripsi kunci enkripsi kolom ditentukan, cmdlet hanya membuat objek kunci enkripsi kolom baru yang merangkum nilai terenkripsi yang ditentukan.

  • Jika nilai terenkripsi kunci enkripsi kolom tidak ditentukan, cmdlet terlebih dahulu menghasilkan nilai kunci teks biasa, mengenkripsinya dengan kunci master kolom yang ditentukan, lalu membuat objek kunci enkripsi kolom baru yang merangkum nilai terenkripsi yang dihasilkan. Dalam mode ini, cmdlet berkomunikasi dengan penyimpanan kunci yang memegang kunci master kolom. Jika kunci 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: Membuat dan mengenkripsi kunci enkripsi kolom

New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1'

Perintah ini menghasilkan nilai teks biasa dari kunci enkripsi kolom, mengenkripsi nilai teks biasa dengan kunci master yang ditentukan, lalu membuat objek kunci enkripsi kolom, merangkum nilai terenkripsi yang dihasilkan dalam database.

Contoh 2: Membuat dan mengenkripsi kunci enkripsi kolom menggunakan kunci master kolom yang disimpan dalam brankas kunci di Azure Key Vault.

Dalam contoh ini, token ke brankas kunci di Azure Key Vault diteruskan ke cmdlet.

# Connect to Azure account.
Import-Module Az.Accounts -MinimumVersion 2.2.0
Connect-AzAccount

# Obtain the access token. 
$keyVaultAccessToken = (Get-AzAccessToken -ResourceUrl https://vault.azure.net).Token

# Pass the token to the cmdlet. It will use the token to communicate with the key vault containing the column master key.
New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1' -KeyVaultAccessToken $keyVaultAccessToken

Contoh 3: Buat objek kunci enkripsi kolom untuk nilai terenkripsi yang ada dari kunci enkripsi kolom.

New-SqlColumnEncryptionKey -Name 'CEK1' -ColumnMasterKeyName 'CMK1' -EncryptedValue '0x01700000016C006F00630061006C006D0061006300680069006E0065002F006D0079002F003200660061006600640038003100320031003400340034006500620031006100320065003000360039003300340038006100350064003400300032003300380065006600620063006300610031006300284FC4316518CF3328A6D9304F65DD2CE387B79D95D077B4156E9ED8683FC0E09FA848275C685373228762B02DF2522AFF6D661782607B4A2275F2F922A5324B392C9D498E4ECFC61B79F0553EE8FB2E5A8635C4DBC0224D5A7F1B136C182DCDE32A00451F1A7AC6B4492067FD0FAC7D3D6F4AB7FC0E86614455DBB2AB37013E0A5B8B5089B180CA36D8B06CDB15E95A7D06E25AACB645D42C85B0B7EA2962BD3080B9A7CDB805C6279FE7DD6941E7EA4C2139E0D4101D8D7891076E70D433A214E82D9030CF1F40C503103075DEEB3D64537D15D244F503C2750CF940B71967F51095BFA51A85D2F764C78704CAB6F015EA87753355367C5C9F66E465C0C66BADEDFDF76FB7E5C21A0D89A2FCCA8595471F8918B1387E055FA0B816E74201CD5C50129D29C015895CD073925B6EA87CAF4A4FAF018C06A3856F5DFB724F42807543F777D82B809232B465D983E6F19DFB572BEA7B61C50154605452A891190FB5A0C4E464862CF5EFAD5E7D91F7D65AA1A78F688E69A1EB098AB42E95C674E234173CD7E0925541AD5AE7CED9A3D12FDFE6EB8EA4F8AAD2629D4F5A18BA3DDCC9CF7F352A892D4BEBDC4A1303F9C683DACD51A237E34B045EBE579A381E26B40DCFBF49EFFA6F65D17F37C6DBA54AA99A65D5573D4EB5BA038E024910A4D36B79A1D4E3C70349DADFF08FD8B4DEE77FDB57F01CB276ED5E676F1EC973154F86'

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 PSAccessToken seperti yang dikembalikan dengan menjalankan Get-AzAccessToken -ResourceUrl https://database.windows.net.

Parameter ini baru dalam v22 modul.

Jenis:PSObject
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-ColumnMasterKeyName

Menentukan nama kunci master kolom yang digunakan untuk menghasilkan nilai terenkripsi yang ditentukan dari kunci enkripsi kolom, atau nama kunci master kolom yang digunakan untuk menghasilkan nilai terenkripsi baru.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:True
Terima input alur:False
Terima karakter wildcard:False

-Encrypt

Jenis enkripsi yang akan digunakan saat menyambungkan ke SQL Server.

Nilai ini memetakan ke properti EncryptSqlConnectionEncryptOption pada objek SqlConnection 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.

Jenis:String
Nilai yang diterima:Mandatory, Optional, Strict
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-EncryptedValue

Menentukan string heksadesimal yang merupakan nilai kunci enkripsi kolom terenkripsi.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-InputObject

Menentukan objek database SQL, yang cmdlet ini menjalankan operasi.

Jenis:Database
Position:2
Nilai default:None
Diperlukan:True
Terima input alur:True
Terima karakter wildcard:False

-KeyVaultAccessToken

Menentukan token akses untuk brankas kunci di Azure Key Vault. Gunakan parameter ini jika kunci master kolom yang ingin Anda gunakan untuk mengenkripsi kunci enkripsi kolom baru disimpan dalam brankas kunci di Azure Key Vault.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-ManagedHsmAccessToken

Menentukan token akses untuk HSM terkelola di Azure Key Vault. Gunakan parameter ini jika kunci master kolom yang ingin Anda gunakan untuk mengenkripsi kunci enkripsi kolom baru disimpan dalam HSM terkelola di Azure Key Vault.

Jenis:String
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Name

Menentukan nama objek kunci enkripsi kolom yang akan dibuat.

Jenis:String
Position:1
Nilai default:None
Diperlukan:True
Terima input alur:False
Terima karakter wildcard: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.

Jenis:String
Position:2
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-ProgressAction

Menentukan bagaimana PowerShell merespons pembaruan kemajuan yang dihasilkan oleh skrip, cmdlet, atau penyedia, seperti bilah kemajuan yang dihasilkan oleh cmdlet Write-Progress. cmdlet Write-Progress membuat bilah kemajuan yang memperlihatkan status perintah.

Jenis:ActionPreference
Alias:proga
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Script

Menunjukkan bahwa cmdlet ini menjalankan skrip Transact-SQL yang melakukan operasi.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard: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.

Jenis:SwitchParameter
Position:Named
Nilai default:None
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

Input

Microsoft.SqlServer.Management.Smo.Database

Output

SqlColumnEncryptionKey