CREATE MASTER KEY (Transact-SQL)

適用于:SQL Server (所有支援的版本) Azure SQL Database Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

在資料庫中建立資料庫主要金鑰。

重要事項

  • 您應該使用 BACKUP MASTER KEY來備份主要金鑰,並將備份儲存在安全的異地位置。
  • 在SQL Server中,您也應該使用BACKUP SERVICE MASTER KEY來備份服務主要金鑰,並將備份儲存在安全的異地位置。

主題連結圖示Transact-SQL 語法慣例

Syntax

CREATE MASTER KEY [ ENCRYPTION BY PASSWORD ='password' ]
[ ; ]

注意

若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

PASSWORD ='password'

用來加密資料庫中主要金鑰的密碼。 password必須符合執行 SQL Server 實例之電腦的 Windows 密碼原則需求。 密碼在 SQL Database 和 Azure Synapse Analytics 中是選擇性的。

備註

資料庫主要金鑰是一個用來保護憑證私密金鑰和資料庫中非對稱金鑰的對稱金鑰。 建立資料庫主要金鑰時,系統會利用 AES_256 演算法和使用者提供的密碼來加密主要金鑰。 在 SQL Server 2008 和 SQL Server 2008 R2 中,會使用 Triple DES 演算法。 若要啟用主要金鑰的自動解密,金鑰的複本會使用服務主要金鑰進行加密,並儲存在 資料庫和 中 master 。 一般而言,每當變更主要金鑰時,儲存在 中的 master 複本會以無訊息方式更新。 您可以使用 ALTER MASTER KEY 的 DROP ENCRYPTION BY SERVICE MASTER KEY 選項來變更這個預設值。 如果主要金鑰未以服務主要金鑰來加密,則必須使用 OPEN MASTER KEY 陳述式和密碼來開啟。

中的 master 目錄檢視資料 is_master_key_encrypted_by_serversys.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

另請參閱

下一步