CREATE ASYMMETRIC KEY (Transact-SQL)
在資料庫中建立非對稱金鑰。
語法
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_512 | RSA_1024 | RSA_2048 }
<encrypting_mechanism> ::=
PASSWORD = 'password'
引數
FROM Asym_Key_Source
指定載入非對稱金鑰組時所在的來源。AUTHORIZATION database_principal_name
指定非對稱金鑰的擁有者。該擁有者不能是角色或群組。如果省略了這個選項,該擁有者便是目前的使用者。FILE ='path_to_strong-name_file'
指定載入金鑰組時所在的強式名稱檔案之路徑。EXECUTABLE FILE ='path_to_executable_file'
指定載入公開金鑰時所在的組件檔案。以 Windows API 的 MAX_PATH 限制為 260 個字元。ASSEMBLY Assembly_Name
指定載入公開金鑰時所在的組件之名稱。ENCRYPTION BY <key_name_in_provider>
指定如何加密金鑰。可以是憑證、密碼或非對稱金鑰。KEY_NAME ='key_name_in_provider'
從外部提供者指定金鑰名稱。如需有關外部金鑰管理的詳細資訊,請參閱<了解可延伸金鑰管理 (EKM)>。CREATION_DISPOSITION = CREATE_NEW
在可延伸金鑰管理裝置上建立新的金鑰。PROV_KEY_NAME 必須用於指定裝置上的金鑰名稱。如果金鑰已存在於裝置上,陳述式會失敗,並傳回錯誤。CREATION_DISPOSITION = OPEN_EXISTING
將 SQL Server 非對稱金鑰對應到現有的「可延伸金鑰管理」金鑰。PROV_KEY_NAME 必須用於指定裝置上的金鑰名稱。 如果未提供 CREATION_DISPOSITION = OPEN_EXISTING,預設值就是 CREATE_NEW。PASSWORD = 'password'
指定用來加密私密金鑰的密碼。如果這個子句不存在,此私密金鑰將會使用資料庫主要金鑰來加密。password 的上限為 128 個字元。password 必須符合執行 SQL Server 執行個體之電腦的 Windows 密碼原則需求。
備註
「非對稱金鑰」是資料庫層級的安全性實體。在它的預設格式中,這個實體同時包含公開金鑰和私密金鑰。如果執行時不使用 FROM 子句,CREATE ASYMMETRIC KEY 會產生新金鑰組。如果執行時使用 FROM 子句,CREATE ASYMMETRIC KEY 會從檔案匯入金鑰組,或從組件匯入公開金鑰。
依預設,私密金鑰由資料庫主要金鑰保護。如果尚未建立資料庫主要金鑰,則需要利用密碼保護私密金鑰。如果有資料庫主要金鑰,則密碼是選用的。
私密金鑰的長度可以是 512、1024 或 2048 位元。
權限
需要資料庫的 CREATE ASYMMETRIC KEY 權限。如果指定了 AUTHORIZATION 子句,則需要資料庫主體的 IMPERSONATE 權限或應用程式角色的 ALTER 權限。只有 Windows 登入、SQL Server 登入,以及應用程式角色可以擁有非對稱金鑰。群組和角色無法擁有非對稱金鑰。
範例
A. 建立非對稱金鑰
下列範例會利用 RSA_2048 演算法建立一個名稱為 PacificSales09 的非對稱金鑰,並利用密碼保護私密金鑰。
CREATE ASYMMETRIC KEY PacificSales09
WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';
GO
B. 從檔案建立非對稱金鑰,並提供授權給使用者
下列範例會從儲存在檔案中的金鑰組建立非對稱金鑰 PacificSales19,然後授權使用者 Christina 使用該非對稱金鑰。
CREATE ASYMMETRIC KEY PacificSales19 AUTHORIZATION Christina
FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp'
ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';
GO
C. 從 EKM 提供者建立非對稱金鑰
下列範例會從儲存在檔案中的金鑰組建立非對稱金鑰 EKM_askey1。然後會使用名稱為 EKMProvider1 的可延伸金鑰管理提供者,以及該提供者上,名稱為 key10_user1 的金鑰加密。
CREATE ASYMMETRIC KEY EKM_askey1
FROM PROVIDER EKM_Provider1
WITH
ALGORITHM = RSA_512,
CREATION_DISPOSITION = CREATE_NEW
, PROVIDER_KEY_NAME = 'key10_user1' ;
GO