儲存為環境變數或秘密管理員工具所儲存的秘密仍會儲存在本機,且未加密在計算機上。 儲存秘密的較安全選項是 Azure Key Vault,可提供安全、集中的位置來儲存密鑰和秘密。
Azure.Extensions.AspNetCore.Configuration.Secrets 套件可讓 ASP.NET Core 應用程式從 Azure Key Vault 讀取組態資訊。 若要開始使用 Azure Key Vault 中的秘密,請遵循下列步驟:
將您的應用程式註冊為 Azure AD 應用程式。 (金鑰保存庫的存取權是由 Azure AD 管理。這可透過 Azure 管理入口網站來完成。\
或者,如果您想要讓應用程式使用憑證進行驗證,而不是使用密碼或客戶端密碼,您可以使用 New-AzADApplication PowerShell Cmdlet。 您向 Azure Key Vault 註冊的憑證只需要您的公鑰。 您的應用程式會使用私鑰。
藉由建立新的服務主體,為已註冊的應用程式提供密鑰保存庫的存取權。 您可以使用下列 PowerShell 命令來執行這項作:
$sp = New-AzADServicePrincipal -ApplicationId "<Application ID guid>" Set-AzKeyVaultAccessPolicy -VaultName "<VaultName>" -ServicePrincipalName $sp.ServicePrincipalNames[0] -PermissionsToSecrets all -ResourceGroupName "<KeyVault Resource Group>"當您建立 IConfigurationRoot 實例時,呼叫 AzureKeyVaultConfigurationExtensions.AddAzureKeyVault 擴充方法,將密鑰保存庫納入應用程式中作為組態來源。
請注意,呼叫 AddAzureKeyVault 需要先前步驟中註冊並授與密鑰保存庫存取權的應用程式識別碼。 或者,您可以先執行 Azure CLI 命令: az login,然後使用 的多載 AddAzureKeyVault 來取代用戶端的 DefaultAzureCredential。
這很重要
建議您將 Azure Key Vault 註冊為最後一個設定提供者,以便覆寫先前提供者的組態值。
其他資源
使用 Azure Key Vault 來保護應用程式秘密
https://learn.microsoft.com/azure/architecture/multitenant-identity開發期間應用程式秘密的安全儲存
https://learn.microsoft.com/aspnet/core/security/app-secrets設定數據保護
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/overviewASP.NET Core 中的數據保護金鑰管理和存留期
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/default-settings