当你作为开发人员生成非用户应用程序时,你没有可以提示你输入用户名和密码或多重身份验证(MFA)的用户。 需要自行提供应用程序的标识。 本文介绍为什么 Azure 上服务(非用户应用程序)的最佳零信任客户端凭据做法是 Azure 资源的托管标识。
服务帐户相关问题
使用 服务帐户 (对服务使用用户帐户)并不是一个很好的解决方案。 Microsoft Entra ID 没有服务帐户概念。 当管理员为服务创建用户帐户,然后与开发人员共享密码时,它不安全。 它不能是无密码的,也不能具有 MFA。 最佳解决方案是使用以下客户端凭据选项之一,而不是使用用户帐户作为服务帐户。
客户端凭据选项
有四种类型的客户端凭据可以标识应用程序。
- 密钥
- 证书
- Azure 资源的托管标识
- 联合凭据
密钥或证书?
机密密钥在复杂的机密管理基础结构(如 Azure Key Vault)中是可接受的。 但是,在 IT 专业人员生成密钥并将其通过电子邮件发送到开发人员的情况下,无法正确保护机密密钥。
基于证书的客户端凭据比密钥更安全。 可以更好地管理证书,因为它们本身不是机密。 机密不是传输的一部分。 使用密钥时,客户端会将密钥的实际值发送到 Microsoft Entra ID。 使用证书时,证书的私钥永远不会离开设备。 即使有人截获、解码和取消加密传输,机密仍然安全,因为拦截方没有私钥。
最佳做法:对 Azure 资源使用托管标识
当您在 Azure 中开发服务(非用户应用程序)时,Azure 资源的托管标识在 Microsoft Entra ID 中拥有自动管理的标识。 应用可以向任何支持Microsoft Entra 身份验证的服务进行身份验证,而无需管理凭据。 无需管理机密。 无需解决丢失或处理不当的可能性。 不良参与者无法截获不跨网络移动的机密。 在 Azure 上构建服务时,Azure 资源的托管标识是一种最佳实践。
后续步骤
- 单租户和多租户应用的受支持身份和帐户类型 解释了如何选择您的应用是否仅允许来自您自己的 Microsoft Entra 租户的用户、来自任何 Microsoft Entra 租户的用户,或者使用个人 Microsoft 帐户的用户。
- 制定应用程序权限策略可帮助你确定应用程序权限凭据管理方法。
- 当没有用户时,提供应用程序身份凭证,以解释为什么 Azure 资源的托管标识是 Azure 上服务(非用户应用程序)的最佳客户端凭据做法。
- 授权最佳做法可帮助你为应用程序实现最佳授权、权限和同意模型。
- 在应用程序开发生命周期中使用零信任身份和访问管理开发最佳做法来创建安全应用程序。
- 使用零信任标识方法生成应用 概述了权限和访问最佳做法。