Azure自动化账户禁用公网访问后公网API仍可访问的问题咨询
解决Azure自动化账户禁用公网访问后ARM作业API仍可公网访问的问题
核心原因
你遇到的问题是因为Azure自动化账户的公网访问设置仅管控其数据平面端点(比如Runbook执行、资产访问等),而你提到的PUT /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Automation/automationAccounts/{automationAccountName}/jobs/{jobName}?api-version=2019-06-01 API属于Azure Resource Manager(ARM)控制平面,这个平面的访问不受自动化账户自身的公网禁用设置约束。
1. 如何避免这种公网访问?
- Azure Policy限制:创建自定义Policy规则,拒绝所有来自公网IP范围的
Microsoft.Automation/automationAccounts/jobs/write操作,仅允许来自你的私有网络IP范围或指定信任IP的请求。 - Azure AD条件访问:针对调用ARM API的用户或服务主体配置条件访问策略,要求请求必须来自信任的网络位置(比如你的企业内网、Azure虚拟网络),否则拒绝访问。
- ARM私有链路(可选):如果需要完全隔离ARM API的公网访问,可配置Azure Private Link for ARM,让所有ARM请求仅通过私有网络传输,但这个配置复杂度较高,适合严格隔离的场景。
2. 你遗漏的关键配置
- 混淆了**控制平面(ARM)和数据平面(自动化账户自身)**的网络隔离边界:自动化账户的"公网访问禁用"只作用于其专属的数据平面端点,不影响ARM控制平面的API访问。
- 未针对ARM控制平面的特定操作(作业创建)添加访问限制,默认情况下ARM API允许所有通过身份验证的公网请求。
3. 正确的端到端配置流程
- 完成自动化账户的基础隔离:
- 为自动化账户配置私有端点,关联到你的虚拟网络
- 在自动化账户的"网络"设置中禁用公网访问
- 添加ARM控制平面的访问限制:
- 方案一(推荐):Azure Policy
- 创建Policy定义,目标操作设为
Microsoft.Automation/automationAccounts/jobs/write - 设置规则为:当请求的源IP不在你的私有网络IP范围/信任IP列表时,拒绝操作
- 将Policy分配到包含目标自动化账户的订阅或资源组
- 创建Policy定义,目标操作设为
- 方案二:Azure AD条件访问
- 创建条件访问策略,目标应用选择"Microsoft Azure管理"
- 添加"位置"条件,仅允许来自信任网络的访问
- 为需要调用该API的用户/服务主体分配此策略
- 方案一(推荐):Azure Policy
- 验证配置:
- 用公网环境的客户端尝试调用该作业创建API,应该收到拒绝响应
- 用私有网络内的客户端(通过私有端点连接)执行作业创建操作,确认可以正常运行
内容的提问来源于stack exchange,提问作者Rob
相关产品推荐
相关产品推荐

