当没有用户时提供应用程序标识凭据

当你作为开发人员生成非用户应用程序时,无需提示用户输入用户名和密码或进行多重身份验证 (MFA)。 需要提供应用程序自己的标识。 本文解释了为什么 Azure 上的服务(非用户应用程序)的最佳零信任客户端凭据实践是 Azure 资源托管标识

服务帐户的问题

使用“服务帐户”(创建用户帐户并将其用于服务)并不是好解决方案。 Microsoft Entra ID 没有服务帐户概念。 当管理员为服务创建用户帐户后与开发人员共享密码时,它是不安全的。 它不能无密码,也不能采用 MFA。 最佳解决方案是使用下面所述的客户端凭据选项之一,而不是将用户帐户用作服务帐户。

客户端凭据选项

有四种类型的客户端凭据可以标识应用程序。

密钥还是证书?

在企业中采用复杂的机密管理基础结构(例如 Azure Key Vault)时,可以接受密钥。 但是,如果 IT 专业人员生成密钥后通过电子邮件将其发送给开发人员,开发人员随后可能会将其存储在不安全的位置,例如电子表格中,这会导致密钥未得到适当的保护。

基于证书的客户端凭据比密钥更安全。 证书管理得更好,因为它们不是机密本身。 在传输中未包含机密。 使用密钥时,客户端会将密钥的实际值发送到 Microsoft Entra ID。 使用证书时,证书的私钥永远不会离开设备。 即使有人截获、解码和解密传输内容,机密仍然安全,因为拦截方没有私钥。

最佳做法:使用 Azure 资源托管标识

在 Azure 中开发服务(非用户应用程序)时,Azure 资源托管标识可在 Microsoft Entra ID 中提供一个自动托管标识。 应用可以对支持 Microsoft Entra 身份验证的任何服务进行身份验证,无需管理凭据。 无需管理机密;无需应对丢失或处理不当的可能性。 机密不会被截获,因为它们不会跨网络移动。 如果要在 Azure 上构建服务,则最佳做法是使用 Azure 资源托管标识

后续步骤