问题标签 [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 投票
2 回答
1059 浏览

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

我的管道中有一个 Powershell 任务:

addSpnToEnvironment: true通过在此 Powershell 任务之前的 AzureCLI 任务向我提供服务主体详细信息。

当 Powershell 任务运行时,我得到 ArgumentParseError: argument --username/-u: expected one argument. 我该如何解决这个问题?

0 投票
1 回答
92 浏览

oauth-2.0 - Azure AD:应用注册过程是否需要时间来注册自签名证书?

  1. 我正在使用 Microsoft 图形 API 在 Azure 租户中创建一个应用程序。同时,我也在上传一个应用程序的自签名证书。
  2. OAuth 客户端可以通过提供用户断言来请求访问令牌。用户断言是自签名 x509 证书。

尝试使用用户断言获取访问令牌时,我观察到不同的行为:

  1. 在注册过程 24 小时后尝试获取应用程序的访问令牌时,我能够成功获取访问令牌。

  2. 当尝试为立即注册的应用程序获取访问令牌时,它会失败并出现以下“Invalid_client”错误。 在此处输入图像描述

那么,应用程序注册过程是否需要时间来注册自签名证书?

0 投票
1 回答
1677 浏览

azure-active-directory - 如何授予服务主体对 Active Directory 组的读取权限?

目前,我正在尝试从使用服务主体登录的 GitHub 操作中读取 Active Directory 组的 ObjectId。

服务主体是具有以下附加权限的贡献者:

使用 Azure CLI 运行以下命令时:

我收到以下输出:

我尝试通过以下权限通过 Microsoft Graph API 向服务主体授予权限:

但是,这些不足以授予读取权限。

0 投票
1 回答
1596 浏览

azure - 如何在 Azure 中通过客户端 ID 查找身份?

我有一个应用程序 ( AWX ),其脚本试图在 Azure 中执行一项操作(将标签添加到 vm)。在 AWX 中,我收到以下错误,显然来自 Azure:msg: "Error retrieving resource group usw-sys-rg-001 - The client '9d...27' with object id '9d...27' does not have authorization to perform action 'Microsoft.Resources/subscriptions/resourcegroups/read' over scope '/subscriptions/83...4a/resourcegroups/usw-sys-rg-001' or the scope is invalid. If access was recently granted, please refresh your credentials."

似乎是直截了当的消息。正在使用的帐户/身份/委托人未经授权。问题是,错误消息中的客户端 ID 与我在 AWX 中拥有的任何凭据对象都不相关。特别是它与我在 AWX 中拥有的 Microsoft Azure 资源管理器凭据无关。不是这本 AWX 剧本的作者,我对这一切感到有些困惑。

由于错误似乎来自 Azure,并且 Azure 似乎没有说客户端 ID 不存在,这让我认为我应该能够在 Azure 中找到该身份(可能是服务主体)并检查它的权限。但是,当我筛选应用程序注册时,我找不到与上述错误消息中的客户端 ID 匹配的条目。

如何在 Azure 门户中找到服务主体?或者是别的什么?

我一定是看错了。有没有人有任何指示?非常感谢。

0 投票
1 回答
314 浏览

azure-sql-database - Azure Synapse - 无法创建外部表错误 401 未经授权

我有一个服务主体,我正在尝试使用它为 Azure Data Lake gen1 创建一个外部表。外部表创建失败并出现错误:

我的理解是这是未经授权的错误。但我检查了此服务原则在 Azure Data Lake Gen1 存储中是否具有正确的角色分配。还有什么可能导致这里未经授权的问题?我在其中创建外部表的 SQL 突触实例是否也需要访问 ADLS Gen1?

请注意,SQL Synapse 实例和 ADLS Gen1 实例位于不同的资源组中。

0 投票
1 回答
307 浏览

azure - 来自多个租户的 Azure Log Analytics

我正在构建一个 C# MVC webapp。计划是:

  1. 首次用户创建自定义帐户
  2. 登录后,使用 Microsoft OAuth2 添加租户,同意权限
  3. Web 应用为每个用户的已注册租户聚合预配置的 Log Analytics 项目。

在一个用户提供多个租户帐户的情况下,如何处理多租户入职?

如何进行一次身份验证和授权并永久调用 Azure API?

0 投票
1 回答
467 浏览

azure - 如何找到与服务主体关联的资源组?

问题

我有一个天蓝色管道 YAML 文件。它能够通过服务连接运行,该服务连接以所有适当的权限访问服务主体等。

但我现在正在尝试清理代码;我们有多个服务主体在多个订阅和资源组上运行。他们需要创建存储帐户,这些帐户必须是唯一的。

因此,我正在尝试创建一个存储帐户,该帐户部分从创建存储帐户的服务主体的关联订阅和资源组构建。

示例解决方案

对于订阅,这相当容易。我可以在管道内调用的 PowerShell 脚本中执行类似的操作:

现在我有了变量$subscription IDAZURE_SUBSCRIPTION_ID设置,并且可以访问管道本身内的订阅信息。

问题

但是我怎样才能对资源组做类似的事情呢?

az account show在不知道资源组名称本身的情况下,没有与资源组等效。(例如,我必须输入az group show -name <RG-name>,但这正是我想要获得的名称。)

同样,需要明确的是,我特定资源组和订阅中运行,它是与服务连接相关联的那些。现在我只希望管道可以使用这些信息。

0 投票
1 回答
258 浏览

azure - 如何在 Azure Active Directory 中设置服务原则显示名称

我正在尝试创建使用 Microsoft 图形 API 的服务原则。按照我推荐的文件创建服务原则。我只是想确定通过图形 API 创建的服务原理。所以我只是在图形 API 正文中添加显示名称。下面是我的服务原理 Json 正文。

它返回一条错误消息

0 投票
1 回答
6660 浏览

azure - 登录到 azur cli 以获取服务主体

我正在尝试让我的 ansible 脚本通过 azure cli 登录到 azure。由于某些原因,我不允许使用 ansible azure 包。我必须使用 shell 并直接从那里调用命令。

总的来说,我对 azure 还很陌生,所以所有这些租户、服务主体等仍然是我没有完全掌握的概念。

我一直在检查官方文档。我已经为它创建了一个应用注册(命名为 ansible_test)。我得到了我需要的一切,包括秘密。然后我将命令称为:

在哪里:

我收到错误:

据我了解,我找错了租户。但我得到的正是我从应用程序注册中得到的那个。一段时间以来,我一直在用头撞墙。我已经尝试了很多其他的东西,但它似乎不起作用。

在这张图片中,我试图证明我确实已经创建了应用程序注册(我理解它是一个服务主体)。我只是出于无知而模糊了这些身份,无论它们是否是私人的。

我创建的名为 ansible_test 的应用注册概述

我做错了什么?我真的无法理解错误的起源......

0 投票
1 回答
680 浏览

azure - Azure Build Pipeline - 如何授予对存储帐户的访问权限?

目标:

从 Azure 管道按标记安全地获取 Azure 资源。

细节:

我有一个azure-pipelines.yaml构建静态网站并将其保存到硬编码的存储帐户。这是一个安全漏洞。

我现在需要更新文件以处理蓝绿部署,azure-pipelines.yaml需要获取标记为当前生产存储帐户的存储帐户,即类似于(只是一个 bash 脚本)

prod_storage_acct_name=$(az resource list --is_prod=true --query [0].name)

这可行,但是,它需要一个先验az login -u $un -p $pwd,我与我的用户一起测试。显然我不会把我的个人用户放在管道中,所以问题是......

问题:

  1. 让 Azure 管道访问另一个资源的最佳方式是服务主体帐户吗?
  2. 管道是否有一些内置方式来配置其访问权限而无需指定不同的服务主体,因为它们是“内置”Azure 进程?(在 Azure DevOps Powershell 管道任务中获取自己的服务主体名称似乎暗示内置了服务主体)
  3. 有没有更好的方法来做到这一点,我完全错过了?

如果我需要使用#1,这里最好的安全实践是什么?我是否只是将服务主体密码放入密钥库并在构建脚本中引用它?


也许是一种直观的提问方式:有什么方法可以基本上说“我是一个管道,我住在 Azure 上,让我使用我自己的访问权限进行此查询”?