CREATE MASTER KEY (Transact-SQL)
適用于:SQL Server
Azure SQL資料庫
Azure SQL 受控執行個體Azure Synapse
Analytics Analytics
Platform System (PDW)
在資料庫中建立資料庫主要金鑰。
重要
- 您應該使用 BACKUP MASTER KEY來備份主要金鑰,並將備份儲存在安全的異地位置。
- 在SQL Server中,您也應該使用BACKUP SERVICE MASTER KEY來備份服務主要金鑰,並將備份儲存在安全的異地位置。
Syntax
CREATE MASTER KEY [ ENCRYPTION BY PASSWORD ='password' ]
[ ; ]
注意
若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件。
引數
PASSWORD ='password'
用來加密資料庫中主要金鑰的密碼。 password必須符合執行 SQL Server 實例之電腦的 Windows 密碼原則需求。 password在 SQL Database 和 Azure Synapse Analytics 中是選擇性的。
備註
資料庫主要金鑰是一個用來保護憑證私密金鑰和資料庫中非對稱金鑰的對稱金鑰。 建立資料庫主要金鑰時,系統會利用 AES_256 演算法和使用者提供的密碼來加密主要金鑰。 在 SQL Server 2008 (10.0.x) 和 SQL Server 2008 R2 (10.50.x) 中,會使用 Triple DES 演算法。 若要啟用主要金鑰的自動解密,金鑰的複本會使用服務主要金鑰進行加密,並同時儲存在資料庫和 中 master
。 一般而言,每當主要金鑰變更時,儲存在 中的 master
複本會以無訊息方式更新。 您可以使用 ALTER MASTER KEY 的 DROP ENCRYPTION BY SERVICE MASTER KEY 選項來變更這個預設值。 如果主要金鑰未以服務主要金鑰來加密,則必須使用 OPEN MASTER KEY 陳述式和密碼來開啟。
is_master_key_encrypted_by_server
中 master
目錄檢視的資料 sys.databases
行會指出資料庫主要金鑰是否由服務主要金鑰加密。
資料庫主要金鑰的相關資訊會顯示在目錄檢視中 sys.symmetric_keys
。
針對 SQL Server 和平行處理資料倉儲,主要金鑰通常會受到服務主要金鑰及至少一個密碼保護。 若將資料庫實際移動到不同伺服器 (記錄傳送、還原備份等),資料庫會包含以原始伺服器服務主要金鑰加密的主要金鑰複本 (除非已使用 ALTER MASTER KEY DDL
明確移除此加密),以及在 CREATE MASTER KEY
或後續 ALTER MASTER KEY DDL
作業期間由每個指定密碼加密的複本。 若要復原主要金鑰,並使用主要金鑰加密作為資料庫移動後金鑰 階層 中根目錄的所有資料,使用者將會使用用來保護主要金鑰的其中一個密碼來使用 OPEN MASTER KEY
語句、還原主要金鑰的備份,或還原新伺服器上的原始服務主要金鑰備份。
針對SQL Database和Azure Synapse分析,密碼保護不會被視為安全機制,以避免在資料庫可能從一部伺服器移到另一部伺服器的情況下,因為主要金鑰上的服務主要金鑰保護是由 Microsoft Azure 平臺管理。 因此,主要金鑰密碼在 SQL Database 和 Azure Synapse Analytics 中是選擇性的。
服務主要金鑰和資料庫主要金鑰,皆使用 AES-256 演算法加以保護。
權限
需要資料庫的 CONTROL 權限。
範例
使用下列範例在資料庫中建立資料庫主要金鑰。 金鑰會使用密碼加密。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
GO
確認新機碼是否存在: ##MS_DatabaseMasterKey##
SELECT * FROM sys.symmetric_keys;
GO