azure - Azure 服务主体到底是什么?

标签 azure azure-service-principal

来自关于Azure CLI Sign-in的页面:

Service principals are accounts not tied to any particular user, which can have permissions on them assigned through pre-defined roles. Authenticating with a service principal is the best way to write secure scripts or programs, allowing you to apply both permissions restrictions and locally stored static credential information

服务主体似乎是一种服务帐户,一种不与任何特定人员绑定(bind)的身份。

另一方面,来自here服务主体似乎是应用程序注册域中应用程序对象的实例化。这与注册应用程序有关,以便可以使用 OAuth 2.0 等对其进行授权。

所以我无法理解这两个概念之间的关系。有人可以帮忙吗?

最佳答案

服务主体是一种服务帐户。 这是权限分配给的东西。 例如,如果您同意应用程序代表您读取您的用户配置文件,则会向服务主体添加 OAuth 2 权限授予。 应用程序权限在授予时会向服务主体添加应用程序角色分配。

当您进行应用注册时,还会在同一 Azure AD 租户中创建服务主体。 即使您通过应用注册表单添加所需的权限并同意这些权限,这些权限实际上也会分配给服务主体。 应用程序注册实际上只是一个模板。

有趣的是,如果你有一个 Multi-Tenancy 应用程序(其他 Azure AD 租户的用户可以使用你的应用程序)。 在这种情况下,当用户同意您的应用程序所需的权限时,也会在其他 Azure AD 租户中创建代表您的应用程序的服务主体。 本质上,您可以使用您的应用程序在每个租户中自动生成一个服务帐户。 这允许管理员决定授予您的应用哪些权限、哪些用户可以访问该应用等。

关于azure - Azure 服务主体到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74445953/

相关文章:

c# - 如何在 C# 中对 Azure 机器学习管道终结点使用服务主体身份验证?

azure - 无权在 Azure 门户中创建新项目

azure - 如何使用 PowerShell 将我的 Azure 应用服务 Web 应用连接到专用虚拟网络子网(通过虚拟网络网关)?

azure - 在 Azure DevOps 管道中,在 powershell 任务中使用变量会导致在执行 az login 时出现 ArgumentParseError

azure - 如何授予 Function App 访问 Azure 存储帐户的权限?

Azure:创建服务主体时如何修复此错误?

azure - 如何为 PostgreSql 单服务器的 Azure 数据库创建服务主体

c# - Azure Function .net core 6 隔离-traceparent (W3C) 关联

azure - Azure Devops 中的列出容量 API 不返回已离开组织的成员的容量

azure - 如何使用 ARM 模板将诊断设置添加到现有的 Azure Kubernetes?