Azure存储密钥、Azure Functions与基于角色的访问控制最佳实践

本文深入探讨Azure Functions与存储账户的安全配置,强调最小权限原则和基于身份验证的重要性,并提供监控和日志管理的最佳实践建议,帮助用户提升云环境的安全性。

Azure存储密钥、Azure Functions与基于角色的访问控制最佳实践

Azure为开发者和安全运营团队提供了广泛的可配置安全选项,以满足组织需求。在软件开发生命周期中,客户需要理解共享责任模型,并熟悉各种安全最佳实践。这在部署Azure Functions和配置Azure基于角色的访问控制(RBAC)时尤为重要,因为客户负责配置和管理应用程序、身份和数据。客户可能会授予过宽的权限,这可能导致这些权限被滥用,从而访问客户租户内的其他资源。最近,Orca Security报告了一个此类问题,Microsoft安全响应中心(MSRC)调查后确定这不是一个安全问题,但这种情况值得讨论和改进,以帮助客户更有效地部署具有最小权限和深度防御的环境,从而更有效地抵御攻击者。

作为持续体验改进的一部分,Azure Functions团队计划更新Functions客户端工具与存储账户的交互方式,包括更好地支持基于身份验证的场景。在AzureWebJobsStorage的基于身份验证连接普遍可用且新体验经过验证后,身份验证将成为AzureWebJobsStorage的默认模式,旨在远离共享密钥授权。

此外,客户应审查以下指南,确保其环境配置符合组织需求,并遵循最小权限原则。

Azure Functions与Azure存储授权深入解析

Azure Functions使用存储用于多个目的。AzureWebJobsStorage连接用于一般运行时行为,例如处理触发器检查点数据和分布式锁管理。Azure Functions代码可能存储在AzureWebJobsStorage连接指定的账户中,但这取决于所选的部署方法。对于大多数设置,这不是默认选项,Functions提供多种应用程序代码部署选项,包括引用存储在不同blob存储中的内容。默认情况下,AzureWebJobsStorage连接使用存储账户连接字符串,但目前有一个基于身份验证的AzureWebJobsStorage连接预览版。

除了利用默认存储账户连接字符串外,客户可能希望为其环境中的用户提供访问权限。根据共享责任模型,访问管理是云客户的责任,创建角色分配的一个重要方面是选择正确的分配范围,遵循最小权限的安全原则。应用程序和用户不应被授予超出严格必要范围的访问权限。Azure还提供通过特权身份管理授予有限访问权限的功能。

默认情况下,唯一有权访问listKeys的个人是创建存储账户的个人和任何继承的所有者。Microsoft建议使用内置角色(如Storage Blob Data Reader或Storage File Data SMB Share Reader)向用户授予细粒度访问权限,以允许读取存储账户内容。这些角色均不包括列出存储账户密钥或以其他方式修改内容的权限。存储账户密钥提供对存储账户配置及其所有数据的完全访问权限,与任何访问凭据一样,应仔细保护。其他内置角色可能授予Microsoft.Storage/storageAccounts/listKeys/action权限,这对于仅需要读取访问权限的用户来说是过度的。

如果授予了过多权限并随后被使用,客户仍可以通过Azure Monitor获取对该存储账户执行的数据平面操作的见解。活动日志描述控制平面操作,可用于监控哪些用户访问了共享存储密钥。活动日志默认对所有存储账户启用。客户可以通过在其Azure Function存储的存储账户中搜索“listKeys”来执行此操作。还可以在Azure Monitor中启用和配置资源日志,以识别对存储账户内容的任何修改。强烈建议客户在其存储账户上配置活动日志和资源日志,并持续审查日志以查找可疑活动。您还可以监控客户端如何授权访问存储账户,以及识别使用共享密钥或共享访问签名(SAS)授权其存储请求的客户端。

作为持续体验改进的一部分,Azure Functions团队计划更新Functions客户端工具与存储账户的交互方式,包括更好地支持基于身份验证的场景。在AzureWebJobsStorage的基于身份验证连接普遍可用且新体验经过验证后,身份验证将成为AzureWebJobsStorage的默认模式。未来,Azure Functions客户端还将帮助用户为在这些体验中创建的存储账户启用“StorageWrite”资源日志记录。此外,我们更新了Azure Functions文档,以更好地阐明为具有最小权限的用户配置存储账户访问权限的最佳实践。

Azure Storage还继续投资于安全,包括全面支持基于身份验证的授权。Blob Storage完全支持基于角色的访问控制(RBAC),包括带有Azure ABAC的角色分配条件。我们提供一套全面的内置角色,以轻松限制具有最小权限的访问。Azure Files现在包括对通过SMB的Azure AD Kerberos的支持,并正在添加对通过REST的OAuth的支持。这也将支持在Azure门户中访问Files的基于身份验证的授权。我们还计划提供指导和支持,以便新存储账户默认禁用共享密钥和共享访问签名(SAS)授权,以鼓励使用基于角色的访问。在此期间,组织可以使用Azure Policy强制执行对存储使用基于身份验证的授权。

Microsoft Defender for Cloud(MDC)还为存储账户提供增强的监控,包括自动发现敏感数据以丰富安全警报、恶意软件扫描以及检测异常访问模式、使用受损身份验证令牌和数据外泄。

客户的推荐操作

为了最小化滥用的整体风险,我们建议客户在用户访问存储账户方面采用以下实践:

  • 审查用户权限,确保对存储账户的最小权限访问。此外,可以将权限授予限制到所需的最小范围(例如存储账户或资源组)。
  • 监控活动日志以获取账户密钥的访问情况。
  • 为托管Azure Functions的存储账户启用StorageWrite资源日志,并配置生命周期策略以管理日志的保留期限。
  • 当在blob存储中存储应用程序代码时,考虑使用专用于此目的的存储账户,以便限制访问。
  • 为存储账户启用MDC。

除了上述推荐操作外,我们还更新了现有文档。鼓励客户审查更新后的文档:

结论

总之,我们感谢有机会调查Orca Security报告的发现。我们鼓励所有研究人员在协调漏洞披露(CVD)下与供应商合作,并遵守渗透测试的参与规则,以避免在进行安全研究时影响客户数据。向Microsoft安全响应中心报告安全问题的研究人员也有资格参与Microsoft的漏洞奖励计划。

Orca的报告突出了我们继续改进的机会,以帮助客户正确配置具有最小权限的环境。通过应用适当的RBAC管理并确保用户被授予所需的最低权限级别,可以最小化这些场景的风险。使用目前处于预览阶段的基于身份验证的AzureWebJobsStorage连接,可以防止使用过度权限。Azure Storage还提供强大的监控功能,以检测存储资源上的异常或未经授权的更改。同时,我们认为我们关于为客户正确配置存储账户访问用户权限的指导可以进一步澄清,因此我们更新了现有文档以反映这一点。一如既往,我们鼓励客户遵循安全最佳实践,以限制其暴露于漏洞和其他类型安全事件的风险。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计