AAD和MSI之间的区别

时间:2019-07-12 10:42:03

标签: azure azure-active-directory azure-keyvault

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

现在,我可以使用托管服务身份来实现相同的事情。那么两种方法有什么区别。哪种方法最好?

以下是所引用的链接:

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

2 个答案:

答案 0 :(得分:2)

通常,使用托管身份(系统分配或用户分配)比您自己管理的应用程序注册更好。

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

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

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

答案 1 :(得分:0)

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

托管身份有2种类型:用户分配的和系统分配的。使用服务主体与托管身份之间的区别在于,在后一种情况下,您不必处理秘密。同样,当使用系统分配的受管身份时,一旦删除了创建身份的资源,身份就会被删除。使用用户分配的身份或服务主体时,您将必须手动进行。

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

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