You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制Azure应用仅访问指定共享邮箱的权限?

限制Azure应用仅访问指定共享邮箱的解决方案

一、替换全局权限为最小必要应用权限

先在Azure门户里删掉当前配置的Mail.*、Calendars.ReadWrite全局应用权限,换成以下两个细粒度的应用权限(注意不是委托权限):

  • Mail.ReadWrite(仅应用)
  • Calendars.ReadWrite(仅应用)
    添加权限后重新完成管理员同意流程。

二、创建应用访问策略锁定目标邮箱

通过Exchange Online PowerShell配置访问策略,从底层限制应用只能访问指定共享邮箱:

  1. 连接Exchange Online:
Connect-ExchangeOnline -Organization <你的租户ID>
  1. 创建权限限制策略:
# 替换占位符为你的应用ClientID和共享邮箱地址
New-ApplicationAccessPolicy -AppId "你的Azure应用ClientId" -PolicyScopeGroupId "sharedbox@domain.com" -AccessRight RestrictAccess -Description "限制应用仅访问指定共享邮箱"
  1. 验证策略是否生效:
Get-ApplicationAccessPolicy -AppId "你的Azure应用ClientId"

该策略会在Microsoft Graph层面拦截应用对其他邮箱的请求,就算脚本里改了$userId,也会直接返回权限不足的错误。

三、脚本层面额外防护(可选)

为避免误改$userId导致的风险,可在脚本里硬编码目标邮箱并添加校验逻辑:

# Configuration
$ClientId = "..."
$TenantId = "..."
$ClientSecret = "..."

# 硬编码允许访问的共享邮箱,禁止随意修改
$allowedUserId = "sharedbox@domain.com"
$userId = $allowedUserId

# 校验逻辑:如果userId被篡改,直接终止脚本
if ($userId -ne $allowedUserId) {
    Write-Error "仅允许访问指定共享邮箱,禁止修改目标用户ID"
    exit 1
}

# 后续原有脚本逻辑...
$ClientSecretPass = ConvertTo-SecureString -String $ClientSecret -AsPlainText -Force
$ClientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ClientId, $ClientSecretPass

Connect-MgGraph -TenantId $tenantId -ClientSecretCredential $ClientSecretCredential -NoWelcome

# 剩余脚本内容...

内容的提问来源于stack exchange,提问作者Xyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:28:20