共用方式為


CREATE ASYMMETRIC KEY (Transact-SQL)

在資料庫中建立非對稱金鑰。

主題連結圖示 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

請參閱

參考

ALTER ASYMMETRIC KEY (Transact-SQL)

DROP ASYMMETRIC KEY (Transact-SQL)

概念

選擇加密演算法

加密階層