AZURE Active Directory-服务主体和企业应用程序之间有什么区别?

时间:2018-11-01 20:57:44

标签: azure azure-active-directory

我经常困惑于Azure AD中的三个主题:

  1. 服务负责人
  2. 企业应用
  3. 应用注册

有什么区别?

我可以轻松进入“应用程序注册”并注册一个“应用程序”,而该“应用程序”甚至不需要存在。它所需要的只是一个URL,它也可以是完全随机的。然后,此应用程序注册成为服务主体,例如,您可以使用该服务主体从PowerShell连接到Azure?为什么?我不明白。

请告知,并且您可能会说,我是Azure的新手:)

2 个答案:

答案 0 :(得分:5)

当您以开发人员身份编写应用程序时,将在给定的租户中注册该应用程序,并指定其属性。这发生在Azure AD的“应用程序注册”刀片中。 我敢说一个类比,即该应用就像面向对象语言中的“类”(具有一些静态属性,这对于所有实例都是通用的)

通过注册该应用程序,如果您使用门户在该给定的租户中,这还将自动为此应用程序创建一个服务主体,您可以在Azure门户的“企业应用程序”刀片中找到该主体。 为了继续我的类比,门户网站创建了该类的一种实例。该服务主体包含与应用程序,租户及其用户相关的信息。例如,它包含用户的活动,特别是他们同意的内容。

现在,如果在应用程序注册/应用程序管理期间,您确定您的应用程序是“多租户”,那么,当在其他租户中访问该应用程序时,将在该租户中创建另一个服务主体(请记住该实例)

顺便说一句,您转到azure门户中的新App Registration (Preview)刀片,在创建应用程序时,您现在可以按类别很好地查看该应用程序的所有属性(所有应用程序共有的所有属性)服务主体)。现在,如果在应用程序的“概述”选项卡中,单击链接“本地目录中的受管应用程序”,您将进入同一租户中的相应服务主体(您将在其中看到哪些用户访问了应用程序,何时何地可以授予管理员同意-如果您是租户管理员-并查看活动和审核日志)

答案 1 :(得分:3)

这确实令人困惑,而且您并不是唯一有这种感觉的人。我猜这整个应用程序/服务主体是从 Web 应用程序的角度设计的,可以跨多个 Azure AD 租户进行扩展。对于只想创建一些连接到 Azure 服务的小脚本的人来说,了解整个事情太多了。不幸的是,没有办法解决它。 Azure Portal 这部分也有点混乱,直到我使用 Azure CLI 才开始有意义。

要以编程方式访问 Azure 资源,我们需要使用服务主体凭据。 Service Principal 实际上是应用程序的一个实例,所以我们也需要先创建一个应用程序(App Registration)。如果从门户添加应用注册,则会自动创建服务主体。使用 Azure CLI 创建应用程序和服务主体是两个不同的步骤。

棘手的部分是,必须从应用程序(应用程序注册 -> 选择应用程序 -> 证书和机密)获取凭据。而服务主体的角色分配必须从订阅(选择订阅 -> 访问控制(IAM) -> 角色分配)或任何其他支持 IAM 的资源完成。使用 CLI 的相同过程更有意义。

使用 Azure CLI

  1. 注册/创建应用
$ az ad app create --display-name "displayName"
  1. 为刚刚创建的应用创建服务主体
$ az ad sp create --id "applicationId"
  1. 设置应用凭据
 $ az ad app credential reset --credential-description "some_description" --id "applicationId" 

$ az ad sp credential reset --credential-description "some_description" --name "applicationDisplayName" --append
  1. 将角色分配给服务主体以访问 Azure 中的资源。
$ az role assignment create --assignee "service principal object id/ApplicationId" --role role_name

如果您不关心所有这些应用程序/服务主体内容,而只想使用服务主体访问 Azure 资源,那么有一个快捷方式。

$ az ad sp create-for-rbac --name "service_principal_name"

这将创建应用程序、服务主体、在应用程序上设置凭据、将订阅范围内的贡献者角色分配给服务主体并打印凭据!!

由于应用程序(在应用程序注册中)和服务主体(企业/所有应用程序)的名称相同,我们需要仔细查看对象 ID 和应用程序 ID 以找出哪个是哪个。最重要的是,服务主体在 Azure 门户中列为企业应用程序/所有应用程序。

“企业应用”只是满足两个条件的一类服务主体。

  1. 服务主体和应用程序注册应在同一租户中。
  2. 服务主体应具有标记“WindowsAzureActiveDirectoryIntegratedApp”。如果从服务主体中删除此标记,它不会显示在企业应用程序下,但仍会列在“所有应用程序”下。 (不要在生产中尝试!!)

请注意,从 cli 创建的服务主体没有出现在“企业应用程序”中,我必须手动添加标签。

$ az ad sp update --id "service_principal_object_id" --add tags WindowsAzureActiveDirectoryIntegratedApp