gpt4 book ai didi

Azure 角色分配 - BadRequestFormat

转载 作者:行者123 更新时间:2023-12-03 01:16:53 27 4
gpt4 key购买 nike

我想创建一个存储帐户并向 azure devops 管道服务连接的服务主体添加角色分配 - 以便它能够读取 Blob 存储中的文件。

我的注册表中已经有一个二头肌模块,用于创建存储帐户 - 该模块使用得很好,所以这不是问题。

我的二头肌是:

var storageAccountName = 'st${baseResourceNameAlpha}'
module storageAccount 'br:urlhere.azurecr.io/bicep/modules/storageaccount:v22.10.03.02' = {
name: 'storageAccountDeployment'
params: {
name: storageAccountName
}
}

resource storageAc 'Microsoft.Storage/storageAccounts@2022-05-01' existing = {
name: storageAccountName
}
//corrected blobReaderRole thanks to comment from Thomas
// var blobReaderRole = '2a2b9908-6ea1-4ae2-8e65-a410df84e7d1'
var blobReaderRole = subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '2a2b9908-6ea1-4ae2-8e65-a410df84e7d1')
var principalId = 'principal id of my dev ops svc conn'

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
scope: storageAc
name: guid(storageAc.id, principalId, blobReaderRole)
properties: {
roleDefinitionId: blobReaderRole
principalId: principalId
principalType: 'ServicePrincipal'
}
}

这会产生以下错误:

BadRequestFormat The request was incorrectly formatted

有人看出我做错了什么吗?

此外,目前我从 Azure 门户的企业应用程序页面获取 svc 连接的主体 ID。 Get-AzADUser -UserPrincipalName 似乎不适用于服务主体。还有别的办法吗?

最佳答案

roleDefinitionId 属性需要是角色定义的 resourceId:

roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '2a2b9908-6ea1-4ae2-8e65-a410df84e7d1')

此外,principalId 属性需要是服务主体的 objectId,而不是应用程序的 objectId。你无法真正使用纯二头肌/ ARM 来获得它。关于此有一个悬而未决的问题:

在部署二头肌模板之前,您始终可以使用 Az CLI 或 Az Powershell 查找它并将其作为模板的参数传递:

$appId = (az account show | ConvertFrom-Json).user.name
$principalId = (az ad sp show --id $appId | ConvertFrom-Json).id

关于Azure 角色分配 - BadRequestFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74321138/

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