添加或删除子网委托
子网委派为服务提供了显式权限,以便能够在部署服务时使用唯一标识符在子网中创建服务专属资源。 本文介绍如何添加或删除为 Azure 服务委托的子网。
先决条件
一个 Azure 帐户和一个有效的订阅。 创建帐户。
如果没有创建要委托给 Azure 服务的子网,则需要以下权限:Microsoft.Network/virtualNetworks/subnets/write
。 内置的网络参与者角色也包含必需的权限。
在本地安装了 Azure PowerShell。
登录到 Azure PowerShell,并确保已选择要使用此功能的订阅。 有关详细信息,请参阅使用 Azure PowerShell 登录。
请确保 Az.Network
模块是 4.3.0 或更高版本。 若要验证已安装的模块,请使用命令 Get-InstalledModule -Name "Az.Network"
。 如果模块需要更新,必要时请使用命令 Update-Module -Name Az.Network
。
本文需要 Azure PowerShell 模块 5.4.1 或更高版本。 运行 Get-Module -ListAvailable Az
查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount -Environment AzureChinaCloud
以创建与 Azure 的连接。
- 本操作指南文章需要 2.31.0 版或更高版本的 Azure CLI。
创建虚拟网络
在本部分中,将创建一个虚拟网络和一个将会委托给 Azure 服务的子网。
下面的过程创建虚拟网络及资源子网。
在门户中,搜索并选择“虚拟网络”。
在“虚拟网络”页面上,选择“+ 创建”。
在创建虚拟网络的基本信息选项卡上输入或选择以下信息:
设置 |
值 |
项目详细信息 |
|
订阅 |
选择订阅。 |
资源组 |
选择“新建”。 在“名称”中输入“test-rg”。 选择“确定”。 |
实例详细信息 |
|
名称 |
输入“vnet-1”。 |
区域 |
选择“美国东部 2”。 |
选择“下一步”,转到“安全性”选项卡。
选择下一步,转到IP 地址选项卡。
在“子网”的地址空间框中,选择“默认”子网。
在编辑子网中,输入或选择以下信息:
设置 |
值 |
子网详细信息 |
|
子网模板 |
保留默认值“默认”。 |
名称 |
输入“subnet-1”。 |
开始地址 |
保留默认值“10.0.0.0”。 |
子网大小 |
保留默认值/24 (256 个地址)。 |
选择“保存”。
选择屏幕底部的“查看 + 创建”,然后在验证通过时选择“创建”。
创建资源组
使用 New-AzResourceGroup
创建资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。
以下示例将在“chinaeast2”位置创建名为“test-rg”的资源组:
$rg = @{
Name = 'test-rg'
Location = 'chinaeast2'
}
New-AzResourceGroup @rg
创建虚拟网络
使用 New-AzVirtualNetwork
创建一个名为 vnet-1 的虚拟网络,在 test-rg 中使用 New-AzVirtualNetworkSubnetConfig
创建一个名为 subnet-1 的子网。
虚拟网络的 IP 地址空间是 10.0.0.0/16。 虚拟网络中的子网是 10.0.0.0/24。
$sub = @{
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
}
$subnet = New-AzVirtualNetworkSubnetConfig @sub
$net = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
Subnet = $subnet
}
New-AzVirtualNetwork @net
创建资源组
使用 az group create
创建资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。
以下示例将在“chinaeast2”位置创建名为“test-rg”的资源组:
az group create \
--name test-rg \
--location chinaeast2
创建虚拟网络
使用 az network vnet create
在 test-rg 资源组中创建名为“vnet-1”的虚拟网络以及名为“subnet-1”的子网。
az network vnet create \
--resource-group test-rg \
--location chinaeast2 \
--name vnet-1 \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
将子网委托给 Azure 服务
在此部分,我们将上一部分创建的子网委托给 Azure 服务。
登录到 Azure 门户。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择“vnet-1”。
在“设置”中选择“子网”。
选择 subnet-1。
输入或选择以下信息:
设置 |
值 |
子网委托 |
|
将子网委托给服务 |
选择要将子网委托给的服务。 例如 Microsoft.Sql/managedInstances。 |
选择“保存”。
使用 Add-AzDelegation
对名为“subnet-1”的子网进行更新,该子网具有名为“myDelegation”的委托(委托到 Azure 服务)。 在此示例中,Microsoft.Sql/managedInstances 用于示例委托:
$net = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
}
$vnet = Get-AzVirtualNetwork @net
$sub = @{
Name = 'subnet-1'
VirtualNetwork = $vnet
}
$subnet = Get-AzVirtualNetworkSubnetConfig @sub
$del = @{
Name = 'myDelegation'
ServiceName = 'Microsoft.Sql/managedInstances'
Subnet = $subnet
}
$subnet = Add-AzDelegation @del
Set-AzVirtualNetwork -VirtualNetwork $vnet
使用 Get-AzDelegation
来验证委托:
$sub = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
}
$subnet = Get-AzVirtualNetwork @sub | Get-AzVirtualNetworkSubnetConfig -Name 'subnet-1'
$dg = @{
Name ='myDelegation'
Subnet = $subnet
}
Get-AzDelegation @dg
ProvisioningState : Succeeded
ServiceName : Microsoft.Sql/managedInstances
Actions : {Microsoft.Network/virtualNetworks/subnets/join/action}
Name : myDelegation
Etag : W/"9cba4b0e-2ceb-444b-b553-454f8da07d8a"
Id : /subscriptions/3bf09329-ca61-4fee-88cb-7e30b9ee305b/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/vnet-1/subnets/subnet-1/delegations/myDelegation
使用 az network virtual network subnet update
对名为“subnet-1”的子网进行更新,该子网具有到 Azure 服务的委托。 在此示例中,Microsoft.Sql/managedInstances 用于示例委托:
az network vnet subnet update \
--resource-group test-rg \
--name subnet-1 \
--vnet-name vnet-1 \
--delegations Microsoft.Sql/managedInstances
若要验证是否已应用该委托,请使用 az network vnet subnet show
。 在 serviceName 属性中验证是否已将服务委托给子网:
az network vnet subnet show \
--resource-group test-rg \
--name subnet-1 \
--vnet-name vnet-1 \
--query delegations
[
{
"actions": [
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action",
"Microsoft.Network/virtualNetworks/subnets/unprepareNetworkPolicies/action"
],
"etag": "W/\"30184721-8945-4e4f-9cc3-aa16b26589ac\"",
"id": "/subscriptions/23250d6d-28f0-41dd-9776-61fc80805b6e/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/vnet-1/subnets/subnet-1/delegations/0",
"name": "0",
"provisioningState": "Succeeded",
"resourceGroup": "test-rg",
"serviceName": "Microsoft.Sql/managedInstances",
"type": "Microsoft.Network/virtualNetworks/subnets/delegations"
}
]
从 Azure 服务中删除子网委托
在此部分中,你将移除针对 Azure 服务的子网委托。
登录到 Azure 门户。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择“vnet-1”。
在“设置”中选择“子网”。
选择 subnet-1。
输入或选择以下信息:
设置 |
值 |
子网委托 |
|
将子网委托给服务 |
选择“无”。 |
选择“保存”。
使用 Remove-AzDelegation
移除来自名为“subnet-1”的子网的委托:
$net = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
}
$vnet = Get-AzVirtualNetwork @net
$sub = @{
Name = 'subnet-1'
VirtualNetwork = $vnet
}
$subnet = Get-AzVirtualNetworkSubnetConfig @sub
$del = @{
Name = 'myDelegation'
Subnet = $subnet
}
$subnet = Remove-AzDelegation @del
Set-AzVirtualNetwork -VirtualNetwork $vnet
使用 Get-AzDelegation
来验证是否已移除委托:
$sub = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
}
$subnet = Get-AzVirtualNetwork @sub | Get-AzVirtualNetworkSubnetConfig -Name 'subnet-1'
$dg = @{
Name ='myDelegation'
Subnet = $subnet
}
Get-AzDelegation @dg
Get-AzDelegation: Sequence contains no matching element
使用 az network vnet subnet update
移除来自名为“subnet-1”的子网的委托:
az network vnet subnet update \
--resource-group test-rg \
--name subnet-1 \
--vnet-name vnet-1 \
--remove delegations
若要验证是否已移除该委托,请使用 az network vnet subnet show
。 在 serviceName 属性中验证是否已将服务从子网中删除:
az network vnet subnet show \
--resource-group test-rg \
--name subnet-1 \
--vnet-name vnet-1 \
--query delegations
命令输出为空括号:
[]
清理资源
使用创建的资源之后,可以删除资源组及其所有资源。
在 Azure 门户中,搜索并选择“资源组”。
在“资源组”页上,选择“test-rg”资源组。
在“test-rg”页上,选择“删除资源组”。
在“输入资源组名称以确认删除”中输入“test-rg”,然后选择“删除”。
后续步骤