gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:24:38 25 4
gpt4 key购买 nike

问题

我有一个 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> ,但这正是我想要获取的名称。)

再次强调,我在特定的资源组和订阅内运行,它是与服务连接关联的资源组和订阅。现在我只是希望该信息可供管道使用。

最佳答案

我不确定我是否完全理解您想要实现的目标。但我怀疑下面的选项可能会有所帮助。

获取角色分配

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

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

使用 Azure DevOps API

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

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

关于azure - 如何找到与服务主体关联的资源组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65772820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com