零信任身份和访问管理开发最佳做法
本文帮助开发人员了解应用程序开发生命周期的身份和访问管理最佳做法。 通过身份和访问管理 (IAM) 开始开发安全、符合零信任要求的应用程序。
零信任安全框架使用显式验证、最低权限访问和假设违规的原则。 保护用户和数据,同时允许从网络外围以外访问应用程序等常见方案。 减少对安全网络外围后面的交互操作的隐式信任的依赖,这些交互可能会容易受到安全攻击。
行业安全趋势影响应用程序要求
尽管零信任实现不断发展,但每个组织的旅程都是独一无二的,通常从用户和应用程序标识开始。 下面是许多组织在推出零信任时优先考虑的策略和控件:
- 对应用和服务实现凭据安全机制和轮换策略。 当攻击者入侵机密(如证书或密码)时,他们可以实现深度系统访问,伪装成某个应用的标识来获取令牌。 然后,它们访问敏感数据、横向移动并建立持久化。
- 推出强身份验证。 IT 管理员正在配置需要多重身份验证和无密码 FIDO2 设备的策略。
- 限制用户将关于低风险权限应用的同意授予已验证发布者应用。 通过访问 API(如 Microsoft Graph)中的数据,可以生成富应用程序。 组织和客户在授予同意之前评估应用的权限请求和可信度。 IT 管理员通过要求发布者验证明确地接受验证原则。 他们仅允许用户同意低风险权限,从而应用最低特权原则。
- 阻止旧式协议和 API。 IT 管理员阻止较旧的身份验证协议(例如“基本身份验证”),并要求使用 Open ID Connect 和 OAuth2 等新式协议。
使用可信、基于标准的身份验证库
使用已知且已接受的标准和库开发应用程序,以提高应用程序可移植性和安全性。 可信、基于标准的身份验证库保持最新状态,使应用能够响应最新的技术和威胁。 基于标准的开发方法概述了受支持的标准及其优势。
应使用 Microsoft 身份验证库 (MSAL)、Microsoft 标识 Web 身份验证库和 Azure 软件开发工具包 (SDK) 等库来开发应用程序,而不是使用有已知漏洞和广泛文档的协议。 MSAL 和软件开发工具包 (SDK) 允许使用这些功能,无需编写额外的代码:
- 条件性访问
- 设备注册和管理
- 无密码和 FIDO2 身份验证
MSAL 和 Microsoft Graph 是开发 Microsoft Entra 应用程序的最佳选择。 MSAL 开发人员确保遵守协议。 直接使用 Microsoft Entra ID 时,Microsoft 优化 MSAL 以提高效率。
在 Microsoft Entra ID 中注册应用
遵循 Microsoft Entra ID 中应用程序属性的安全最佳做法。 Microsoft Entra ID 中的应用程序注册至关重要,因为应用程序安全机制的任何配置错误或失效都可能导致故障或入侵。
提高安全性的应用程序属性包括重定向 URI、访问令牌(永远不会用于隐式流)、证书和机密、应用程序 ID URI 以及应用程序所有权。 开展定期安全和运行状况评估,与代码的安全威胁模型评估相似。
委派标识和访问管理
开发应用程序以使用令牌进行客户定义和管理的显式身份验证和访问控制。 Microsoft 建议不要开发自己的用户名和密码管理系统。
从代码中删除凭据,以使 IT 管理员可以轮换凭据,而无需关闭或重新部署应用。 使用 Azure Key Vault 或 Azure 托管标识等服务委派 IAM。
最低权限访问的计划和设计
零信任的主要原则是最低权限访问。 充分开发和记录应用程序,使客户能够成功配置最低特权策略。 支持令牌和 API 时,为客户提供应用程序调用的资源的完善文档。
始终提供用户执行特定任务所需的最低权限。 例如,使用 Microsoft Graph 中的精细范围。
在 Graph 浏览器中浏览范围,以调用 API 并查看必需的权限。 它们按照特权从最低到最高的顺序显示。 选择尽可能低的特权可确保应用程序受到攻击的可能性降低。
遵循利用最低特权原则来增强安全性中的指南,以降低应用程序的攻击面并缩小发生入侵时的安全漏洞爆炸半径。
安全地管理令牌
当应用程序从 Microsoft Entra ID 请求令牌时,安全地管理它们:
- 验证它们对于应用程序来说范围正确。
- 适当地缓存它们。
- 按预期方式使用。
- 通过检查错误类和编写适当的响应来处理令牌问题。
- 在令牌响应中查看其范围和详细信息,而不是直接读取访问令牌。
支持连续访问评估 (CAE)
连续访问评估 (CAE) 允许 Microsoft Graph 快速拒绝访问以响应安全事件。 示例包括以下租户管理员活动:
- 删除或禁用用户帐户。
- 对用户实施多重身份验证 (MFA)。
- 显式撤消颁发给用户的令牌。
- 检测变成高风险状态的用户。
当支持 CAE 时,Microsoft Entra ID 颁发的用于调用 Microsoft Graph 的令牌有效期为 24 小时,而非标准的 60 到 90 分钟。 CAE 使 MSAL 能够在令牌过期之前主动刷新令牌,从而为应用增加复原能力。
为 IT 组织定义要分配给用户和组的应用角色
应用角色可帮助你在应用程序中实现基于角色的访问控制。 应用角色的常见示例包括管理员、读者和参与者。 基于角色的访问控制允许应用程序根据其定义的角色限制对用户或组的敏感操作。
成为经过验证的发布者
作为已验证的发布者,你可以使用 Microsoft 合作伙伴网络帐户验证身份并完成既定的验证过程。 对于多租户应用的开发人员来说,成为已验证的发布者有助于在客户租户中与 IT 管理员建立信任。
后续步骤
- 自定义令牌介绍了可以在 Microsoft Entra 令牌中接收的信息。 了解如何自定义令牌以提升灵活性和控制力,同时提高应用程序零信任最低特权的安全性。
- 配置令牌中的组声明和应用角色介绍了如何使用应用角色定义配置应用,以及如何将安全组分配给应用角色。 这种方法可提升灵活性和控制力,同时提高应用程序零信任最低特权的安全性。
- 使用标识零信任方法生成应用概述了权限和访问的最佳做法。
- 标识集成指南介绍了如何将安全解决方案与 Microsoft 产品集成以创建零信任解决方案。
- 开发人员和管理员对应用程序注册、授权和访问权限的责任可帮助你更好地与 IT 专业人员协作。
- 单租户和多租户应用支持的标识和帐户类型解释了如何选择应用是仅允许来自 Microsoft Entra ID 租户的用户、任何 Microsoft Entra 租户的用户,还是拥有个人 Microsoft 帐户的用户。
- 授权最佳做法可帮助你为应用程序实现最佳授权、权限和同意模型。
- API 保护描述了通过注册保护 API、定义权限和同意,以及强制实施访问权限,以实现零信任目标的最佳做法。