【问题标题】:How can I find resource group associated with service principal?如何找到与服务主体关联的资源组?
【发布时间】:2021-01-18 10:33:35
【问题描述】:

问题

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

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

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

示例解决方案

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

$subscriptionId = $(az account show --query 'id' -o tsv)
Write-Output "##vso[task.setvariable variable=AZURE_SUBSCRIPTION_ID;isoutput=true;issecret=true]$subscriptionId"

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

问题

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

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

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

【问题讨论】:

  • 我不确定您所说的 am running inside of a particular resource group 是什么意思 使用 SP 的服务连接仅限于订阅或管理组
  • az group list 命令是否满足您的需求?
  • 不,@WalterQian-MSFT,我正在管道内完成所有这些工作。 (1) az group list 给了我一个列表,我不确定该列表是确定性的(例如,我想要的组总是列表中的#2),并且 (2) 这似乎是一种非常脆弱的方式建立管道:列表上的数字每次都会不同。
  • @silent 很抱歉有任何混淆:服务连接 提供可以是scoped by resource group 的服务主体,我想从管道中知道该资源组的名称.
  • @MikeWilliamson 不是“范围界定”。那只是让 SP 访问一个 RG。但它总是可以访问多个 RGs

标签: azure azure-pipelines azure-service-principal


【解决方案1】:

我不确定我是否完全理解您要完成的工作。但我怀疑以下选项可能会有所帮助。

获取角色分配

如果您为每个单独的资源组创建了单独的服务连接,您只需检查 SPN 的角色分配并确定服务连接的范围。

例如,如果您使用 Azure PowerShell 任务,则您已使用服务连接对其进行了配置。因此,当任务启动时,它具有服务主体的上下文。然后您可以执行Get-AzRoleAssignment,它应该输出其授权的资源组。同样,这仅在您使用每个 RG 的服务连接时才有用,否则您将获得多个 RG 的结果。 (或者对于订阅和管理组,如果您还为这些脚本分配了角色)

使用 Azure DevOps API

您可以使用 Azure DevOps API 的 Get Service Endpoint 请求来获取服务连接。 JSON 输出将包含有关服务连接范围的信息。

如果您发现直接使用 API 有点困难,可以尝试使用PSDevOps PowerShell 模块与 Azure DevOps API 进行交互。它具有Get-ADOServiceEndpoint 命令,可让您获取可用的服务端点。

【讨论】:

  • 我会试试Get-AzRoleAssignment,看起来它正在做我正在尝试的事情。如果可行,我会接受答案。
  • 是的,我能够得到我想要的。它比我希望的要复杂,但是如果我输入 Get-AzRoleAssignment -ObjectId <my service principal's ObjectId>,然后我会收到一个 Scope,其中包含资源组及其完整的资源 ID 路径。
猜你喜欢
  • 1970-01-01
  • 2020-11-07
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
相关资源
最近更新 更多