クイックスタート: Azure PowerShell を使用してプライベート エンドポイントを作成する
[アーティクル] 2024/12/04
22 人の共同作成者
フィードバック
この記事の内容
前提条件
リソース グループを作成する
仮想ネットワークの作成
Azure Bastion をデプロイする
プライベート エンドポイントの作成
プライベート DNS ゾーンを構成する
テスト用の仮想マシンを作成する
プライベート エンドポイントへの接続のテスト
リソースをクリーンアップする
次の手順
さらに 6 個を表示
プライベート エンドポイントを作成および使用して Azure App Service Web アプリに安全に接続することにより、Azure Private Link の使用を開始します。
このクイックスタートでは、Azure App Services Web アプリのプライベート エンドポイントを作成した後、仮想マシン (VM) を作成してデブロイしプライベート接続をテストします。
Azure SQL や Azure Storage など、さまざまな Azure サービスに対してプライベート エンドポイントを作成できます。
アクティブなサブスクリプションが含まれる Azure アカウント。 Azure アカウントをまだ持っていない場合は、無料でアカウントを作成します 。
対象の Azure サブスクリプションにデプロイされている "PremiumV2 レベル" 以上のアプリ サービス プランを持つ Azure Web アプリ。
Azure Cloud Shell または Azure PowerShell。
このクイックスタートの手順では、Azure Cloud Shell で Azure PowerShell コマンドレットを対話型で実行します。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloudshell を開く] を選択します。 [コピー] を選択してコードをコピーし、続いて Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。
また、Azure PowerShell をローカルにインストール してコマンドレットを実行することもできます。 この記事の手順では、バージョン 5.4.1 以降の Azure PowerShell モジュールが必要です。 Get-Module -ListAvailable Az
を実行して、インストールされているバージョンを見つけます。 アップグレードする必要がある場合は、Azure PowerShell モジュールの更新 を参照してください。
PowerShell をローカルで実行する場合は、Connect-AzAccount
を実行して Azure に接続します。
Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。
New-AzResourceGroup を使用して、次のようにリソース グループを作成します。
$rg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rg
New-AzVirtualNetwork を使用して、eastus2 という場所の test-rg リソースグループに、vnet-1 という名前で、IP アドレス プレフィックスが 10.0.0.0/16 の仮想ネットワークを作成します。
$vnet = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Azure によって、仮想ネットワーク内のサブネットにリソースをデプロイします。 Add-AzVirtualNetworkSubnetConfig を使用して、subnet-1 という名前で、アドレス プレフィックスが 10.0.0.0/24 のサブネット構成を作成します。
$subnet = @{
Name = 'subnet-1'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
続いて、Set-AzVirtualNetwork を使用して、サブネット構成を仮想ネットワークに関連付けます。
$virtualNetwork | Set-AzVirtualNetwork
Azure Bastion では、プライベート IP アドレスを使用して Secure Shell (SSH) またはリモート デスクトップ プロトコル (RDP) を介して、仮想ネットワーク内の VM にブラウザーで接続します。 VM には、パブリック IP アドレス、クライアント ソフトウェア、または特別な構成は必要ありません。 Azure Bastion の詳細については、Azure Bastion に関するページをご覧ください。
注意
時間単位の価格は、送信データの使用状況に関係なく、Bastion がデプロイされた時点から開始します。 詳しくは、「価格 」および「SKU 」を参照してください。 チュートリアルまたはテストの一環で Bastion をデプロイする場合は、使用終了後にこのリソースを削除することをお勧めします。
仮想ネットワークの Azure Bastion サブネットを構成します。 このサブネットは、Azure Bastion リソース専用に予約されており、名前を AzureBastionSubnet にする必要があります。
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
構成を設定します。
$virtualNetwork | Set-AzVirtualNetwork
Azure Bastion のパブリック IP アドレスを作成します。 Bastion ホストは、パブリック IP を使用して、ポート 443 経由で Secure Shell (SSH) とリモート デスクトップ プロトコル (RDP) にアクセスします。
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'eastus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
New-AzBastion コマンドを使用して、AzureBastionSubnet に新しい Standard SKU Azure Bastion ホストを作成します。
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
Bastion リソースのデプロイには、数分かかります。
プライベート エンドポイントをサポートする Azure サービスは、プライベート エンドポイントと仮想ネットワークへの接続を設定するために必要です。 この記事の例では、前提条件の Azure App Service WebApp を使用しています。 プライベート エンドポイントをサポートする Azure サービスの詳細については、「Azure Private Link の可用性 」を参照してください。
プライベート エンドポイントは、静的な、または動的に割り当てられた IP アドレスを持つことができます。
重要
この記事の手順を続行するには、以前にデプロイした Azure App Services WebApp が必要です。 詳細については、「前提条件 」を参照してください。
このセクションでは、次のことを行います。
## Place the previously created webapp into a variable. ##
$webapp = Get-AzWebApp -ResourceGroupName test-rg -Name webapp-1
## Create the private endpoint connection. ##
$pec = @{
Name = 'connection-1'
PrivateLinkServiceId = $webapp.ID
GroupID = 'sites'
}
$privateEndpointConnection = New-AzPrivateLinkServiceConnection @pec
## Place the virtual network you created previously into a variable. ##
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1'
## Create the private endpoint. ##
$pe = @{
ResourceGroupName = 'test-rg'
Name = 'private-endpoint'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
PrivateLinkServiceConnection = $privateEndpointConnection
}
New-AzPrivateEndpoint @pe
## Place the previously created webapp into a variable. ##
$webapp = Get-AzWebApp -ResourceGroupName test-rg -Name webapp-1
## Create the private endpoint connection. ##
$pec = @{
Name = 'connection-1'
PrivateLinkServiceId = $webapp.ID
GroupID = 'sites'
}
$privateEndpointConnection = New-AzPrivateLinkServiceConnection @pec
## Place the virtual network you created previously into a variable. ##
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1'
## Create the static IP configuration. ##
$ip = @{
Name = 'ipconfig-1'
GroupId = 'sites'
MemberName = 'sites'
PrivateIPAddress = '10.0.0.10'
}
$ipconfig = New-AzPrivateEndpointIpConfiguration @ip
## Create the private endpoint. ##
$pe = @{
ResourceGroupName = 'test-rg'
Name = 'private-endpoint'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
PrivateLinkServiceConnection = $privateEndpointConnection
IpConfiguration = $ipconfig
}
New-AzPrivateEndpoint @pe
ストレージ用のプライベート エンドポイントを作成するとき、プライベート エンドポイント タブに表示される接続名は自動生成され、編集できません。
プライベート DNS ゾーンは、仮想ネットワーク内のプライベート エンドポイントの DNS 名を解決するために使用されます。 この例では、Azure App Services Web アプリの DNS 情報を使用しています。プライベート エンドポイントの DNS 構成の詳細については、「Azure プライベート エンドポイントの DNS 構成 」を参照してください。
このセクションでは、次のことを行います。
## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -ResourceGroupName 'test-rg' -Name 'vnet-1'
## Create the private DNS zone. ##
$zn = @{
ResourceGroupName = 'test-rg'
Name = 'privatelink.azurewebsites.net'
}
$zone = New-AzPrivateDnsZone @zn
## Create a DNS network link. ##
$lk = @{
ResourceGroupName = 'test-rg'
ZoneName = 'privatelink.azurewebsites.net'
Name = 'dns-link'
VirtualNetworkId = $vnet.Id
}
$link = New-AzPrivateDnsVirtualNetworkLink @lk
## Configure the DNS zone. ##
$cg = @{
Name = 'privatelink.azurewebsites.net'
PrivateDnsZoneId = $zone.ResourceId
}
$config = New-AzPrivateDnsZoneConfig @cg
## Create the DNS zone group. ##
$zg = @{
ResourceGroupName = 'test-rg'
PrivateEndpointName = 'private-endpoint'
Name = 'zone-group'
PrivateDnsZoneConfig = $config
}
New-AzPrivateDnsZoneGroup @zg
静的 IP アドレスとプライベート エンドポイントの機能を確認するには、テスト仮想マシンが仮想ネットワークに接続されている必要があります。
このセクションでは、次のことを行います。
## Create the credential for the virtual machine. Enter a username and password at the prompt. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -Name vnet-1 -ResourceGroupName test-rg
## Create a network interface for the virtual machine. ##
$nic = @{
Name = 'nic-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic
## Create the configuration for the virtual machine. ##
$vm1 = @{
VMName = 'vm-1'
VMSize = 'Standard_DS1_v2'
}
$vm2 = @{
ComputerName = 'vm-1'
Credential = $cred
}
$vm3 = @{
PublisherName = 'MicrosoftWindowsServer'
Offer = 'WindowsServer'
Skus = '2022-Datacenter'
Version = 'latest'
}
$vmConfig =
New-AzVMConfig @vm1 | Set-AzVMOperatingSystem -Windows @vm2 | Set-AzVMSourceImage @vm3 | Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine. ##
New-AzVM -ResourceGroupName 'test-rg' -Location 'eastus2' -VM $vmConfig
注意
Bastion ホストがある仮想ネットワーク内の仮想マシンには、パブリック IP アドレスが必要ありません。 Bastion がパブリック IP を提供し、VM はプライベート IP を使用してネットワーク内で通信します。 bastion ホストがある仮想ネットワーク内のいずれの VM からも、パブリック IP を削除できます。 詳細については、「パブリック IP アドレスの関連付けを Azure VM から解除する 」を参照してください。
注意
パブリック IP が割り当てられていない VM、または内部の Basic Azure Load Balancer のバックエンド プール内にある VM に対しては、Azure によって既定のアウトバウンド アクセス IP が提供されます。 デフォルト送信アクセス IP メカニズムは、構成できないアウトバウンド IP アドレスを提供します。
次のいずれかのイベントが発生すると、既定のアウトバウンド アクセス IP は無効になります。
パブリック IP アドレスが VM に割り当てられます。
アウトバウンド規則の有無にかかわらず、VM は標準ロード バランサーのバックエンド プール内に配置されます。
Azure NAT Gateway リソースが VM のサブネットに割り当てられている。
フレキシブル オーケストレーション モードの仮想マシン スケール セットによって作成された VM には、既定のアウトバウンド アクセスがありません。
Azure のアウトバウンド接続の詳細については、「Azure での既定の送信アクセス 」および「送信接続での送信元ネットワーク アドレス変換 (SNAT)を使用する 」を参照してください。
前に作成した仮想マシンを使用して、プライベート エンドポイント経由で Web アプリに接続します。
ポータルの上部にある検索ボックスに、「仮想マシン 」と入力します。 [仮想マシン] を選択します。
vm-1 を選択します。
vm-1 の概要ページで、[接続] を選択した後に、[Bastion] タブを選択します。
[Bastion を使用する] を選択します。
VM の作成時に使用したユーザー名とパスワードを入力します。
[接続] を選択します。
接続した後、サーバーで PowerShell を開きます。
「nslookup webapp-1.azurewebsites.net
」と入力します。 次の例のようなメッセージが表示されます。
Server: UnKnown
Address: 168.63.129.16
Non-authoritative answer:
Name: webapp-1.privatelink.azurewebsites.net
Address: 10.0.0.10
Aliases: webapp-1.azurewebsites.net
前の手順で静的 IP アドレスを選択した場合、Web アプリ名として 10.0.0.10 というプライベート IP アドレスが返されます。 このアドレスは、先ほど作成した仮想ネットワークのサブネット内に存在します。
vm-1 への bastion 接続で、Web ブラウザーを開きます。
Web アプリ https://webapp-1.azurewebsites.net
の URL を入力します。
Web アプリがデプロイされていない場合は、次の既定の Web アプリ ページが表示されます。
必要がなくなれば、Remove-AzResourceGroup コマンドを使用して、リソース グループや仮想ネットワーク、その他のリソースを削除できます。
Remove-AzResourceGroup -Name 'test-rg'
プライベート エンドポイントをサポートするサービスの詳細については、以下を参照してください。