自動從金鑰保存庫重載秘密和憑證
應用程式組態與 Key Vault 是互補服務,將在多種應用程式中並行使用。 應用程式組態透過在應用程式組態存放區中建立金鑰,以參考儲存在金鑰保存庫中的秘密或憑證,協助您一起使用服務。 由於金鑰保存庫會將憑證的公開和私密金鑰組儲存為秘密,因此您的應用程式可以從金鑰保存庫擷取任何憑證作為秘密。
作為良好的安全性作法,秘密和憑證應該定期輪替。 在金鑰保存庫中輪替之後,您會希望應用程式挑選最新的秘密和憑證值。 有兩種方式可以達成此目的,而不需要重新啟動您的應用程式:
- 更新 sentinel 金鑰值以觸發整個設定的重新整理,藉此重載所有金鑰保存庫秘密和憑證。 如需詳細資訊,請參閱如何在 ASP.NET Core應用程式中使用動態設定。
- 定期從金鑰保存庫重載部分或所有秘密和憑證。
在第一個選項中,每當輪替金鑰保存庫中的秘密和憑證時,您必須更新應用程式組態中的 sentinel 金鑰值。 當您想要在應用程式中強制立即重載秘密和憑證時,此方法可運作良好。 不過,當您在金鑰保存庫自動輪替秘密和憑證時,如果未及時更新 sentinel 金鑰值,則應用程式可能會遇到錯誤。 第二個選項可讓您完全自動化此程序。 您可以將應用程式設定為在輪替時間的可接受延遲內,重載來自金鑰保存庫的秘密和憑證。 本教學課程將逐步引導您完成第二個選項。
必要條件
本教學課程將展示如何設定應用程式,以從金鑰保存庫自動重載秘密和憑證。 本課程會以教學課程為基礎,以實作程式碼中的金鑰保存庫參考。 在您繼續進行課程前,請先完成教學課程:在 ASP.NET Core 應用程式中使用 Key Vault 參考。
Microsoft.Azure.AppConfiguration.AspNetCore 套件 v4.4.0 或更新版本。
將自動輪替憑證新增至金鑰保存庫
遵循教學課程:在金鑰保存庫中設定憑證自動輪替,將稱為 ExampleCertificate 的自動輪替憑證新增至上一個教學課程中建立的金鑰保存庫。
在應用程式組態中新增金鑰保存庫憑證的參考
在 Azure 入口網站中選取 [所有資源],然後選取您在先前教學課程中建立的應用程式組態存放區執行個體。
選取 [組態總管]。
選取 [+ 建立]>[金鑰保存庫參考],然後指定下列值:
- 金鑰:選取 [TestApp:Settings:KeyVaultCertificate]。
- 標籤:將此值保留空白。
- 訂用帳戶、資源群組與金鑰保存庫:輸入與您在先前教學課程中所建立金鑰保存庫對應的值。
- 祕密:選取您在上一節中所建立、名為 ExampleCertificate 的祕密。
- 秘密版本:最新版本。
注意
如果您參考特定版本,從金鑰保存庫重載秘密或憑證一律會傳回相同的值。
更新程式碼以重載金鑰保存庫秘密和憑證
在 Program.cs 檔案中,更新 AddAzureAppConfiguration
方法,以使用 SetSecretRefreshInterval
方法來設定金鑰保存庫憑證的重新整理間隔。 進行這項變更後,您的應用程式會每隔 12 小時重載 ExampleCertificate 的公開-私密金鑰組。
config.AddAzureAppConfiguration(options =>
{
options.Connect(settings["ConnectionStrings:AppConfig"])
.ConfigureKeyVault(kv =>
{
kv.SetCredential(new DefaultAzureCredential());
kv.SetSecretRefreshInterval("TestApp:Settings:KeyVaultCertificate", TimeSpan.FromHours(12));
});
});
方法中的 SetSecretRefreshInterval
第一個引數是應用程式組態中金鑰保存庫參考的索引鍵。 此引數是選擇性的。 如果省略金鑰參數,重新整理間隔會套用至沒有個別重新整理間隔的所有秘密和憑證。
重新整理間隔會定義您的秘密和憑證從金鑰保存庫重載的頻率,不論其值在金鑰保存庫或應用程式組態中是否有任何變更。 如果您想要在應用程式組態中的秘密和憑證值變更時重載秘密和憑證,您可以使用 ConfigureRefresh
方法來加以監視。 如需詳細資訊,請參閱如何在 ASP.NET Core應用程式中使用動態設定。
根據您可接受的延遲,選擇在金鑰保存庫中更新秘密和憑證之後的重新整理間隔。 也請務必考慮金鑰保存庫服務限制,以避免受到節流。
清除資源
如果您不想繼續使用本文中建立的資源,請刪除在此處建立的資源群組,以避免產生費用。
重要
刪除資源群組是無法回復的動作。 資源群組和其中的所有資源都將被永久刪除。 請確定您不會誤刪錯誤的資源群組或資源。 如果您是在包含需保留其他資源的資源群組內部,建立本文的資源,則可以從每個資源各自的窗格中個別刪除每個資源,而不必刪除整個資源群組。
- 登入 Azure 入口網站,然後選取 [資源群組]。
- 在 [依名稱篩選] 方塊中,輸入您資源群組的名稱。
- 在結果清單中,選取資源群組名稱以查看概觀。
- 選取 [刪除資源群組]。
- 系統將會要求您確認是否刪除資源群組。 輸入您資源群組的名稱以進行確認,然後選取 [刪除]。
不久後,系統便會刪除該資源群組及其所有的資源。
下一步
您在本教學課程中將了解如何設定應用程式,以從金鑰保存庫自動重載秘密和憑證。 若要了解如何使用受控服務識別來簡化對應用程式組態和金鑰保存庫的存取,請繼續進行下一個教學課程。