Azure-Sql-Database
將 CREATE EXTERNAL DATA SOURCE 儲存在 SSDT 項目中,而不暴露 DATABASE SCOPED CREDENTIAL 或 MASTER KEY 機密;
我有一個部署到 Azure SQL DB 的 SSDT 項目。最近我添加了一個外部表。這需要一個外部數據源,如下所示:
CREATE EXTERNAL DATA SOURCE [data_warehouse] WITH ( TYPE = RDBMS, LOCATION = N'mydb.database.windows.net', DATABASE_NAME = N'MainDW', CREDENTIAL = [dw_reader] );
當我將它導入我的 .sqlproj 時,它抱怨憑證不存在,然後當我添加它抱怨主密鑰不存在時。問題是我不想將這些秘密儲存在 SSDT 項目中。如何儲存可以從 azure keyvault 或其他在 Azure Decops 中儲存機密的方法覆蓋和檢索的虛擬對像或預設值?
經過試驗,似乎 SSDT 中的任何類型的秘密都只在創建對象時使用,而不是更新。
因此,如果 sqlproj 包含
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password A';
並且不存在主密鑰,則將使用該密碼創建主密鑰。但是,如果稍後ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD = 'dsjdkflJ435907NnmM#sX003';
在數據庫上執行,然後將 sqlproj 重新部署到數據庫,它不會重新生成主密鑰。