【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
问题描述
昨天的博文中(https://www.cnblogs.com/lulight/p/17099179.html)介绍了使用Python SDK 来获取App Service的访问限制信息,那么如何调用REST API来实现呢?
问题解答
如大家所知,Azure 不管是SDK, 门户UI,或者是PowerShell命令方式对Azure中资源进行操作,都是通过REST API方式处理请求。所以,如果不知道当前操作使用的是一个接口时,最简单的方法是:通过浏览器打开Azure门户,同时开启开发者模式(F12),在Azure门户上执行想执行的操作。然后查看Network Trace。
比如,想知道App Service的Access Restrictions操作是调用的哪一个API,找到点击保存时候,浏览器发出的请求即可找到。如下图中标记的1,2,3处。
在找到对于的API URL后,就可以知道大概的调查方向了。
- Web Apps - Get Configuration:https://learn.microsoft.com/zh-cn/rest/api/appservice/web-apps/get-configuration
- Web Apps - Update Configuration:https://learn.microsoft.com/zh-cn/rest/api/appservice/web-apps/update-configuration
PS: 因文档为Global Azure说明文档,所以中国区的 API URL为:https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/config/web?api-version=2022-03-01
操作示例步骤为:
获取Web Apps 配置信息(其中包含Access Restrictions)
仅仅更新Access Restrictions部分
{ "properties": { "ipSecurityRestrictions": [ { "ipAddress": "183.220.92.41/32", "action": "Allow", "tag": "Default", "priority": 200, "name": "111111" }, { "ipAddress": "Any", "action": "Deny", "priority": 2147483647, "name": "Deny all", "description": "Deny all access" } ] } }
特别注意:以上JSON内容为覆盖模式,如果需要在以前的数据中新添加,需要在Body中包含之前的数据。否则,PATCH操作完成后,就只会剩下Body中的信数据。
示例截图
参考资料
Web Apps - Get Configuration:https://learn.microsoft.com/zh-cn/rest/api/appservice/web-apps/get-configuration
Web Apps - Update Configuration:https://learn.microsoft.com/zh-cn/rest/api/appservice/web-apps/update-configuration
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!