问题标签 [azure-service-principal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1264 浏览

node.js - 在 NodeJS 中使用服务主体连接到 Azure SQL,但令牌被拒绝

我无法让我的 NodeJS 应用程序使用服务主体连接到 Azure SQL 数据库。但是,当我尝试用 C# 代码段做同样的事情时,它工作得很好。我注意到两种语言的身份验证返回的令牌有点不同,如果我从 C# 中获取正确的令牌并将其硬编码到 NodeJS 中,我的 SQL 连接现在成功了。

我首先使用 ms-rest-azure 执行身份验证,并提供我的 clientId、tenantId 和 clientSecret。这将返回一个有效的凭证,我从中提取 accessToken。

然后,我使用繁琐的方法尝试连接到 *.database.windows.net 上的 Azure SQL 并在配置中提供 accessToken 值。

我只是让用户“<token-identified principal>”登录失败

我在 ms-rest-azure 登录中做错了什么给我一个被 Azure SQL 拒绝的令牌?我看到的一件事是工作令牌的受众是database.windows.net,其中来自 ms-rest-azure 的是management.core.windows.net

我已经被困了几天,如果有人在这里有任何线索,那就太棒了。ms-rest-azure 上的文档似乎不存在,只是为您提供了 Azure 销售页面的解决方法。

0 投票
3 回答
2614 浏览

azure - 有没有办法使用 ARM 模板来创建 Azure 服务主体?

我正在尝试编写一个 ARM 模板,该模板可以在 Azure 上创建具有所有指定权限的服务主体。最终目标是自动化此过程并使用模板创建 n 个服务主体。有没有办法做到这一点?非常感谢任何帮助,谢谢!

0 投票
1 回答
858 浏览

azure-devops - Azure DevOps 执行 Get-AzureADServicePrincipal cmdlet 所需的权限是什么?

我正在使用 Azure DevOps 管道部署基于 Azure Function 的应用程序,作为部署的一部分,还预配了所需的基础架构(使用 ARM 模板)。Azure 功能需要访问 Microsoft Graph 和 SharePoint REST API,要实现这一点,需要执行以下步骤:

  1. Azure 函数是使用系统分配的标识 (MSI) 创建的。
  2. MSI(身份)被传递到下面的 PowerShell 脚本,以启用对 Graph 和 SharePoint API 的访问。

由于权限不足,执行 Get-AzureADServicePrincipal 命令时的 PowerShell 脚本失败,此命令在 DevOps 的 ServiceConnection 身份下执行。ServiceConnection 被分配了以下额外的权限, 在此处输入图像描述

我无法弄清楚 GetServicePrincipal 需要哪些其他权限才能成功,以及执行 New-AzureAdServiceAppRoleAssignment cmdlet。

[2020 年 8 月 31 日更新] 感谢 AlleWu 的解决方案,解决了与 GetServicePrincipal 相关的权限问题。但是,尽管有以下权限,执行 NewServicePrincipalAppRoleAssignment 的权限问题仍然存在,我错过了一些步骤。我另外将 ServiceConnection 对象设置为 ResourceGroup 的所有者,但这也失败了。

服务连接权限

NewServicePrincipalAppRoleAssignment 执行错误日志:

2020 年第一组更新:上面建议的替代解决方案有效,下面我更新了用于提供所需权限的脚本,

0 投票
2 回答
293 浏览

azure-active-directory - powershell core 7.0.3 Az.Account PSADServicePrincipal appRoles 和 oauth2permissions

我有 Windows powershell 5.1 脚本块,如下所示,可以成功检索 appRoles 和 oauth2permissions。

我正在尝试转换为如下所示的 powershell core 7 脚本块,但我无法检索 appRoles 和 oauth2permissions,因为 PSADServicePrincipal 类型不会公开这些属性。

问题 - 任何人都知道我如何使用 powershell 核心 7.0.3 api 和类型获得 azure 广告服务主体 appRoles 和 oauth2permissions 吗?

0 投票
1 回答
67 浏览

python - Azure 服务主体创建 - 使用 Azure 函数

我正在尝试编写一个 Python Azure 函数来创建具有自定义角色的服务主体。我有 JSON 模板来传递角色定义并创建自定义角色。该函数的想法是使用等效于“az ad sp create-for-rbac”cli 命令的 REST API 并生成 client_id、client_secret 和tenant_id。如果您尝试过,请告诉我,非常感谢您提供任何帮助,谢谢!

0 投票
1 回答
33 浏览

terraform-provider-azure - 在创建资源之前创建服务原则

可以创建服务原则来控制对 Azure 中特定资源的访问。比如azure ACR的服务原理可以按照官方页面创建

我的问题是,我可以在创建 azure ACR 之前创建服务原则吗?我问是因为我需要通过 Terraform 创建一个 azure ACR,并且我想添加服务原则并为其分配角色。但那时我什至没有 ACR,这将是一个先有鸡还是先有蛋的问题。我可以在 Terraform 提供 ACR 资源之前创建服务原则吗?

0 投票
2 回答
1223 浏览

azure-active-directory - Azure AD:为服务主体授予 appRoleAssignment 失败并出现“代码”:“Request_ResourceNotFound”

我正在尝试为应用程序创建一个“服务主体”,并使用 Microsoft 图形 API 授予管理员同意权限。

我按照以下步骤操作:

  1. 使用图形 API 在租户中创建应用程序。我的请求正文是:

  2. 为上面创建的应用程序创建了一个服务主体。创作成功。

  3. 现在,我想使用图形 API 以编程方式授予管理员同意每个分配的权限。

  4. 为了授予应用程序权限,我在 API 的服务主体的 appRoleAssignedTo 集合中创建了一个应用程序角色分配:请求如下:

    发帖请求:

    请求正文:

这里,

  1. “principal_id”是在上述步骤 2 中创建的服务主体的“id”。
  2. “approle_id”是您要授予的 appRole 的 id。(从“requiredResourceAccess”中的“resourceAccess”数组中获取“id”值)
  3. http请求url中的“id”和“resource_id”是一样的。(从“requiredResourceAccess”中获取“resourceAppId”值,对应于上面给出的“approle_id”)

运行查询后,我收到错误 404。“代码”:“resource_id”/“id”字段的“Request_ResourceNotFound”。

  • 添加屏幕截图以更好地理解:
  1. 应用程序创建:

在此处输入图像描述

  1. 服务主体创建:

在此处输入图像描述

  1. 为服务主体授予 appRoleAssignment:

在此处输入图像描述

我对在哪里使用哪些 ID 感到困惑,并且没有从文档中得到明确的想法。任何人都可以解决我的问题吗?提前致谢。

0 投票
1 回答
369 浏览

azure - Azure 服务主体:为服务主体授予 appRoleAssignment 确实会更新原始权限的状态

我正在尝试授予管理员同意使用 Microsoft 图形 API 分配的权限。我执行的步骤如下:

  1. 创建定义了“appRoles”数组的应用程序。

  2. 使用 appId 创建服务主体。

  3. 为服务主体授予 appRoleAssignment。我运行了http post请求:

https://graph.microsoft.com/v1.0/servicePrincipals/{id}/appRoleAssignedTo

  1. 在 Azure 门户中,我看到它不是授予最初存在的权限,而是创建另一个权限并授予对它的同意,如下图所示。

在此处输入图像描述

为什么即使“appRoleId”相同,它也不授予原始权限?我想授予原始权限,有人可以告诉我吗?谢谢。

0 投票
1 回答
1141 浏览

azure - 权限不足,无法完成使用 az ad sp list 列出服务主体的操作

您好我正在尝试使用登录服务主体的 Azure CLI 命令

az ad sp 列表

我收到错误消息权限不足,无法完成操作。

服务主体是订阅的所有者,并且已为 Microsoft Graph 和 Azure Active Directory Graph 分配了委派 API 权限 Directory.Read.All。

我在另一个 Azure 租户上进行了类似的设置,其中相同的命令将为我提供具有相同 API 权限的 SP 列表。少了什么东西。

0 投票
1 回答
496 浏览

oauth - 使用服务连接获取 OAuth 令牌

我正在使用 Azure DevOps 部署 Web 应用并为 SQL 数据库执行数据库迁移。我有一个服务连接设置,并且能够使用 Azure CLI 部署 Azure 资源,例如

现在,我想执行数据库迁移,并且我想使用服务连接进行身份验证(应用注册已被授予访问 SQL 数据库的权限)。我的理解是我可以使用 OAuth 令牌登录到 SQL 数据库 - 我的问题是如何使用服务连接获取该令牌。

请注意,我无法将客户端密码添加到 Azure 中的服务主体,因此无法使用 a 进行 REST 调用/oauth2/tokenclient_secret我在企业空间工作,事情已被锁定)。

鉴于管道可以访问 Azure DevOps 服务连接,我的感觉是必须有某种方法来使用它来获取对https://database.windows.net/资源有效的 OAuth 令牌 - 但是如何?