我试图遵循Best practices for deploying passwords and other sensitive data to ASP.NET and Azure App Service中显示的建议。该文档的主要原则是,在Azure上,秘密不应存储在应用程序配置文件中;它们应存储在App Service的“应用程序设置”边栏中。
我有多个与给定Azure应用服务(网站)相关联的webjobs。 webjobs都与相同的外部API进行通信,但它们各自都有自己独立的秘密,例如: api令牌。为了简化配置,每个webjobs'开发环境中的app.config
个文件具有相同的应用设置密钥,例如
<add key="AWSApiToken" value="token_for_webjob1" /> <!--webjob1-->
<add key="AWSApiToken" value="token_for_webjob2" /> <!--webjob2-->
<add key="AWSApiToken" value="token_for_webjob3" /> <!--webjob3-->
这里的问题是,虽然webjobs每个都有单独的app.config
文件正在开发中,但它们共享与Azure中常见网站关联的应用程序设置刀片。
因此,如果最佳做法是在Azure中存储应用程序机密,如果我想继续使用应用程序设置的常用密钥名称,我将如何处理与同一网站关联的多个webjobs的情况?
答案 0 :(得分:1)
如果WebJobs全部托管在同一个Azure Web App中,那么您可以使用名为&#34; ApiToken&#34;的单个应用程序设置。您在应用程序设置中的Azure Web App上设置的。然后,每个Web作业都可以使用相同的App设置来使用Api Token。
如果您确实需要为每个Web作业使用相同的App Settings名称,但每个Web作业需要不同的值,那么您需要1)修改Web作业以使用不同的App Settings键,或者2)将Web作业分别托管在一个单独的Web App中。如果您在专用Web应用程序中托管每个Web作业,则可以在同一个应用程序服务计划中托管Web作业的所有三个Web应用程序。这将允许您为每个Web作业提供完全独立的应用程序设置,并通过使用相同的应用程序服务计划及其资源来托管所有3个Web作业来节省成本。
Azure KeyVault将是您要使用的服务,如果您需要能够安全地与多个应用共享密钥,这些应用都是单独托管的。