AAD 和 MSI 之间的区别

Difference between AAD and MSI

我是 Azure.While 探索 Azure KMS 服务与 Azure SDK 的新手(因为我需要我的应用程序与 Azure 服务通信),我遇到了 AAD,我在其中注册了新的应用程序,然后使用KMS 中的服务主体。

现在,我可以用托管服务实现同样的事情 Identity.So 2 个之间有什么区别 approaches.Which 一个是最好的?

以下是参考链接:

[https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/overview][1]

之间没有区别,因为它们不平等。托管身份是在 Azure Active Directory (AAD) 之上构建的。

有两种类型的托管身份:用户分配的和系统分配的。使用服务主体与托管身份之间的区别在于,在后一种情况下,您不必处理机密。此外,当使用系统分配的托管身份时,一旦创建它的资源被删除,身份就会被删除。使用用户分配的身份或服务主体时,您必须手动执行此操作。

现在,从来没有最好的选择。问题是,并非所有 Azure 资源都支持托管身份。但如果他们这样做,我更愿意使用它们,这样我就不必自己在 AAD 中注册应用程序,也不必使用它们的秘密来允许访问其他资源。基本上创建托管身份将在 AAD 中创建一个身份。

可以找到一些易于理解和可读的概述 here

一般来说,最好使用托管身份(系统分配或用户分配),而不是您自己管理的应用程序注册。

当您创建应用程序注册(应用程序对象)并在租户(ServicePrincipal 对象)中实例化该应用程序时,您必须管理该应用程序的凭据。您需要安全地生成、存储和更新凭据(秘密或证书),并且您需要在应用程序代码中使用此凭据来获取访问令牌。

托管标识在 Azure AD 中也将具有相应的 ServicePrincipal 对象。但是,使用托管身份,您不必再担心生成、更新或保护凭据。所有这些都由服务为您管理,为您提供一个非常简单的界面来获取令牌,并让您专注于构建您的解决方案。

在某些情况下您不能直接使用托管身份(例如,如果您正在构建 Web 应用程序并想要实施授权码流程,则不能将托管身份用作 OAuth 2.0 客户端).在这些情况下,使用托管身份 bootstrap 您的应用程序访问凭据通常非常有用:使用您服务的托管身份访问存储在 Azure Key Vault 中的证书或机密,然后使用该凭据作为常规 OAuth 2.0 流程的一部分(例如使用 MSAL 库)。