我正在尝试使用脚本将IP地址自动添加到Azure认知搜索IP防火墙。
这样做的原因是,在设置防火墙后,该服务不允许管理某些功能(索引,数据源配置等),因此我发现自己删除了所有当前IP地址,从而对防火墙进行了所需的更新。搜索服务,然后手动重新添加IP地址(按照此Microsoft文档:Configure IP firewall for Azure Cognitive Search)。在项目的所有开发人员与App Service的IP地址之间,这是一个非常繁琐的过程,需要重复执行。
即使我自己的IP地址包含在防火墙中,我也无法管理某些组件。
通过PowerShell命令查看,我还没有找到自动添加IP地址甚至查看现有IP地址列表的任何方法
那么如何在PowerShell中做到这一点?
答案 0 :(得分:0)
可以使用Azure门户或Management REST API版本2020-03-13 配置Azure认知搜索服务上的IP规则。
现在,它。因此,它不支持使用PowerShell为Azure认知搜索配置IP防火墙。
您可以将only support to configure with azure portal and management rest api给予天蓝色搜索反馈,以促进此功能的实现。
答案 1 :(得分:0)
可以通过Powershell Azure Search CLI命令az search service update
但是,az search service update
目前仅支持以下属性的更新:
就像Joey Cai提到的那样,您可以使用REST API来管理IP防火墙规则。
您可以从Powershell执行其余查询。下面的脚本将IP添加到搜索服务中。
$searchservicename = "<SEARCH SERVICE NAME>"
$resourcegroup = "<RESOURCE GROUP>"
$subscription = "<YOUR SUBSCRIBRION>"
$access= $token.accessToken
$url = "https://management.azure.com/subscriptions/$subscription/resourceGroups/$resourcegroup/providers/Microsoft.Search/searchServices/$searchservicename" + "?api-version=2020-08-01"
$body = '{
"location": "<YOUR REGION>",
"tags": {
"app-name": "<YOUR TAG>"
},
"sku": {
"name": "standard"
},
"properties": {
"replicaCount": 1,
"partitionCount": 1,
"networkRuleSet": {
"ipRules": [
{
"value": "<CIDR IP>"
},
{
"value": "<CIDR IP>"
}
]
},
"hostingMode": "default"
}
}'
$headers = @{'x-ms-client-request-id'=(New-Guid); 'Authorization' ="Bearer $access_t ";'Content-Type' ="application/json"}
Invoke-WebRequest -Uri $url -Body $body -Headers $headers -Method Put
要删除IPRules,请将正文更新为:
"networkRuleSet": {
"ipRules": []
}
查看IP列表。您可以使用GET方法而不是PUT来忽略主体。
使用上述任何一种之前,您都必须获取访问令牌($ access_t)。您可以采用多种方法来获取令牌。在Powershell中,我最简单的方法如下
az login
$token = az account get-access-token --subscription "<Your Subscription>"
$token = $token | ConvertFrom-Json
$access_t= $token.accessToken
在执行上述任何步骤之前,您的计算机中将需要Az Cli。
要安装和使用AZ Cli,您可以参考此article
这是为了在您通过上述方法获取令牌的情况下获取令牌