如何更新Azure存储防火墙设置

yrdbyhpb  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(97)

我正在使用Azure存储,它允许通过从Azure门户管理“防火墙和虚拟网络”设置来控制访问。
有没有一种方法可以通过API来做同样的事情?我做了一些文档搜索,但找不到可以做到这一点的API。
任何关于这方面的指示都将是有帮助的。

cnwbcb6i

cnwbcb6i1#

如果要通过API更新Azure存储防火墙,请使用以下Rest API来实现。有关详细信息,请参阅here

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}?api-version=2019-06-01

Authorization: Bearer <access token>

{
  "properties": {
    "networkAcls": {
      "bypass": "string",
      "virtualNetworkRules": [
        {
          "id": "string",
          "action": "Allow",
          "state": "string"
        }
      ],
      "ipRules": [
        {
          "value": "string",
          "action": "Allow"
        }
      ],
      "defaultAction": "string"
     }
  }
}

字符串
例如
1.创建服务主体并将Contributor角色分配给SP

az login
# create sp and assign Contributor to the sp at the subscription level
az ad sp create-for-rbac -n "your service principal name"


1.获取令牌

POST https://login.microsoftonline.com/<tenant id>/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&scope=https://management.azure.com/.default
&client_id=<sp appId>
&client_secret=<sp password>


1.测试(我更新帐户的防火墙以允许某些IP和AzureServices访问存储)。

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{accountName}?api-version=2019-06-01

Authorization: Bearer <access token>

{
  "properties": {
        "networkAcls": {
            "bypass": "AzureServices",
            "virtualNetworkRules": [],
            "ipRules": [
                {
                    "value": "167.220.255.0/24",
                    "action": "Allow"
                }
            ],
            "defaultAction": "Deny"
        }
   }
}


的数据

frebpwbc

frebpwbc2#

我使用PowerShell脚本来完成此操作

# Set resource group & storage account
$rg='my_resource_group'
$stor_acc='my_storage_account'

# Get current IP from Public API
$ipGetCommand = 'https://api.ipify.org'
$webclient = New-Object System.Net.WebClient
$public_ip = $webclient.DownloadString($ipGetCommand)

# Add Public IP to FW rules
Add-AzStorageAccountNetworkRule -ResourceGroupName $rg -AccountName $stor_acc -IPAddressOrRange $public_ip

字符串
显然,这是一个快速而肮脏的例子。你可能想检查你得到一个IP回来,并检查API正在运行,但你得到的要点.不要忘记任何人运行这仍然需要权限来添加防火墙规则。

相关问题