MEMBUAT KUNCI ASIMETRIS (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Membuat kunci asimetris dalam database.

Fitur ini tidak kompatibel dengan ekspor database menggunakan Data Tier Application Framework (DACFx). Anda harus menghilangkan semua kunci asimetris sebelum mengekspor.

Konvensi sintaks transact-SQL

Catatan

Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

Sintaksis

CREATE ASYMMETRIC KEY asym_key_name   
   [ AUTHORIZATION database_principal_name ]  
   [ FROM <asym_key_source> ]  
   [ WITH <key_option> ] 
   [ ENCRYPTION BY <encrypting_mechanism> ] 
   [ ; ]
  
<asym_key_source>::=  
     FILE = 'path_to_strong-name_file'  
   | EXECUTABLE FILE = 'path_to_executable_file'  
   | ASSEMBLY assembly_name  
   | PROVIDER provider_name  
  
<key_option> ::=  
   ALGORITHM = <algorithm>  
      |  
   PROVIDER_KEY_NAME = 'key_name_in_provider'  
      |  
      CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }  
  
<algorithm> ::=  
      { RSA_4096 | RSA_3072 | RSA_2048 | RSA_1024 | RSA_512 }   
  
<encrypting_mechanism> ::=  
    PASSWORD = 'password'   

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

asym_key_name
Adalah nama untuk kunci asimetris dalam database. Nama kunci asimetris harus mematuhi aturan untuk pengidentifikasi dan harus unik dalam database.

database_principal_name OTORISASI
Menentukan pemilik kunci asimetris. Pemilik tidak boleh menjadi peran atau grup. Jika opsi ini dihilangkan, pemilik akan menjadi pengguna saat ini.

DARI asym_key_source
Menentukan sumber tempat memuat pasangan kunci asimetris.

FILE = 'path_to_strong-name_file'
Menentukan jalur file nama yang kuat untuk memuat pasangan kunci. Dibatasi hingga 260 karakter berdasarkan MAX_PATH dari Windows API.

Catatan

Opsi ini tidak tersedia dalam database mandiri.

FILE YANG DAPAT DIEKSEKUSI = 'path_to_executable_file'
Menentukan jalur file rakitan tempat memuat kunci publik. Dibatasi hingga 260 karakter berdasarkan MAX_PATH dari Windows API.

Catatan

Opsi ini tidak tersedia dalam database mandiri.

assembly_name RAKITAN
Menentukan nama rakitan yang ditandatangani yang telah dimuat ke dalam database untuk memuat kunci publik.

provider_name PENYEDIA
Menentukan nama penyedia Extensible Key Management (EKM). Penyedia harus didefinisikan terlebih dahulu menggunakan pernyataan CREATE PROVIDER. Untuk informasi selengkapnya tentang manajemen kunci eksternal, lihat Extensible Key Management (EKM).

ALGORITMA = <algoritma>
Lima algoritma dapat disediakan; RSA_4096, RSA_3072, RSA_2048, RSA_1024, dan RSA_512.

RSA_1024 dan RSA_512 tidak digunakan lagi. Untuk menggunakan RSA_1024 atau RSA_512 (tidak disarankan) Anda harus mengatur database ke tingkat kompatibilitas database 120 atau lebih rendah.

PROVIDER_KEY_NAME = 'key_name_in_provider'
Menentukan nama kunci dari penyedia eksternal.

CREATION_DISPOSITION = CREATE_NEW
Membuat kunci baru pada perangkat Extensible Key Management. PROVIDER_KEY_NAME harus digunakan untuk menentukan nama kunci pada perangkat. Jika kunci sudah ada pada perangkat, pernyataan gagal dengan kesalahan.

CREATION_DISPOSITION = OPEN_EXISTING
Peta kunci asimetris SQL Server ke kunci Extensible Key Management yang ada. PROVIDER_KEY_NAME harus digunakan untuk menentukan nama kunci pada perangkat. Jika CREATION_DISPOSITION = OPEN_EXISTING tidak disediakan, defaultnya adalah CREATE_NEW.

ENKRIPSI MENURUT KATA SANDI = 'kata sandi'
Menentukan kata sandi untuk mengenkripsi kunci privat. Jika klausa ini tidak ada, kunci privat akan dienkripsi dengan kunci master database. kata sandi maksimal 128 karakter. kata sandi harus memenuhi persyaratan kebijakan kata sandi Windows komputer yang menjalankan instans SQL Server.

Keterangan

Kunci asimetris adalah entitas yang dapat diamankan di tingkat database. Dalam bentuk defaultnya, entitas ini berisi kunci publik dan kunci privat. Saat dijalankan tanpa klausa FROM, CREATE ASYMMETRIC KEY menghasilkan pasangan kunci baru. Saat dijalankan dengan klausul FROM, CREATE ASYMMETRIC KEY mengimpor pasangan kunci dari file, atau mengimpor kunci publik dari file assembly atau DLL.

Secara default, kunci privat dilindungi oleh kunci master database. Jika tidak ada kunci master database yang dibuat, kata sandi diperlukan untuk melindungi kunci privat.

Kunci privat dapat memiliki panjang 512, 1024, atau 2048 bit.

Kunci asimetris yang digunakan untuk TDE terbatas pada ukuran kunci privat 3072 bit.

Izin

Memerlukan izin CREATE ASYMMETRIC KEY pada database. Jika klausul OTORISASI ditentukan, memerlukan izin IMPERSONATE pada prinsipal database, atau izin UBAH pada peran aplikasi. Hanya login Windows, login SQL Server, dan peran aplikasi yang dapat memiliki kunci asimetris. Grup dan peran tidak dapat memiliki kunci asimetris.

Contoh

J. Membuat kunci asimetris

Contoh berikut membuat kunci asimetris bernama PacificSales09 dengan menggunakan RSA_2048 algoritma, dan melindungi kunci privat dengan kata sandi.

CREATE ASYMMETRIC KEY PacificSales09   
    WITH ALGORITHM = RSA_2048   
    ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';   
GO  

B. Membuat kunci asimetris dari file, memberikan otorisasi kepada pengguna

Contoh berikut membuat kunci PacificSales19 asimetris dari pasangan kunci yang disimpan dalam file, dan menetapkan kepemilikan kunci asimetris kepada pengguna Christina. Kunci privat dilindungi oleh kunci master database, yang harus dibuat sebelum membuat kunci asimetris.

CREATE ASYMMETRIC KEY PacificSales19  
    AUTHORIZATION Christina  
    FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp';  
GO  

C. Membuat kunci asimetris dari penyedia EKM

Contoh berikut membuat kunci EKM_askey1 asimetris dari pasangan kunci yang disimpan di penyedia Extensible Key Management yang disebut EKM_Provider1, dan kunci pada penyedia yang disebut key10_user1.

CREATE ASYMMETRIC KEY EKM_askey1   
    FROM PROVIDER EKM_Provider1  
    WITH   
        ALGORITHM = RSA_2048,   
        CREATION_DISPOSITION = CREATE_NEW  
        , PROVIDER_KEY_NAME  = 'key10_user1' ;  
GO  

Lihat Juga

ALTER ASYMMETRIC KEY (Transact-SQL)
HILANGKAN KUNCI ASIMETRIS (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (T-SQL)
Pilih Algoritma Enkripsi
Hierarki Enkripsi
Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault (SQL Server)