在与同一网站关联的多个 Azure Web 作业之间存储和重用机密的最佳实践
Best practices for storage and reuse of secrets between multiple Azure webjobs associated with the same website
我正在尝试遵循 Best practices for deploying passwords and other sensitive data to ASP.NET and Azure App Service 中显示的建议。该文档的主要原则是,在 Azure 上,秘密不应存储在应用程序配置文件中;它们应该存储在应用程序服务的应用程序设置 blade 中。
我有多个与给定 Azure 应用服务(网站)关联的网络作业。 webjobs 都与 same 外部 api 对话,但它们每个都有与之相关的个人秘密,例如api 个代币。为了简化配置,开发环境中的每个 webjobs 的 app.config
文件都有 same 应用程序设置密钥,例如
<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
文件在开发中,但它们共享应用程序设置 blade 与其在 Azure 中的公共网站相关联。
因此,如果最佳做法是将应用程序机密存储在 Azure 中,那么在多个 Web 作业与同一站点相关联的情况下我会怎么做 如果我想继续为应用程序使用通用密钥名称设置?
如果 WebJobs 都托管在同一个 Azure Web 应用程序中,那么您可以只使用一个名为 "ApiToken" 的应用程序设置,该设置是您在应用程序设置中的 Azure Web 应用程序上设置的。然后每个 Web 作业都可以使用相同的应用程序设置来获取要使用的 Api 令牌。
如果您确实需要为每个 Web 作业使用相同的应用程序设置名称,但需要为每个 Web 作业使用不同的值,那么您将需要 1) 修改 Web 作业以使用不同的应用程序设置键,或 2) 在单独的 Web 应用程序中分别托管 Web 作业。如果您在专用的 Web 应用程序中托管每个 Web 作业,则可以在同一应用程序服务计划中为您的 Web 作业托管所有三个 Web 应用程序。这将允许您为每个 Web 作业设置完全独立的应用程序设置,并通过使用相同的应用程序服务计划及其资源来托管所有 3 个 Web 作业来节省成本。
如果您需要能够与多个单独托管的应用安全地共享密钥,Azure KeyVault 将是您希望使用的服务。
我正在尝试遵循 Best practices for deploying passwords and other sensitive data to ASP.NET and Azure App Service 中显示的建议。该文档的主要原则是,在 Azure 上,秘密不应存储在应用程序配置文件中;它们应该存储在应用程序服务的应用程序设置 blade 中。
我有多个与给定 Azure 应用服务(网站)关联的网络作业。 webjobs 都与 same 外部 api 对话,但它们每个都有与之相关的个人秘密,例如api 个代币。为了简化配置,开发环境中的每个 webjobs 的 app.config
文件都有 same 应用程序设置密钥,例如
<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
文件在开发中,但它们共享应用程序设置 blade 与其在 Azure 中的公共网站相关联。
因此,如果最佳做法是将应用程序机密存储在 Azure 中,那么在多个 Web 作业与同一站点相关联的情况下我会怎么做 如果我想继续为应用程序使用通用密钥名称设置?
如果 WebJobs 都托管在同一个 Azure Web 应用程序中,那么您可以只使用一个名为 "ApiToken" 的应用程序设置,该设置是您在应用程序设置中的 Azure Web 应用程序上设置的。然后每个 Web 作业都可以使用相同的应用程序设置来获取要使用的 Api 令牌。
如果您确实需要为每个 Web 作业使用相同的应用程序设置名称,但需要为每个 Web 作业使用不同的值,那么您将需要 1) 修改 Web 作业以使用不同的应用程序设置键,或 2) 在单独的 Web 应用程序中分别托管 Web 作业。如果您在专用的 Web 应用程序中托管每个 Web 作业,则可以在同一应用程序服务计划中为您的 Web 作业托管所有三个 Web 应用程序。这将允许您为每个 Web 作业设置完全独立的应用程序设置,并通过使用相同的应用程序服务计划及其资源来托管所有 3 个 Web 作业来节省成本。
如果您需要能够与多个单独托管的应用安全地共享密钥,Azure KeyVault 将是您希望使用的服务。