我正在尝试更新 Azure 中的 TXT 记录。 我在本地VS2017调试环境中执行此操作,但MSI似乎无论如何都可以"工作",因为它知道我是谁。 但是"GetAsync"调用失败,告诉我我没有权限。
我做错了什么?
var tokenprovider = new AzureServiceTokenProvider();
var tok = await tokenprovider.GetAccessTokenAsync("https://management.azure.com/");
client = new DnsManagementClient(new TokenCredentials(tok))
{
SubscriptionId = SubscriptionId
};
var dnsRecord = await Client.RecordSets.GetAsync(ResourceGroup, zoneName, recordName, RecordType.TXT, cancellationToken);
GetAsync 调用引发:Microsoft.Rest.Azure.CloudException:"对象 ID"(我的对象 ID("的客户端'(我的电子邮件地址('无权对范围"/订阅/(我的订阅 ID(/resourceGroups/(我的资源组(/providers/Microsoft.Network/dnsZones/(my domain(/TXT/_acme-challenge"执行操作Microsoft。
知道为什么吗?
我已经为自己提供了对 TXT 记录的贡献者访问权限。 我什至作为订阅所有者做了整件事。 然而,我仍然得到例外告诉我我没有授权。
我还仔细检查了订阅/对象/域/txt 名称 - 它们是正确的。
帮助:)
编辑:经过一段时间的"等待期",呼叫突然开始成功。 所以要测试...我创建了一个新资源,尝试访问它(并失败(,授予自己访问权限,尝试再次访问它(再次失败(,然后等待一段时间,稍后尝试,它成功了。 知道为什么会这样吗?
编辑:(5个月后(。 找到正确答案,在这里:https://learn.microsoft.com/en-us/azure/role-based-access-control/troubleshooting#rbac-changes-are-not-being-detected
摆弄角色分配时,最多有 30 分钟的延迟才能生效。
好吧,对不起,但是您没有权限执行您正在做的事情:)检查你是谁的一种方法是做这样的事情:
Get-AzAdUser -ObjectId <id_from_error>
并验证您是否正在返回同一用户。 另一件值得检查的事情是权限;)也许您错误地将权利授予了另一个实体