Div*_*ivZ 5 azure azure-active-directory
我经常对Azure AD中的三个主题感到困惑:
有什么不同?
我可以轻松进入“应用程序注册”并注册一个“应用程序”,而该“应用程序”甚至不需要存在。它所需要的只是一个URL,它也可以是完全随机的。然后,此应用程序注册成为服务主体,例如,您可以使用该服务主体从PowerShell连接到Azure?为什么?我不明白
请告知,您可能会说,我是Azure的新手:)
这确实令人困惑,而且你并不是唯一有这种感觉的人。我想整个应用程序/服务主体是从 Web 应用程序的角度设计的,可以跨多个 Azure AD 租户进行扩展。对于只想创建一些连接到 Azure 服务的小脚本的人来说,了解整个事情太多了。不幸的是,没有办法解决这个问题。Azure Portal 对于这一部分也有点令人困惑,当我使用 Azure CLI 时它才开始变得有意义。
要以编程方式访问 Azure 资源,我们需要使用服务主体凭据。服务主体实际上是应用程序的一个实例,因此我们也需要首先创建一个应用程序(应用程序注册)。如果从门户添加应用程序注册,则会自动创建服务主体。使用 Azure CLI 创建应用程序和服务主体是两个不同的步骤。
棘手的部分是,必须从应用程序获取凭据(应用程序注册 - >选择应用程序 - >证书和秘密)。虽然服务主体的角色分配必须从订阅(选择订阅 -> 访问控制 (IAM) -> 角色分配)或支持 IAM 的任何其他资源完成。使用 CLI 的相同过程更有意义。
使用 Azure CLI
$ az ad app create --display-name "displayName"
Run Code Online (Sandbox Code Playgroud)
$ az ad sp create --id "applicationId"
Run Code Online (Sandbox Code Playgroud)
$ az ad app credential reset --credential-description "some_description" --id "applicationId"
Run Code Online (Sandbox Code Playgroud)
或者
$ az ad sp credential reset --credential-description "some_description" --name "applicationDisplayName" --append
Run Code Online (Sandbox Code Playgroud)
$ az role assignment create --assignee "service principal object id/ApplicationId" --role role_name
Run Code Online (Sandbox Code Playgroud)
如果您不关心所有这些应用程序/服务主体内容,而只想使用服务主体来访问 Azure 资源,那么有一个快捷方式。
$ az ad sp create-for-rbac --name "service_principal_name"
Run Code Online (Sandbox Code Playgroud)
这将创建应用程序、服务主体、在应用程序上设置凭据、将订阅范围内的贡献者角色分配给服务主体并打印凭据!
由于应用程序(在应用程序注册中)和服务主体(企业/所有应用程序)的名称相同,因此我们需要仔细查看对象 ID 和应用程序 ID 以找出哪个是哪个。最重要的是,服务主体在 Azure 门户中列为企业应用程序/所有应用程序。
“企业应用程序”只是服务主体的一个类别,它满足两个条件。
请注意,从 cli 创建的服务主体没有出现在“企业应用程序”中,我必须手动添加标签。
$ az ad sp update --id "service_principal_object_id" --add tags WindowsAzureActiveDirectoryIntegratedApp
Run Code Online (Sandbox Code Playgroud)
当您以开发人员身份编写应用程序时,将在给定的租户中注册该应用程序,并指定其属性。这发生在Azure AD的“应用程序注册”刀片中。我敢说一个类比,即该应用就像面向对象语言中的“类”(具有一些静态属性,这对于所有实例都是通用的)
通过在给定租户中注册应用程序(如果您使用门户),这还将自动为此应用程序创建一个服务主体,您可以在Azure门户的“企业应用程序”刀片中找到该主体。为了继续我的类比,门户网站创建了该类的一种实例。该服务主体包含与应用程序,租户及其用户相关的信息。例如,它包含用户的活动,特别是他们所同意的活动。
现在,如果在应用程序注册/应用程序管理期间,您确定您的应用程序是“多租户”,那么,当在其他租户中访问该应用程序时,将在该租户中创建另一个服务主体(请记住该实例)。
顺便说一句,您进入了azure门户中的新应用注册(预览)刀片,创建应用时,您现在可以按类别很好地查看应用的所有属性(所有服务主体共有的所有属性) )。现在,如果在应用程序的“概述”选项卡中,单击链接“本地目录中的受管应用程序”,您将进入同一租户中的相应服务主体(您将在其中看到哪些用户访问了应用程序,何时,何地可以授予管理员同意-如果您是租户管理员-并查看活动和审核日志)
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |