【发布时间】:2022-12-18 22:40:05
【问题描述】:
我编写了一个 powershell 脚本,允许我查询 azure 以获取我的 azure 广告政策,如下所示:
Connect-AzureAD
$currentpolicy = Get-AzureADPolicy -All $true | ?{$_.Type -eq 'B2BManagementPolicy'} | select -First 1
$currentpolicy
$newPolicyValue = @("{`"B2BManagementPolicy`":{`"InvitationsAllowedAndBlockedDomainsPolicy`":{`"AllowedDomains`": [`"a.com`",`"b.org`",`"c.org`",`"d.com`"],`"BlockedDomains`": []}}}")
} #更新现有的。这行得通。测试。 设置 AzureADPolicy -Definition $newPolicyValue -Id $currentpolicy.Id
这是有效的,因为我正在使用具有“所有者”/全局管理员权限的帐户登录。现在我们要尝试找出所需的特定权限,并将这些权限分配给新的 AD 应用程序注册。
我已经创建了一个带有证书的服务主体,并且像这样更改了我的代码:
Connect-AzureAD -TenantId $tid -ApplicationId $appid -CertificateThumbprint $thumb
$currentpolicy = Get-AzureADPolicy -All $true | ?{$_.Type -eq 'B2BManagementPolicy'} | select -First 1
$currentpolicy
我还没有添加任何特定权限,因此当我运行我的脚本时,我看到以下错误:
Get-AzureADPolicy : Error occurred while executing GetPolicies
Code: Authorization_RequestDenied
Message: Insufficient privileges to complete the operation.
InnerError:
RequestId: d88cd5d5-f8c9-4a4d-928b-986e0d5c25eb
DateTimeStamp: Thu, 16 Jun 2022 19:06:45 GMT
HttpStatusCode: Forbidden
HttpStatusDescription: Forbidden
HttpResponseStatus: Completed
At C:\Users\me\Documents\src\test\setPolicy.ps1:4 char:18
+ $currentpolicy = Get-AzureADPolicy -All $true | ?{$_.Type -eq 'B2BMan ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-AzureADPolicy], ApiException
+ FullyQualifiedErrorId : Microsoft.Open.MSGraphBeta.Client.ApiException,Microsoft.Open.MSGraphBeta.PowerShell.GetPolicy
理想情况下,我们希望使用 MS Graph 权限来执行此操作。所以我一直在 Azure 中四处寻找,在这个应用程序注册的“API 权限”下,但到目前为止我还没有弄清楚我需要添加哪个权限。
PS 我知道 AzureADPreview 和 AzureAD 即将消失。但到目前为止,这是我可以自动执行这些任务的唯一方法。我有另一个关于如何通过 Graph 使整个事情正常工作的堆栈问题
编辑 1
我已经尝试了以下权限,但到目前为止它们都不起作用......
编辑 2
我已授予 Policy.Read.All,现在我可以阅读政策。现在它无法尝试更新现有策略。
最好知道具体需要哪个读取权限,这样我就不必全部授予。
至于写权限,我已经授予了搜索“策略”时出现的所有内容,但没有一个允许我写!
编辑 3
我已经添加了 policy.readwrite.applicationconfiguration 但这不允许我写。当我尝试调用 Set-AzureADPolicy 时,我仍然收到权限不足的错误。
【问题讨论】:
标签: azure microsoft-graph-api msgraph