ALTER SYMMETRIC KEY (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse Analytics

變更對稱金鑰的屬性。

Transact-SQL 語法慣例

注意

Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

Syntax

ALTER SYMMETRIC KEY Key_name <alter_option>  
  
<alter_option> ::=  
   ADD ENCRYPTION BY <encrypting_mechanism> [ , ... n ]  
   |   
   DROP ENCRYPTION BY <encrypting_mechanism> [ , ... n ]  
<encrypting_mechanism> ::=  
   CERTIFICATE certificate_name  
   |  
   PASSWORD = 'password'  
   |  
   SYMMETRIC KEY Symmetric_Key_Name  
   |  
   ASYMMETRIC KEY Asym_Key_Name  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

Key_name
這是要變更之對稱金鑰在資料庫中的識別名稱。

ADD ENCRYPTION BY
利用指定的方法新增加密。

DROP ENCRYPTION BY
利用指定的方法卸除加密。 您無法從對稱金鑰移除所有加密。

CERTIFICATE Certificate_name
指定用來加密對稱金鑰的憑證。 這個憑證必須已存在於資料庫中。

PASSWORD ='password'
指定用於加密對稱金鑰的密碼。 password 必須符合執行 SQL Server 執行個體的電腦的 Windows 密碼原則需求。

SYMMETRIC KEY Symmetric_Key_Name
指定用來加密所要變更之對稱金鑰的對稱金鑰。 這個對稱金鑰必須已存在於資料庫中,且必須是開啟的。

ASYMMETRIC KEY Asym_Key_Name
指定用來加密所要變更之對稱金鑰的非對稱金鑰。 這個非對稱金鑰必須已存在於資料庫中。

備註

警告

如果是利用密碼 (而不是利用資料庫主要金鑰的公開金鑰) 來加密對稱金鑰,則會使用 TRIPLE_DES 加密演算法。 因此,利用強式加密演算法 (如 AES) 建立的金鑰,其本身的安全是由較弱的演算法來維護的。

若要變更對稱金鑰的加密,請使用 ADD ENCRYPTION 和 DROP ENCRYPTION 片語。 金鑰不可能完全不加密。 因此,最佳作法是先加入新的加密格式,再移除舊的加密格式。

如果要變更對稱金鑰的擁有者,請使用 ALTER AUTHORIZATION

注意

只有 RC4 演算法支援回溯相容性。 只有在資料庫相容性層級為 90 或 100 時,才能使用 RC4 或 RC4_128 加密新資料 (不建議使用)。請改用較新的演算法,例如其中一個 AES 演算法。 在 SQL Server 2012 (11.x) 中,使用 RC4 或 RC4_128 加密的材料可以在任何相容性層級中進行解密。

權限

需要對稱金鑰的 ALTER 權限。 如果利用憑證或非對稱金鑰來新增加密,則需要該憑證或非對稱金鑰的 VIEW DEFINITION 權限。 如果利用憑證或非對稱金鑰來卸除加密,則需要該憑證或非對稱金鑰的 CONTROL 權限。

範例

下列範例會變更用來保護對稱金鑰的加密方法。 當建立對稱金鑰 JanainaKey043 時,是利用憑證 Shipping04 來加密該金鑰的。 因為永遠不能將該金鑰儲存為未加密,所以在這個範例中,由密碼新增加密,然後由憑證移除加密。

CREATE SYMMETRIC KEY JanainaKey043 WITH ALGORITHM = AES_256   
    ENCRYPTION BY CERTIFICATE Shipping04;  
-- Open the key.   
OPEN SYMMETRIC KEY JanainaKey043 DECRYPTION BY CERTIFICATE Shipping04  
    WITH PASSWORD = '<enterStrongPasswordHere>';   
-- First, encrypt the key with a password.  
ALTER SYMMETRIC KEY JanainaKey043   
    ADD ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';  
-- Now remove encryption by the certificate.  
ALTER SYMMETRIC KEY JanainaKey043   
    DROP ENCRYPTION BY CERTIFICATE Shipping04;  
CLOSE SYMMETRIC KEY JanainaKey043;  

另請參閱

CREATE SYMMETRIC KEY (Transact-SQL)
OPEN SYMMETRIC KEY (Transact-SQL)
CLOSE SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
加密階層