我需要通过无人值守连接使用 ExchangeOnline Powershell 模块中的以下 cmdlet。
- 获取隔离消息
- 预览隔离消息
- 释放隔离消息
- 出口检疫信息
继此第一份文档之后https://learn.microsoft.com/en-us/powershell/exchange/app-only-auth-powershell-v2?view=exchange-ps,我使用自签名证书创建了一个 Azure App 注册,分配了“Exchange.ManageAsApp”API 权限,然后授予同意。
然后我创建了一个 Azure 安全组并将我的应用程序添加为该组的成员。
然后,我按照以下文档在 Microsoft 365 Defender 门户中创建了一个自定义角色: https://learn.microsoft.com/en-us/defender-for-identity/role-groups
在这个角色中我添加了以下自定义权限:
- 电子邮件隔离(管理)
- 电子邮件高级操作(管理)和只读原始数据(电子邮件和协作)
- 当然,我将在步骤 2 中创建的组分配给了这个新角色
所有这些都允许我使用前 2 个 cmdlet 而不会出现任何问题,但我无法访问出口检疫信息和释放隔离消息。
我们可以通过这些命令列出此 cmdlet 所需的权限(从那里:https://learn.microsoft.com/en-us/powershell/exchange/find-exchange-cmdlet-permissions?view=exchange-ps)
PS > $Perms = Get-ManagementRole -Cmdlet Export-QuarantineMessage
PS > $Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-Table -Auto Role,RoleAssigneeType,RoleAssigneeName}
Role RoleAssigneeType RoleAssigneeName
---- ---------------- ----------------
Security Admin RoleGroup Organization Management
Security Admin RoleGroup SecurityAdmins_782500194
Role RoleAssigneeType RoleAssigneeName
---- ---------------- ----------------
Transport Hygiene RoleGroup Hygiene Management
Transport Hygiene RoleGroup Organization Management
我尝试了最后这个命令:
PS > Add-RoleGroupMember "Hygiene Management" -Member <name of the application created at step 1>
如果我运行,我可以看到我的应用程序成员:
PS > Get-RoleGroupMember "Hygiene Management"
但我仍然无法访问出口检疫信息和释放隔离消息命令。
更新
使用“传输卫生”+“安全管理员”创建自定义 Exchange 角色
PS> $ AadApp = Get-AzureADServicePrincipal -SearchString“”
PS> New-ServicePrincipal -AppId $AadApp.AppId -ServiceId $AadApp.ObjectId -DisplayName“我的应用程序的ServicePrincipal”
PS > $SP = Get-ServicePrincipal -Identity “我的应用程序的 ServicePrincipal”
PS > Add-RoleGroupMember -Identity "<角色创建步骤 1>" -Member $SP.Identity
没有任何运气。
更新 仅使用以下方式更改我的自定义 Exchange 角色:-邮箱导入导出 -邮箱搜索 -邮箱搜索应用程序 -消息跟踪 -传输卫生 -仅查看配置 -仅查看收件人似乎有效。我会在周末看看这是否是另一个需要时间在微软端复制的更改