创建了AKS集群和ACR之后,我现在try 以编程方式授予AKS集群AcrPull角色. 目前,我正在try 使用Golang SDK中的RoleAssignmentsClient.Create()函数来实现这一点.

以下是我到目前为止try 过的:

AcrPullDefinitionID := "/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d"
//         pulled that ^ off of: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#acrpull

providerNamespace := "/providers/Microsoft.ContainerService/managedClusters/"

scope := "/subscriptions/" + subscriptionID + "/resourceGroups/" + resourceGroupName + providerNamespace + resourceName
res, err := raClient.Create(ctx, scope, roleAssigmentName, armauthorization.RoleAssignmentCreateParameters{
        Properties: &armauthorization.RoleAssignmentProperties{
            PrincipalID:      to.Ptr(clientID),
            PrincipalType:    to.Ptr(armauthorization.PrincipalTypeServicePrincipal),
            RoleDefinitionID: to.Ptr("/subscriptions/" + subscriptionID + AcrPullDefinitionID),
    },
}, nil)

当我使用上面的值进行调用时,我得到以下错误:

for resource: {AKSClusterName} of type: /providers/Microsoft.ContainerService/managedClusters/
Unable to create roleAssignment: PUT https://management.azure.com/subscriptions/{subscriptionID}/resourceGroups/{resourceGroup}/providers/Microsoft.ContainerService/managedClusters/{AKSClusterName}/providers/Microsoft.Authorization/roleAssignments/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d
--------------------------------------------------------------------------------
RESPONSE 405: 405 Method Not Allowed
ERROR CODE UNAVAILABLE
--------------------------------------------------------------------------------
{
  "message": "The requested resource does not support http method 'PUT'."
}
--------------------------------------------------------------------------------

我不确定这是一个概念上的误解,还是我只是错误地使用了API.

任何帮助都将不胜感激.谢谢!

推荐答案

您所指的范围似乎是不正确的.在应用RBAC权限时,您需要将作用域设置为RBAC策略应应用到的资源.

因此,如果您要为您的AKS集群应用一个拥有AcrPull个权限的RBAC策略,那么作用域应该设置为您的Azure容器注册表的资源ID.

Go相关问答推荐

[0]Func()as";请勿比较哨兵类型

如何防止程序B存档/删除围棋中程序A当前打开的文件?

Hugo错误:没有为此项目配置现有内容目录

Go 1.20 中如何计算连接错误?

将这两个函数合二为一的惯用方法

在 Go 中解组编号的 XML 标签

命令行参数在 Golang 程序中不正确地接受为参数

对 CSV 进行单元测试失败

如何从 Asterisk Manager Interface Event 获取活动呼叫数

Golang 中的泛型类型转换

如何在 Go 中编写示例测试?

我在 go 中制作的递归函数有什么问题?

每次有人进入我的网站时如何运行特定功能?

github.com/rs/zerolog 字段的延迟判断

具有近似约束的函数值导致的实例化失败

vs 代码调试 go 测试不通过标志

在 Go 中将十六进制转换为带符号的 Int

如何从 docker-compose 命令运行 2 个不同的命令:

Go Flag 用法 描述 包含 Word 值

如何将类型转换为字节数组golang