【问题标题】:What permissions are needed to read /write external collaboration policies?读取/写入外部协作策略需要什么权限?
【发布时间】: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


    【解决方案1】:

    感谢您伸出援手,在您读取权限的帮助下,您将只能获取数据,如果您想添加或更新您应该具有写入权限,请添加权限 Policy.ReadWrite.ApplicationConfiguration 并重试。

    参考文档-https://learn.microsoft.com/en-us/graph/api/tenantappmanagementpolicy-update?view=graph-rest-beta&tabs=http

    编辑 2

    更新策略可用于 PowerShell 2.0 预览

    要更新你需要使用 设置 AzureADPolicy -ObjectId -DisplayName

    要了解有关 Set-AzureADPolicy 的更多信息,请查看 - https://learn.microsoft.com/en-us/powershell/module/azuread/set-azureadpolicy?view=azureadps-2.0-preview&viewFallbackFrom=azureadps-2.0

    谢谢

    【讨论】:

    • 谢谢,但这似乎并没有解决问题。请参阅编辑 3。我已经添加了您为我的应用程序注册建议的权限。但它仍然失败。
    • 感谢您的更新,请检查我更新的答案(编辑 2)
    • 你好呀。所以我已经知道 Set-AzureADPolicy。(我在编辑 3 中提到过)这就是我用来尝试更改策略的方法。对不起。也许我的编辑 3 不清楚。但问题不是我不知道要使用什么功能,而是权限不允许我这样做。我将更新我的帖子以向您展示 Get-AzureADPolicy 之后的代码。
    【解决方案2】:

    我不知道您是否找到了答案,但由于这是出现的首批结果之一,我将添加我的发现。

    我无法通过向服务主体授予特定权限但添加安全管理员角色该应用程序成功了。我不想给服务主体这么多的访问权限,但我尝试了很多角色和权限组合,但没有一个是足够的。

    显然,the documentation 声明能够配置 B2B 外部协作设置的最低特权角色是 Global Administrator。尽管对于这种情况,特别是通过具有服务主体的 PowerShell 更改 B2BManagementPolicy,安全管理角色在我的测试中就足够了。

    查看此角色可以执行的操作,我怀疑这是因为它可以访问 microsoft.directory/policies/basic/update,但我不能确定。

    注意:在 Azure AD 中向应用程序注册添加角色时,您需要在选择成员时搜索其名称,因为默认情况下它们不会显示。

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 2023-03-11
      • 2011-02-10
      • 2012-09-06
      相关资源
      最近更新 更多