Azure密钥库或Azure服务的托管标识

Azure密钥库或Azure服务的托管标识,azure,security,azure-web-app-service,azure-keyvault,Azure,Security,Azure Web App Service,Azure Keyvault,既然应用程序服务可以使用托管标识与其他Azure资源进行身份验证,那么密钥库是否提供了任何好处(安全性或其他方面)?(例如azure存储和sql) 例如,现在应用程序服务可以直接使用托管标识与存储通话,那么是否有理由使用托管标识访问密钥库并获取存储密钥 在可用的情况下,您应该始终使用托管服务标识,但是这些标识并非在所有Azure中都普遍存在。将维护受支持服务的列表。请记住,调用服务需要支持使用其托管服务标识进行身份验证,并且被调用服务需要能够使用Azure Active Directory进行身

既然应用程序服务可以使用托管标识与其他Azure资源进行身份验证,那么密钥库是否提供了任何好处(安全性或其他方面)?(例如azure存储和sql)


例如,现在应用程序服务可以直接使用托管标识与存储通话,那么是否有理由使用托管标识访问密钥库并获取存储密钥

在可用的情况下,您应该始终使用托管服务标识,但是这些标识并非在所有Azure中都普遍存在。将维护受支持服务的列表。请记住,调用服务需要支持使用其托管服务标识进行身份验证,并且被调用服务需要能够使用Azure Active Directory进行身份验证和授权

如果您的服务不直接支持AD身份验证(例如CosmosDB),则您仍然需要存储和管理密钥,而KeyVault仍然是执行此操作的正确场所。这也适用于某些第三方服务,如Salesforce、AWS、GCP等,其中“联合”可能不存在。您可能还有其他不希望以纯文本形式存储的敏感配置


请记住,函数appsettings现在可以直接引用KeyVault,从而节省了编写代码和配置以自行管理的开销

我还想说,只要有可能,应该首选使用托管标识。我看到的主要好处是摆脱了必须管理的凭据。你在这里把认证挑战外包给微软,我想说它工作得很好

您需要保护、刷新、撤销等的凭据少了一个


我还相信,这符合作为代码的基础架构的精神,您可以定义自己关心的授权,并将安全身份验证留给提供商。

谢谢!为了澄清我上面的例子,既然存储可以使用MSI授权应用程序服务,就不再需要密钥库作为中间步骤了?我找不到任何地方有人直截了当地说这句话,所以我开始怀疑自己。Azure存储Gen1不使用AD auth,因此这是不可能的。Storage Gen2支持正在预览中(请参见我的第一个链接),但将按照您的预期工作。请记住,您需要将MSI(身份)作为用户添加到目标服务(即,需要为应用程序服务身份授予azure存储实例的权限!