在与同一网站关联的多个Azure WebJob之间存储和重用机密的最佳做法

在与同一网站关联的多个Azure WebJob之间存储和重用机密的最佳做法,azure,azure-web-app-service,azure-webjobs,Azure,Azure Web App Service,Azure Webjobs,我正试图遵循中所示的建议。该文档的主要宗旨是,在Azure上时,机密不应存储在应用程序配置文件中;它们应存储在应用程序服务的应用程序设置刀片中 我有多个与给定Azure应用程序服务网站关联的WebJob。WebJob都与相同的外部api通信,但它们都有各自的相关秘密,例如api令牌。为了简化配置,开发环境中的每个webjobs的app.config文件都具有相同的应用程序设置键,例如 <add key="AWSApiToken" value="token_for_webjob1" />

我正试图遵循中所示的建议。该文档的主要宗旨是,在Azure上时,机密不应存储在应用程序配置文件中;它们应存储在应用程序服务的应用程序设置刀片中

我有多个与给定Azure应用程序服务网站关联的WebJob。WebJob都与相同的外部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-->
这里的问题是,虽然每个webjob在开发中都有单独的app.config文件,但它们共享与Azure中的公共网站关联的应用程序设置


因此,如果最佳实践是在Azure中存储应用程序机密,那么如果我想继续使用应用程序设置的公用密钥名,那么对于与同一站点关联的多个WebJob,我会怎么做

如果webjob都托管在同一个Azure Web应用程序中,那么您可以只使用一个名为ApiToken的应用程序设置,该设置是在应用程序设置中的Azure Web应用程序上设置的。然后,每个Web作业都可以使用相同的应用程序设置来获取要使用的Api令牌

如果每个Web作业都需要相同的应用程序设置名称,但每个Web作业需要不同的值,则需要1个修改Web作业以使用不同的应用程序设置键,或者2个在单独的Web应用程序中托管每个Web作业。如果您在专用Web应用程序中托管每个Web作业,则您可以在同一应用程序服务计划中为您的Web作业托管所有三个Web应用程序。这将允许您对每个Web作业进行完全独立的应用程序设置,并通过使用相同的应用程序服务计划和它的资源托管所有3个Web作业来节省成本


如果您需要能够安全地与多个单独托管的应用程序共享密钥,则将是您希望使用的服务。

谢谢您的回答。你的第一段是我目前正在做的。请参见我上面的示例-webjobs中的键名称相同,但值不同。这就是为什么我不能将它们放在应用程序设置刀片中。@Howiecamp我修改了我的答案,为您提供了一个可能的解决方案:好吧,胡说八道,我希望我的蛋糕也能吃。我可以看到一个可能的特性,即同一网站中的每个webjob都有自己的应用程序设置。webjob刀片级别的设置将胜过app.config中的设置,而主应用程序设置刀片级别的设置将胜过webjob刀片级别的设置。