チュートリアル: 仮想ネットワーク サービス エンドポイントを使用して PaaS リソースへのネットワーク アクセスを制限する
[アーティクル] 08/21/2024
8 人の共同作成者
フィードバック
この記事の内容
仮想ネットワーク サービス エンドポイントを使うと、一部の Azure サービス リソースへのネットワーク アクセスを、仮想ネットワーク サブネットに制限できます。 また、リソースに対するインターネット アクセスを排除することもできます。 サービス エンドポイントにより、使用している仮想ネットワークからサポートされている Azure サービスへの直接接続が提供されるため、ご自身の仮想ネットワークのプライベート アドレス スペースを使用して、Azure サービスにアクセスできるようになります。 サービス エンドポイントを介して Azure リソースに送信されるトラフィックは、常に Microsoft Azure のバックボーン ネットワーク上に留まります。
このチュートリアルでは、次の作業を行う方法について説明します。
1 つのサブネットを含む仮想ネットワークを作成する
サブネットを追加し、サービス エンドポイントを有効にする
Azure リソースを作成し、サブネットからのみネットワーク アクセスできるようにする
各サブネットに仮想マシン (VM) をデプロイする
サブネットからリソースへのアクセスを確認する
サブネットおよびインターネットからリソースへのアクセスが拒否されたことを確認する
前提条件
Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成 してください。
Azure Cloud Shell
Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。
Azure Cloud Shell を開始するには、以下のようにします。
オプション
例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。
Azure Cloud Shell を使用するには、以下のようにします。
Cloud Shell を開始します。
コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。
Windows と Linux では Ctrl +Shift +V キーを選択し、macOS では Cmd +Shift +V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。
Enter キーを選択して、コードまたはコマンドを実行します。
PowerShell をローカルにインストールして使用する場合、この記事では Azure PowerShell モジュール バージョン 1.0.0 以降が必要になります。 インストールされているバージョンを確認するには、Get-Module -ListAvailable Az
を実行します。 アップグレードする必要がある場合は、Azure PowerShell モジュールのインストール に関するページを参照してください。 PowerShell をローカルで実行している場合、Connect-AzAccount
を実行して Azure との接続を作成することも必要です。
Azure サブスクリプション をお持ちでない場合は、開始する前に Azure 無料アカウント を作成してください。
この記事では、Azure CLI のバージョン 2.0.28 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。
サービス エンドポイントを有効にする
仮想ネットワークと Azure Bastion ホストを作成する
次の手順では、リソース サブネット、Azure Bastion サブネット、Bastion ホストを含む仮想ネットワークを作成します。
ポータルで、[仮想ネットワーク] を検索して選択します。
[仮想ネットワーク] ページで、[+ 作成] を選択します。
[仮想ネットワークの作成] の [基本] タブで、以下の情報を入力するか選択します。
設定
値
プロジェクトの詳細
サブスクリプション
サブスクリプションを選択します。
Resource group
[新規作成] を選択します。 名前に「test-rg 」と入力します。 を選択します。
インスタンスの詳細
Name
「vnet-1 」と入力します。
リージョン
[米国東部 2] を選択します。
[次へ] を選択して、[セキュリティ] タブに進みます。
[Azure Bastion] セクションで、[Azure Bastion の有効化] を選択します。
Bastion では、ユーザーのブラウザーとプライベート IP アドレスを使って、Secure Shell (SSH) またはリモート デスクトップ プロトコル (RDP) 経由で仮想ネットワーク内の VM に接続します。 VM には、パブリック IP アドレス、クライアント ソフトウェア、または特別な構成は必要ありません。 詳細については、Azure Bastion に関するページを参照してください。
Note
時間単位の価格は、送信データの使用状況に関係なく、Bastion がデプロイされた時点から開始します。 詳しくは、「価格 」および「SKU 」を参照してください。 チュートリアルまたはテストの一環で Bastion をデプロイする場合は、使用終了後にこのリソースを削除することをお勧めします。
[Azure Bastion] で、次の情報を入力するか選びます。
設定
値
Azure Bastion ホスト名
「bastion 」と入力します。
Azure Bastion のパブリック IP アドレス
[Create a public IP address] (パブリック IP アドレスを作成する) を選びます。 [名前] に「public-ip-bastion 」と入力します。 を選択します。
[次へ] を選択して、[IP アドレス] タブに進みます。
[サブネット] のアドレス空間ボックスで、既定 のサブネットを選択します。
[サブネットの編集] で次の情報を入力または選択します。
設定
Value
サブネットの目的
既定値の [既定値] のままにします。
名前
「subnet-1 」と入力します。
IPv4
IPv4 アドレス範囲
既定値である 10.0.0.0/16 のままにします。
開始アドレス
既定値の 10.0.0.0 のままにします。
サイズ
既定値の [/24 (256 アドレス)] のままにします。
[保存] を選択します。
ウィンドウの下部にある [確認および作成] を選びます。 検証に合格した場合は、[作成] を選択します。
サービス エンドポイントはサービスごと、サブネットごとに有効にします。
ポータルの上部にある検索ボックスで、「仮想ネットワーク 」を検索します。 検索結果で、[仮想ネットワーク] を選択します。
[仮想ネットワーク] で、[vnet-1] を選択します。
[vnet-1] の [設定] セクションから、[サブネット] を選択します。
[+ サブネット] を選択します。
[サブネットの追加] ページで、次の情報を入力または選択します。
設定
値
名前
subnet-private
サブネットのアドレス範囲
既定値の 10.0.2.0/24 のままにします。
サービス エンドポイント
サービス
[Microsoft.Storage] を選択します
[保存] を選択します。
注意事項
リソースが含まれる既存のサブネットのサービス エンドポイントを有効にする前に、「サブネット設定の変更 」を参照してください。
仮想ネットワークの作成
仮想ネットワークを作成する前に、仮想ネットワークのリソース グループと、この記事で作成された他のすべてのリソースを作成する必要があります。 New-AzResourceGroup を使用して Azure リソース グループを作成します。 次の例では、test-rg という名前のリソース グループを作成します。
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
New-AzVirtualNetwork を使用して仮想ネットワークを作成します。 次の例では、アドレス プレフィックスが 10.0.0.0/16 の vnet-1 という名前の仮想ネットワークを作成します。
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
New-AzVirtualNetworkSubnetConfig を使用してサブネット構成を作成します。 次の例では、subnet-public という名前のサブネットにサブネット構成を作成します。
$subpub = @{
Name = "subnet-public"
AddressPrefix = "10.0.0.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig @subpub
Set-AzVirtualNetwork を使用してサブネット構成を仮想ネットワークに書き込むことで、仮想ネットワークにサブネットを作成します。
$virtualNetwork | Set-AzVirtualNetwork
仮想ネットワークに別のサブネットを作成します。 この例では、Microsoft.Storage のサービス エンドポイントを持つ subnet-private という名前のサブネットが作成されます。
$subpriv = @{
Name = "subnet-private"
AddressPrefix = "10.0.2.0/24"
VirtualNetwork = $virtualNetwork
ServiceEndpoint = "Microsoft.Storage"
}
$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig @subpriv
$virtualNetwork | Set-AzVirtualNetwork
Azure Bastion をデプロイする
Azure Bastion では、プライベート IP アドレスを使用することで、Secure Shell (SSH) またはリモート デスクトップ プロトコル (RDP) を介して、仮想ネットワーク内の VM にブラウザーを使用して接続します。 VM には、パブリック IP アドレス、クライアント ソフトウェア、または特別な構成は必要ありません。 Azure Bastion の詳細については、「Azure Bastion とは 」を参照してください。
時間単位の価格は、送信データの使用状況に関係なく、Bastion がデプロイされた時点から開始します。 詳しくは、「価格 」および「SKU 」を参照してください。 チュートリアルまたはテストの一環で Bastion をデプロイする場合は、使用終了後にこのリソースを削除することをお勧めします。
仮想ネットワークの Bastion サブネットを構成します。 このサブネットは、Bastion リソース専用に予約されており、名前を AzureBastionSubnet にする必要があります。
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
構成を設定します。
$virtualNetwork | Set-AzVirtualNetwork
Bastion のパブリック IP アドレスを作成します。 Bastion ホストは、パブリック IP を使用して、ポート 443 経由で SSH と RDP にアクセスします。
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'westus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
New-AzBastion コマンドを使用して、AzureBastionSubnet に新しい標準の Bastion ホストを作成します。
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion -AsJob
Bastion リソースのデプロイには、約 10 分かかります。 仮想ネットワークに Bastion がデプロイされる間、次のセクションで VM を作成できます。
仮想ネットワークの作成
仮想ネットワークを作成する前に、仮想ネットワークのリソース グループと、この記事で作成された他のすべてのリソースを作成する必要があります。 az group create を使用して、リソース グループを作成します。 次の例では、test-rg という名前のリソース グループを westus2 の場所に作成します。
az group create \
--name test-rg \
--location westus2
az network vnet create で、1 つのサブネットを含む仮想ネットワークを作成します。
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-public \
--subnet-prefix 10.0.0.0/24
サービス エンドポイントをサポートするサービスについてのみ、サービス エンドポイントを有効にできます。 az network vnet list-endpoint-services を使って、Azure の場所で使えるサービス エンドポイント対応のサービスを表示します。 次の例では、westus2 リージョンで使える、サービス エンドポイント対応サービスの一覧が返されます。 返されるサービスの一覧は、サービス エンドポイント対応の Azure サービスが増えるにつれて、時間の経過と共に大きくなります。
az network vnet list-endpoint-services \
--location westus2 \
--out table
az network vnet subnet create を使って、別のサブネットを仮想ネットワークに作成します。 この例では、Microsoft.Storage
のサービス エンドポイントをサブネット用に作成します。
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-private \
--address-prefix 10.0.1.0/24 \
--service-endpoints Microsoft.Storage
サブネットのネットワーク アクセスを制限する
既定では、サブネット内のすべての仮想マシン インスタンスが任意のリソースと通信できます。 ネットワーク セキュリティ グループを作成し、それをサブネットに関連付けることで、サブネット内のすべてのリソース間の通信を制限できます。
ポータル ページの上部にある検索ボックスで、「ネットワーク セキュリティ グループ 」を検索します。 検索結果から [ネットワーク セキュリティ グループ] を選択します。
[ネットワーク セキュリティ グループ] で、[+ 作成] を選択します。
[ネットワーク セキュリティ グループの作成] の [基本] タブで、次の情報を入力または選択します。
設定
値
プロジェクトの詳細
サブスクリプション
サブスクリプションを選択します。
Resource group
test-rg を選択します。
インスタンスの詳細
名前
「nsg-storage 」と入力します。
リージョン
[米国東部 2] を選択します。
[Review + create](確認と作成) を選択し、次に [作成] を選択します。
New-AzNetworkSecurityGroup を使用して、ネットワーク セキュリティ グループを作成します。 次の例では、nsg-private という名前のネットワーク セキュリティ グループを作成します。
$nsgpriv = @{
ResourceGroupName = 'test-rg'
Location = 'westus2'
Name = 'nsg-private'
}
$nsg = New-AzNetworkSecurityGroup @nsgpriv
az network nsg create で、ネットワーク セキュリティ グループを作成します。 次の例では、nsg-private という名前のネットワーク セキュリティ グループを作成します。
az network nsg create \
--resource-group test-rg \
--name nsg-private
ネットワーク セキュリティ グループ (NSG) のアウトバウンド規則を作成する
ポータル ページの上部にある検索ボックスで、「ネットワーク セキュリティ グループ 」を検索します。 検索結果から [ネットワーク セキュリティ グループ] を選択します。
[nsg-storage] を選択します。
[設定] で [送信セキュリティ規則] を選択します。
[+ 追加] を選択します。
Azure Storage サービスへの送信方向の通信を許可するルールを作成します。 [送信セキュリティ規則の追加] で、次の情報を入力または選択します。
設定
値
source
[Service Tag](サービス タグ) を選択します。
発信元サービス タグ
[VirtualNetwork] を選択します。
Source port ranges
既定値の * のままにします。
宛先
[Service Tag](サービス タグ) を選択します。
宛先サービス タグ
[ストレージ] を選択します。
サービス
既定値の [カスタム] のままにします。
宛先ポート範囲
「445 」と入力します
Protocol
[任意] をクリックします。
アクション
[許可] を選択します。
優先順位
既定値の [100] のままにします。
名前
「allow-storage-all 」と入力します。
[+ 追加] を選択します。
インターネットへの通信を拒否する別の送信セキュリティ ルールを作成します。 このルールは、送信方向のインターネット通信を許可する、すべてのネットワーク セキュリティ グループ内の既定のルールをオーバーライドします。 「送信セキュリティ規則の追加 」の次の値を使用して、前の手順を完了します。
設定
値
source
[Service Tag](サービス タグ) を選択します。
発信元サービス タグ
[VirtualNetwork] を選択します。
Source port ranges
既定値の * のままにします。
宛先
[Service Tag](サービス タグ) を選択します。
宛先サービス タグ
[インターネット] を選択します。
サービス
既定値の [カスタム] のままにします。
宛先ポート範囲
「* 」と入力します。
Protocol
[任意] をクリックします。
アクション
[拒否] を選択します。
優先順位
既定値の [110] のままにします。
名前
「deny-internet-all 」と入力します
[追加] を選択します。
ポータル ページの上部にある検索ボックスで、「ネットワーク セキュリティ グループ 」を検索します。 検索結果から [ネットワーク セキュリティ グループ] を選択します。
[nsg-storage] を選択します。
[設定] の [サブネット] を選択します。
[+ 関連付け] を選択します。
[サブネットの関連付け] で [仮想ネットワーク] の [vnet-1] を選択します。 [サブネット] で [subnet-private] を選択 します。
[OK] を選択します。
New-AzNetworkSecurityRuleConfig を使用して、ネットワーク セキュリティ グループのセキュリティ規則を作成します。 次の規則では、Azure Storage サービスに割り当てられたパブリック IP アドレスへの発信アクセスを許可します。
$r1 = @{
Name = "Allow-Storage-All"
Access = "Allow"
DestinationAddressPrefix = "Storage"
DestinationPortRange = "*"
Direction = "Outbound"
Priority = 100
Protocol = "*"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
}
$rule1 = New-AzNetworkSecurityRuleConfig @r1
次の規則では、すべてのパブリック IP アドレスへのアクセスを拒否します。 この規則は、優先度が高い前の規則によってオーバーライドされます。これにより、Azure Storage のパブリック IP アドレスへのアクセスが許可されます。
$r2 = @{
Name = "Deny-Internet-All"
Access = "Deny"
DestinationAddressPrefix = "Internet"
DestinationPortRange = "*"
Direction = "Outbound"
Priority = 110
Protocol = "*"
SourceAddressPrefix = "VirtualNetwork"
SourcePortRange = "*"
}
$rule2 = New-AzNetworkSecurityRuleConfig @r2
Get-AzNetworkSecurityGroup を使用して、ネットワーク セキュリティ グループ オブジェクトを変数に取得します。 Set-AzNetworkSecurityRuleConfig を使用して、ネットワーク セキュリティ グループに規則を追加します。
# Retrieve the existing network security group
$nsgpriv = @{
ResourceGroupName = 'test-rg'
Name = 'nsg-private'
}
$nsg = Get-AzNetworkSecurityGroup @nsgpriv
# Add the new rules to the security group
$nsg.SecurityRules += $rule1
$nsg.SecurityRules += $rule2
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
Set-AzVirtualNetworkSubnetConfig を使用してこのネットワーク セキュリティ グループを subnet-private サブネットに関連付けて、サブネット構成を仮想ネットワークに書き込みます。 次の例では、nsg-private ネットワーク セキュリティ グループを subnet-private サブネットに関連付けます。
$subnet = @{
VirtualNetwork = $VirtualNetwork
Name = "subnet-private"
AddressPrefix = "10.0.2.0/24"
ServiceEndpoint = "Microsoft.Storage"
NetworkSecurityGroup = $nsg
}
Set-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
az network nsg rule create でセキュリティ規則を作成します。 次の規則では、Azure Storage サービスに割り当てられたパブリック IP アドレスへの発信アクセスを許可します。
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-private \
--name Allow-Storage-All \
--access Allow \
--protocol "*" \
--direction Outbound \
--priority 100 \
--source-address-prefix "VirtualNetwork" \
--source-port-range "*" \
--destination-address-prefix "Storage" \
--destination-port-range "*"
各ネットワーク セキュリティ グループには、さまざまな既定のセキュリティ規則 が含まれています。 次の規則は、すべてのパブリック IP アドレスへの送信アクセスを許可する既定のセキュリティ規則をオーバーライドします。 destination-address-prefix "Internet"
オプションは、すべてのパブリック IP アドレスへの送信アクセスを拒否します。 この規則は、優先度が高い前の規則によってオーバーライドされます。これにより、Azure Storage のパブリック IP アドレスへのアクセスが許可されます。
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-private \
--name Deny-Internet-All \
--access Deny \
--protocol "*" \
--direction Outbound \
--priority 110 \
--source-address-prefix "VirtualNetwork" \
--source-port-range "*" \
--destination-address-prefix "Internet" \
--destination-port-range "*"
次の規則は、任意の場所からサブネットへの SSH 受信トラフィックを許可します。 この規則は、インターネットからのすべての受信トラフィックを拒否する既定のセキュリティ規則をオーバーライドします。 後のステップで接続をテストできるように、サブネットへの SSH が許可されます。
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-private \
--name Allow-SSH-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 120 \
--source-address-prefix "*" \
--source-port-range "*" \
--destination-address-prefix "VirtualNetwork" \
--destination-port-range "22"
az network vnet subnet update を使って、ネットワーク セキュリティ グループを subnet-private サブネットに関連付けます。 次の例では、nsg-private ネットワーク セキュリティ グループを subnet-private サブネットに関連付けます。
az network vnet subnet update \
--vnet-name vnet-1 \
--name subnet-private \
--resource-group test-rg \
--network-security-group nsg-private
リソースへのネットワーク アクセスを制限する
サービス エンドポイントを有効にした Azure サービスを介して作成されたリソースへのネットワーク アクセスを制限するために必要な手順は、サービスによって異なります。 各サービスの具体的な手順については、それぞれのサービスのドキュメントをご覧ください。 このチュートリアルの残りの部分では、例として Azure ストレージ アカウントのネットワーク アクセスを制限する手順を示します。
ストレージ アカウントの作成
この記事の手順に従って、Azure Storage アカウントを作成します。 ストレージ アカウントが既にある場合は、代わりに使用できます。
ポータルの上部にある検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
[+ 作成] を選択します。
[ストレージ アカウントを作成する] の [基本] タブで、次の情報を入力または選びます。
設定
値
プロジェクトの詳細
サブスクリプション
Azure サブスクリプションを選択します。
リソース グループ
test-rg を選択します。
インスタンスの詳細
ストレージ アカウント名
「storage1 」と入力します。 この名前が使用できない場合は、一意の名前を入力してください。
場所
[(米国) 米国東部 2] を選択します。
パフォーマンス
既定値 [標準] のままにします。
冗長性
[ローカル冗長ストレージ (LRS)] を選択します。
[レビュー] を選択します。
[作成] を選択します
New-AzStorageAccount を使用して Azure ストレージ アカウントを作成します。 <replace-with-your-unique-storage-account-name>
を Azure 全体における一意の名前 (3 から 24 文字で、数字と小文字のみを使用) に置き換えます。
$storageAcctName = '<replace-with-your-unique-storage-account-name>'
$storage = @{
Location = 'westus2'
Name = $storageAcctName
ResourceGroupName = 'test-rg'
SkuName = 'Standard_LRS'
Kind = 'StorageV2'
}
New-AzStorageAccount @storage
ストレージ アカウントが作成されたら、Get-AzStorageAccountKey を使用して、変数に読み込むストレージ アカウントのキーを取得します。
$storagekey = @{
ResourceGroupName = 'test-rg'
AccountName = $storageAcctName
}
$storageAcctKey = (Get-AzStorageAccountKey @storagekey).Value[0]
このチュートリアルでは、接続文字列を使用してストレージ アカウントに接続します。 Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で示される認証フローでは、アプリケーションで高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID など、より安全なフローが実行可能ではない場合にのみ使用してください。
マネージド ID を使用してストレージ アカウントに接続する方法の詳細については、「マネージド ID を使用して Azure Storage にアクセスする 」を参照してください。
キーは、後の手順でファイル共有を作成するときに使用します。 $storageAcctKey
を入力し、その値をメモします。 後の手順でファイル共有を仮想マシンのドライブにマップするときに、この値を手動で入力する必要があります。
サービス エンドポイントを有効にした Azure サービスを介して作成されたリソースへのネットワーク アクセスを制限するために必要な手順は、サービスによって異なります。 各サービスの具体的な手順については、それぞれのサービスのドキュメントをご覧ください。 この記事の残りの部分では、例として、Azure ストレージ アカウントのネットワーク アクセスを制限する手順を示します。
ストレージ アカウントの作成
az storage account create で Azure ストレージ アカウントを作成します。 <replace-with-your-unique-storage-account-name>
を Azure 全体における一意の名前 (3 から 24 文字で、数字と小文字のみを使用) に置き換えます。
storageAcctName="<replace-with-your-unique-storage-account-name>"
az storage account create \
--name $storageAcctName \
--resource-group test-rg \
--sku Standard_LRS \
--kind StorageV2
ストレージ アカウントを作成した後、az storage account show-connection-string を使って、ストレージ アカウントの接続文字列を変数に取得します。 接続文字列は、後の手順でファイル共有を作成するときに使います。
このチュートリアルでは、接続文字列を使用してストレージ アカウントに接続します。 Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で示される認証フローでは、アプリケーションで高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID など、より安全なフローが実行可能ではない場合にのみ使用してください。
マネージド ID を使用してストレージ アカウントに接続する方法の詳細については、「マネージド ID を使用して Azure Storage にアクセスする 」を参照してください。
saConnectionString=$(az storage account show-connection-string \
--name $storageAcctName \
--resource-group test-rg \
--query 'connectionString' \
--out tsv)
ストレージ アカウントにファイル共有を作成する
ポータルの上部にある検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
[ストレージ アカウント] で、前の手順で作成したストレージ アカウントを選択します。
[データ ストレージ] で [ファイル共有] を選びます。
[+ ファイル共有] を選択します。
[新しいファイル共有] で、次の情報を入力または選択します。
設定
値
名前
「file-share 」と入力します。
レベル
既定値の [トランザクション最適化] のままにします。
[次へ: バックアップ] を選択します。
[バックアップの有効化] の選択を解除します。
[Review + create](確認と作成) を選択し、次に [作成] を選択します。
New-AzStorageContext を使用して、ご自身のストレージ アカウントとキーのコンテキストを作成します。 コンテキストによってストレージ アカウント名とアカウント キーがカプセル化されます。
$storagecontext = @{
StorageAccountName = $storageAcctName
StorageAccountKey = $storageAcctKey
}
$storageContext = New-AzStorageContext @storagecontext
New-AzStorageShare を使用してファイル共有を作成します。
$fs = @{
Name = "file-share"
Context = $storageContext
}
$share = New-AzStorageShare @fs
az storage share create を使って、ストレージ アカウントにファイル共有を作成します。 後の手順では、このファイル共有をマウントして、それへのネットワーク アクセスを確認します。
az storage share create \
--name file-share \
--quota 2048 \
--connection-string $saConnectionString > /dev/null
サブネットへのネットワーク アクセスを制限する
既定では、ストレージ アカウントは、インターネットを含む任意のネットワーク上のクライアントからのネットワーク接続を受け入れます。 インターネットおよびすべての仮想ネットワーク内のその他すべてのサブネットからのネットワーク アクセスを制限できます (vnet-1 仮想ネットワーク内の subnet-private サブネットを除く)。
サブネットへのネットワーク アクセスを制限するには、次の手順に従います。
ポータルの上部にある検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
使うストレージ アカウントを選びます。
[セキュリティとネットワーク] で、[ネットワーク] を選択します。
[ファイアウォールと仮想ネットワーク] タブの [パブリック ネットワーク アクセス] で、[選択した仮想ネットワークと IP アドレスから有効] を選びます。
[仮想ネットワーク] で、[+ 既存の仮想ネットワークを追加] を選択します。
[ネットワークの追加] で、次の情報を入力または選択します。
設定
値
サブスクリプション
サブスクリプションを選択します。
仮想ネットワーク
[vnet-1] を選択します。
サブネット
[subnet-private] を選択します。
[追加] を選択します。
[保存] を選択して、仮想ネットワークの構成を保存します。
既定では、ストレージ アカウントは、任意のネットワーク上のクライアントからのネットワーク接続を受け入れます。 選択したネットワークのみにアクセスを制限するには、Update-AzStorageAccountNetworkRuleSet を使用して、既定のアクションを Deny に変更します。 ネットワーク アクセスが拒否されると、ストレージ アカウントには、どのネットワークからもアクセスできなくなります。
$storagerule = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName
DefaultAction = "Deny"
}
Update-AzStorageAccountNetworkRuleSet @storagerule
Get-AzVirtualNetwork を使用して作成済み仮想ネットワークを取得し、Get-AzVirtualNetworkSubnetConfig を使用して、変数に読み込むプライベート サブネット オブジェクトを取得します。
$subnetpriv = @{
ResourceGroupName = "test-rg"
Name = "vnet-1"
}
$privateSubnet = Get-AzVirtualNetwork @subnetpriv | Get-AzVirtualNetworkSubnetConfig -Name "subnet-private"
Add-AzStorageAccountNetworkRule を使用して、subnet-private サブネットからストレージ アカウントへのネットワーク アクセスを許可します。
$storagenetrule = @{
ResourceGroupName = "test-rg"
Name = $storageAcctName
VirtualNetworkResourceId = $privateSubnet.Id
}
Add-AzStorageAccountNetworkRule @storagenetrule
既定では、ストレージ アカウントは、任意のネットワーク上のクライアントからのネットワーク接続を受け入れます。 選んだネットワークへのアクセスを制限するには、az storage account update で既定のアクションを Deny に変更します。 ネットワーク アクセスが拒否されると、ストレージ アカウントには、どのネットワークからもアクセスできなくなります。
az storage account update \
--name $storageAcctName \
--resource-group test-rg \
--default-action Deny
az storage account network-rule add を使って、subnet-private サブネットからストレージ アカウントへのネットワーク アクセスを許可します。
az storage account network-rule add \
--resource-group test-rg \
--account-name $storageAcctName \
--vnet-name vnet-1 \
--subnet subnet-private
仮想マシンをサブネットにデプロイする
ストレージ アカウントへのネットワーク アクセスをテストするには、各サブネットに仮想マシンを展開します。
テスト用の仮想マシンを作成する
次の手順では、仮想ネットワークに vm-1 という名前のテスト仮想マシン (VM) を作成します。
ポータルで、[仮想マシン] を検索して選択します。
[仮想マシン] で [+ 作成] 、[Azure 仮想マシン] の順に選択します。
[仮想マシンの作成] の [基本] タブで、次の情報を入力または選択します。
設定
値
プロジェクトの詳細
サブスクリプション
サブスクリプションを選択します。
Resource group
test-rg を選択します。
インスタンスの詳細
仮想マシン名
「vm-1 」と入力します。
リージョン
[米国東部 2] を選択します。
可用性のオプション
[インフラストラクチャ冗長は必要ありません] を選択します。
セキュリティの種類
規定値である [標準] のままにします。
Image
[Windows Server 2022 Datacenter - x64 Gen2] を選択します。
VMアーキテクチャ
既定値の [x64] のままにします。
サイズ
サイズを選択します。
管理者アカウント
認証の種類
[パスワード] を選択します。
ユーザー名
「azureuser 」と入力します。
Password
パスワードを入力します。
パスワードの確認
パスワードを再入力します。
受信ポートの規則
パブリック受信ポート
[なし] を選択します。
ページの上部にある [ネットワーク] タブを選択します。
[ネットワーク] タブで、次の情報を入力または選択します。
設定
値
ネットワーク インターフェイス
仮想ネットワーク
[vnet-1] を選択します。
Subnet
subnet-1 (10.0.0.0/24) を選択します。
パブリック IP
[なし] を選択します。
NIC ネットワーク セキュリティ グループ
[Advanced] \(詳細設定) を選択します。
ネットワーク セキュリティ グループを構成する
[新規作成] を選択します。 名前として「nsg-1 」を入力します。 残りの部分は既定値のままにし、[OK] を選択します。
残りの設定は既定値のままにし、[確認と作成] を選択します。
設定を確認し、 [作成] を選択します。
Note
Bastion ホストがある仮想ネットワーク内の仮想マシンには、パブリック IP アドレスが必要ありません。 Bastion がパブリック IP を提供し、VM はプライベート IP を使用してネットワーク内で通信します。 bastion ホストがある仮想ネットワーク内のいずれの VM からも、パブリック IP を削除できます。 詳細については、「パブリック IP アドレスの関連付けを Azure VM から解除する 」を参照してください。
Note
パブリック IP が割り当てられていない VM、または内部の Basic Azure Load Balancer のバックエンド プール内にある VM に対しては、Azure によって既定のアウトバウンド アクセス IP が提供されます。 デフォルト送信アクセス IP メカニズムは、構成できないアウトバウンド IP アドレスを提供します。
次のいずれかのイベントが発生すると、既定のアウトバウンド アクセス IP は無効になります。
パブリック IP アドレスが VM に割り当てられます。
アウトバウンド規則の有無にかかわらず、VM は標準ロード バランサーのバックエンド プール内に配置されます。
Azure NAT Gateway リソースが VM のサブネットに割り当てられている。
フレキシブル オーケストレーション モードの仮想マシン スケール セットによって作成された VM には、既定のアウトバウンド アクセスがありません。
Azure のアウトバウンド接続の詳細については、「Azure での既定の送信アクセス 」および「送信接続での送信元ネットワーク アドレス変換 (SNAT)を使用する 」を参照してください。
2 番目の仮想マシンを作成する
前のセクションの手順を繰り返して、2 つ目の仮想マシンを作成します。 [仮想マシンの作成] で次の値を置き換えます。
設定
値
仮想マシン名
「vm-private 」と入力します。
Subnet
[subnet-private] を選択します。
パブリック IP
[なし] を選択します。
NIC ネットワーク セキュリティ グループ
[なし] を選択します。
警告
デプロイが完了するまで、次の手順に進まないでください。
最初の仮想マシンを作成する
New-AzVM を使用して、subnet-public サブネット内に仮想マシンを作成します。 次のコマンドを実行するときに、資格情報の入力を求められます。 入力した値は、VM のユーザー名とパスワードとして構成されます。
$vm1 = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-public"
Name = "vm-public"
PublicIpAddressName = $null
}
New-AzVm @vm1
2 番目の仮想マシンを作成する
subnet-private サブネットに仮想マシンを作成します。
$vm2 = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-private"
Name = "vm-private"
PublicIpAddressName = $null
}
New-AzVm @vm2
Azure では VM の作成に数分かかります。 Azure で VM の作成が完了し、出力が PowerShell に返されるまでは、次の手順に進まないでください。
ストレージ アカウントへのネットワーク アクセスをテストするには、各サブネットに VM を展開します。
最初の仮想マシンを作成する
az vm create を使用して、subnet-public サブネット内に VM を作成します。 既定のキーの場所にまだ SSH キーが存在しない場合は、コマンドを使って SSH キーを作成します。 特定のキーのセットを使用するには、--ssh-key-value
オプションを使用します。
az vm create \
--resource-group test-rg \
--name vm-public \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-public \
--admin-username azureuser \
--generate-ssh-keys
VM の作成には数分かかります。 VM が作成されると、Azure CLI によって次の例のような情報が表示されます。
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-public",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
2 番目の仮想マシンを作成する
az vm create \
--resource-group test-rg \
--name vm-private \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-private \
--admin-username azureuser \
--generate-ssh-keys
VM の作成には数分かかります。
ストレージ アカウントへのアクセスを確認する
先ほど作成し、subnet-private サブネットに割り当てられた仮想マシンを使用して、ストレージ アカウントへのアクセスを確認します。 前のセクションで作成し、subnet-1 サブネットに割り当てられた仮想マシンを使用して、ストレージ アカウントへのアクセスがブロックされていることを確認します。
ストレージ アカウント アクセス キーの取得
ポータルの上部にある検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
[ストレージ アカウント] で、使うストレージ アカウントを選びます。
[セキュリティとネットワーク] で、[アクセス キー] を選択します。
key1 の値をコピーします。 キーを表示するには、[表示] ボタンを選択する必要がある場合があります。
ポータルの上部にある検索ボックスに、「仮想マシン 」と入力します。 検索結果から [仮想マシン] を選択します。
[vm-private] を選択します。
[操作] で、[Bastion] を選択します。
仮想マシンの作成時に指定したユーザー名とパスワードを入力します。 接続 を選択します。
Windows PowerShell を開きます。 次のスクリプトを使用して、Azure ファイル共有を Z ドライブにマップします。
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
PowerShell によって、次のサンプル出力のような出力が返されます。
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
Z FileSystem \\storage8675.file.core.windows.net\f...
Azure ファイル共有は Z ドライブに正常にマップされました。
vm-private への Bastion 接続を閉じます。
先ほど作成し、subnet-private サブネットに割り当てられた仮想マシンを使用して、ストレージ アカウントへのアクセスを確認します。 前のセクションで作成し、subnet-1 サブネットに割り当てられた仮想マシンを使用して、ストレージ アカウントへのアクセスがブロックされていることを確認します。
ストレージ アカウント アクセス キーの取得
Azure portal にサインインします。
ポータルの上部にある検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
[ストレージ アカウント] で、使うストレージ アカウントを選びます。
[セキュリティとネットワーク] で、[アクセス キー] を選択します。
key1 の値をコピーします。 キーを表示するには、[表示] ボタンを選択する必要がある場合があります。
ポータルの上部にある検索ボックスに、「仮想マシン 」と入力します。 検索結果から [仮想マシン] を選択します。
[vm-private] を選択します。
[概要] で、[接続] を選択してから [Bastion 経由で接続] を選択します。
仮想マシンの作成時に指定したユーザー名とパスワードを入力します。 接続 を選択します。
Windows PowerShell を開きます。 次のスクリプトを使用して、Azure ファイル共有を Z ドライブにマップします。
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
PowerShell によって、次のサンプル出力のような出力が返されます。
Name Used (GB) Free (GB) Provider Root
---- --------- --------- -------- ----
Z FileSystem \\storage8675.file.core.windows.net\f...
Azure ファイル共有は Z ドライブに正常にマップされました。
VM から他のパブリック IP アドレスへの送信接続がないことを確認します。
ping bing.com
応答はありません。これは、Private サブネットに関連付けられているネットワーク セキュリティ グループでは、Azure Storage サービスに割り当てられているアドレス以外のパブリック IP アドレスへのアウトバウンド アクセスが許可されていないためです。
vm-private への Bastion 接続を閉じます。
vm-private VM に SSH で接続します。
次のコマンドを実行し、VM の IP アドレスを環境変数として格納します。
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-private --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
マウント ポイントのフォルダーを作成します。
sudo mkdir /mnt/file-share
作成したディレクトリに Azure のファイル共有をマウントします。 次のコマンドを実行する前に、<storage-account-name>
をアカウント名に置き換え、<storage-account-key>
を「ストレージ アカウントの作成 」で取得したキーに置き換えます。
sudo mount --types cifs //<storage-account-name>.file.core.windows.net/my-file-share /mnt/file-share --options vers=3.0,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino
user@vm-private:~$
というプロンプトが表示されます。 Azure ファイル共有は /mnt/file-share に正常にマウントされました。
VM から他のパブリック IP アドレスへの送信接続がないことを確認します。
ping bing.com -c 4
応答はありません。これは、subnet-private サブネットに関連付けられているネットワーク セキュリティ グループでは、Azure Storage サービスに割り当てられているアドレス以外のパブリック IP アドレスへの発信アクセスが許可されていないためです。
vm-private VM への SSH セッションを終了します。
ストレージ アカウントへのアクセスが拒否されたことを確認する
vm-1 から
ポータルの上部にある検索ボックスに、「仮想マシン 」と入力します。 検索結果から [仮想マシン] を選択します。
vm-1 を選択します。
[操作] で、[Bastion] を選択します。
仮想マシンの作成時に指定したユーザー名とパスワードを入力します。 接続 を選択します。
前のコマンドを繰り返して、ドライブをストレージ アカウントのファイル共有にマップします。 この手順では、ストレージ アカウント アクセス キーをもう一度コピーする必要がある場合があります。
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
次のエラー メッセージが表示されます。
New-PSDrive : Access is denied
At line:1 char:5
+ New-PSDrive @map
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Z:PSDriveInfo) [New-PSDrive], Win32Exception
+ FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
vm-1 への Bastion 接続を閉じます。
ローカル コンピューターから
ポータルの上部にある検索ボックスに、「ストレージ アカウント 」と入力します。 検索結果で [ストレージ アカウント] を選択します。
[ストレージ アカウント] で、使うストレージ アカウントを選びます。
[データ ストレージ] で [ファイル共有] を選びます。
[file-share] を選択します。
左側のメニューで [閲覧] を選択します。
次のエラー メッセージが表示されます。
Note
お使いのコンピューターは vnet-1 仮想ネットワークの subnet-private サブネットに含まれていないため、アクセスが拒否されます。
vm-1 から
ポータルの上部にある検索ボックスに、「仮想マシン 」と入力します。 検索結果から [仮想マシン] を選択します。
vm-1 を選択します。
[操作] で、[Bastion] を選択します。
仮想マシンの作成時に指定したユーザー名とパスワードを入力します。 接続 を選択します。
前のコマンドを繰り返して、ドライブをストレージ アカウントのファイル共有にマップします。 この手順では、ストレージ アカウント アクセス キーをもう一度コピーする必要がある場合があります。
$key = @{
String = "<storage-account-key>"
}
$acctKey = ConvertTo-SecureString @key -AsPlainText -Force
$cred = @{
ArgumentList = "Azure\<storage-account-name>", $acctKey
}
$credential = New-Object System.Management.Automation.PSCredential @cred
$map = @{
Name = "Z"
PSProvider = "FileSystem"
Root = "\\<storage-account-name>.file.core.windows.net\file-share"
Credential = $credential
}
New-PSDrive @map
次のエラー メッセージが表示されます。
New-PSDrive : Access is denied
At line:1 char:5
+ New-PSDrive @map
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Z:PSDriveInfo) [New-PSDrive], Win32Exception
+ FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
vm-1 への Bastion 接続を閉じます。
自分のコンピューターから、次のコマンドを使用してストレージ アカウントのファイル共有の表示を試みます。
$storage = @{
ShareName = "file-share"
Context = $storageContext
}
Get-AzStorageFile @storage
アクセスが拒否されました。 次の例のような出力が返されます。
Get-AzStorageFile : The remote server returned an error: (403) Forbidden. HTTP Status Code: 403 - HTTP Error Message: This request isn't authorized to perform this operation
お使いのコンピューターは vnet-1 仮想ネットワークの subnet-private サブネットにありません。
vm-public VM に SSH 接続します。
次のコマンドを実行し、VM の IP アドレスを環境変数として格納します。
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-public --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
マウント ポイント用のディレクトリを作成します。
sudo mkdir /mnt/file-share
作成したディレクトリに Azure ファイル共有のマウントを試みます。 この記事では、最新バージョンの Ubuntu を展開してあるものとします。 以前のバージョンの Ubuntu を使っている場合は、「Linux でのマウント 」でファイル共有のマウントに関する追加説明を参照してください。 次のコマンドを実行する前に、<storage-account-name>
をアカウント名に置き換え、<storage-account-key>
を「ストレージ アカウントの作成 」で取得したキーに置き換えます。
sudo mount --types cifs //storage-account-name>.file.core.windows.net/file-share /mnt/file-share --options vers=3.0,username=<storage-account-name>,password=<storage-account-key>,dir_mode=0777,file_mode=0777,serverino
vm-public VM が subnet-public サブネット内にデプロイされているため、アクセスは拒否されて、mount error(13): Permission denied
エラーを受け取ります。 subnet-public サブネットでは、Azure Storage に対してサービス エンドポイントが有効になっていません。ストレージ アカウントが許可しているのは subnet-public サブネットからではなく、subnet-private サブネットからのネットワーク アクセスです。
vm-public VM への SSH セッションを終了します。
お使いのコンピューターから、az storage share list を使って、ストレージ アカウントの共有の表示を試みます。 <account-name>
をストレージ アカウント名に置き換え、<account-key>
を「ストレージ アカウントの作成 」で取得したキーに置き換えます。
az storage share list \
--account-name <account-name> \
--account-key <account-key>
アクセスが拒否され、"This request isn't authorized to perform this operation (この要求には、この操作を実行する権限がありません) " というエラーが発生します。これは、使っているコンピューターが vnet-1 仮想ネットワークの subnet-private サブネットにないためです。
作成したリソースの使用が終了したら、リソース グループとそのすべてのリソースを削除して構いません。
Azure portal で、「リソース グループ 」を検索して選択します。
[リソース グループ] ページで、test-rg リソース グループを選択します。
[test-rg] ページで、[リソース グループの削除] を選択します。
[削除を確認するために、リソース グループの名前を入力してください] に「test-rg 」と入力して、[削除] を選びます。
必要なくなったら、Remove-AzResourceGroup を使用して、リソース グループとその中のすべてのリソースを削除できます。
$cleanup = @{
Name = "test-rg"
}
Remove-AzResourceGroup @cleanup -Force
リソースをクリーンアップする
不要になったら、az group delete を使用して、リソース グループとそのグループに含まれているすべてのリソースを削除します。
az group delete \
--name test-rg \
--yes \
--no-wait
次のステップ
このチュートリアルでは、次の作業を行います。
仮想ネットワーク サブネットのサービス エンドポイントを有効にしました。
複数の Azure サービスからデプロイされているリソースに対して、サービス エンドポイントを有効にできることを学習しました。
Azure ストレージ アカウントを作成し、そのストレージ アカウントへのネットワーク アクセスを、仮想ネットワーク サブネット内のリソースのみに制限しました。
サービス エンドポイントの詳細については、サービス エンドポイントの概要 とサブネットの管理 に関するページをご覧ください。
アカウントに複数の仮想ネットワークがある場合は、リソースが相互に通信できるように、それらの間の接続を確立できます。 仮想ネットワークを接続する方法を学習するには、次のチュートリアルに進んでください。