使用 [Always Encrypted 精靈] 設定資料行加密
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
[Always Encrypted 精靈] 是一個功能強大的工具,可讓您設定所選取資料庫資料行所需的 Always Encrypted 設定。 根據目前設定和所需目標設定,精靈可以加密資料行、將其解密 (移除加密) 或重新加密 (例如,使用新的資料行加密金鑰,或與針對資料行所設定目前類型不同的加密類型)。 在精靈的單一執行中,可以設定多個資料行。
精靈可讓您使用現有資料行加密金鑰來加密資料行,或您可以選擇產生新的資料行加密金鑰,或同時產生新資料行加密金鑰和新資料行主要金鑰。
使用安全記憶體保護區設定資料庫時,您可以就地執行密碼編譯作業,而無須將資料移出資料庫。 精靈會移除所有相依性,防止需要加密的資料行出現結構描述變更。 它會使用資料庫引擎內的記憶體保護區,為每個資料行發出就地加密命令。 加密完成後,精靈會重新建立相依性。 如需深入了解能提供安全記憶體保護區的 Always Encrypted,請參閱具有安全記憶體保護區的 Always Encrypted。
當您的資料庫未設定安全記憶體保護區時,精靈讓您有機會啟用安全記憶體保護區。 如果您選擇不啟用安全記憶體保護區,或不使用啟用了記憶體保護區的金鑰,精靈的運作方式是將資料移出資料庫,並在 SSMS 程式中執行密碼編譯作業。 精靈會在資料庫中建立具有所需加密設定的新資料表、從原始資料表載入所有資料、執行所要求的密碼編譯作業、將資料上傳至新資料表,然後交換原始資料表與新資料表。
提示
使用具有安全記憶體保護區的 Always Encrypted 設定就地加密時 (如果在您的環境中可使用),可能會大幅縮短密碼編譯作業的時間並降低可靠性。
注意
執行密碼編譯作業可能需要很長的時間。 在這段期間,資料庫無法寫入交易。 PowerShell 是在較大資料表上進行密碼編譯作業時的建議工具。 請參閱使用 Always Encrypted 與 PowerShell 設定資料行加密或使用 PowerShell 就地設定資料行加密。
如需端對端逐步解說,其示範如何使用精靈來設定 Always Encrypted 並在用戶端應用程式中使用,請參閱下列 Azure SQL Database 教學課程:
如需 Always Encrypted 金鑰的資訊,請參閱 Always Encrypted 金鑰管理概觀。
如需 Always Encrypted 中所支援加密類型的資訊,請參閱選取決定性加密或隨機加密。
權限
若要使用精靈來執行密碼編譯作業,您必須具備 VIEW ANY COLUMN MASTER KEY DEFINITION 和 VIEW ANY COLUMN ENCRYPTION KEY DEFINITION 權限。 您也需要金鑰存放區權限,才能建立、存取及使用資料行主要金鑰。 如需金鑰存放區權限的相關詳細資訊,請移至建立及儲存 Always Encrypted 的資料行主要金鑰,並尋找與金鑰存放區相關的區段。
開啟 [Always Encrypted 精靈]
您可以在三個不同層級啟動精靈:
- 資料庫層級 - 若您想要加密位於不同資料表中的多個資料行。
- 資料表層級 - 若您想要加密位於相同資料表中的多個資料行。
- 資料行層級 - 若您想要加密單一特定資料行。
使用 SQL Server Management Studio 的物件總管元件連線到 SQL Server。
加密:
- 資料庫中位於不同資料表內的多個資料行:請以滑鼠右鍵按一下您的資料庫、指向 [工作],然後選取 [加密資料行]。
- 位於相同資料表中的多個資料行:請巡覽至資料表、以滑鼠右鍵按一下資料表,然後選取 [加密資料行]。
- 個別資料行:請巡覽至資料行、以滑鼠右鍵按一下資料行,然後選取 [加密資料行]。
資料行選取頁面
在此頁面中,您可以選取您想要加密、重新加密或解密的資料行,且您可以為所選取的資料行定義目標加密設定。
若要加密純文字資料行 (並未加密的資料行),請為資料行選取加密類型 ([決定性] 或 [隨機]) 和加密金鑰。
若要為已加密的資料行變更加密類型或輪替 (變更) 資料行加密金鑰,請選取所需的加密類型和金鑰。
若您想要精靈使用新的資料行加密金鑰加密或重新加密一或多個資料行,請挑選其名稱中包含 (新增) 的金鑰。 精靈將會產生金鑰。
若要解密目前已加密的資料行,請針對加密類型選取 [純文字]。
注意
如果您要利用就地加密並使用現有金鑰,請確定您選擇已啟用記憶體保護區的金鑰,加上標註 (已啟用記憶體保護區)。
注意
精靈不支援在時態性和記憶體內部資料表上進行密碼編譯作業。 您可以使用 Transact-SQL 建立空白的時態性或記憶體內部資料表,並使用您的應用程式插入資料。
主要金鑰設定頁面
若您已在上一個頁面為任何資料行選取自動產生的資料行加密金鑰,在此頁面中您需要選取現有的資料行主要金鑰,或設定將加密資料行加密金鑰的新資料行主要金鑰。
設定新的資料行主要金鑰時,您可以在 Windows 憑證存放區或 Azure Key Vault 中挑選現有金鑰,並讓精靈只為資料庫中的金鑰建立中繼資料物件,或選擇同時產生金鑰及描述資料庫中金鑰的中繼資料物件。
若要使用就地加密,請確定您為新的資料行主要金鑰選取 [允許記憶體保護區運算]。 僅在資料庫已設定安全記憶體保護區時,才允許選取此核取方塊。
如需在 Windows 憑證存放區、Azure Key Vault 或其他金鑰存放區中建立和儲存資料行主要金鑰的詳細資訊,請參閱建立及儲存 Always Encrypted 的資料行主要金鑰或針對具有安全記憶體保護區的 Always Encrypted 管理金鑰。
提示
精靈只允許您在 Windows 憑證存放區和 Azure Key Vault 中瀏覽和建立金鑰。 精靈也會自動產生兩個新金鑰的名稱,以及描述金鑰的資料庫中繼資料物件。 若您需要深入控制您金鑰的佈建方式 (以及針對包含您資料行主要金鑰的金鑰存放區擁有更多選擇),您可以先使用 [新增資料行主要金鑰] 和 [新增資料行加密金鑰] 對話方塊來建立金鑰,然後執行精靈並挑選您已建立的金鑰。 請參閱使用 [新增資料行主要金鑰] 對話方塊佈建資料行主要金鑰或佈建已啟用記憶體保護區的金鑰以及使用 [新增資料行加密金鑰] 對話方塊佈建資料行加密金鑰。
就地加密設定頁面
如果您已在資料庫中設定安全記憶體保護區,且使用的是已啟用記憶體保護區的金鑰,則可以在此頁面上指定就地加密所需的記憶體保護區證明參數。 如果您不想使用就地加密,請取消選取 [針對適合的資料行使用就地加密] 以繼續進行用戶端加密。 建議您將此核取方塊保持啟用狀態,以便精靈可以使用就地加密。
如需記憶體保護區證明的詳細資訊,請參閱使用 Azure 證明為 Always Encrypted 設定證明
下一步
- 使用 Always Encrypted 與 SQL Server Management Studio 查詢資料行
- 使用安全記憶體保護區執行 Transact-SQL 陳述式
- 使用 Always Encrypted 開發應用程式
- 教學課程:使用具有安全記憶體保護區的 Always Encrypted 開發 .NET 應用程式
另請參閱
- 一律加密
- 具有安全記憶體保護區的 Always Encrypted
- Always Encrypted 的金鑰管理概觀
- 使用 SQL Server Management Studio 設定 Always Encrypted
- 設定和使用具有安全記憶體保護區的 Always Encrypted
- 使用 PowerShell 佈建 Always Encrypted 金鑰
- 使用 PowerShell 佈建已啟用記憶體保護區的金鑰
- 使用 Always Encrypted 與 PowerShell 設定資料行加密
- 使用 PowerShell 就地設定資料行加密
- 使用 Always Encrypted 與 DAC 套件設定資料行加密
- 使用 DAC 封裝就地設定資料行加密
- 使用 Transact-SQL 就地設定資料行加密