チュートリアル: 仮想ネットワーク サービス エンドポイントを使用して PaaS リソースへのネットワーク アクセスを制限する

仮想ネットワーク サービス エンドポイントを使うと、一部の Azure サービス リソースへのネットワーク アクセスを、仮想ネットワーク サブネットに制限できます。 また、リソースに対するインターネット アクセスを排除することもできます。 サービス エンドポイントにより、使用している仮想ネットワークからサポートされている Azure サービスへの直接接続が提供されるため、ご自身の仮想ネットワークのプライベート アドレス スペースを使用して、Azure サービスにアクセスできるようになります。 サービス エンドポイントを介して Azure リソースに送信されるトラフィックは、常に Microsoft Azure のバックボーン ネットワーク上に留まります。

チュートリアルで作成される Azure リソースのダイアグラム。

このチュートリアルでは、次の作業を行う方法について説明します。

  • 1 つのサブネットを含む仮想ネットワークを作成する
  • サブネットを追加し、サービス エンドポイントを有効にする
  • Azure リソースを作成し、サブネットからのみネットワーク アクセスできるようにする
  • 各サブネットに仮想マシン (VM) をデプロイする
  • サブネットからリソースへのアクセスを確認する
  • サブネットおよびインターネットからリソースへのアクセスが拒否されたことを確認する

前提条件

サービス エンドポイントを有効にする

仮想ネットワークと Azure Bastion ホストを作成する

次の手順では、リソース サブネット、Azure Bastion サブネット、Bastion ホストを含む仮想ネットワークを作成します。

  1. ポータルで、[仮想ネットワーク] を検索して選択します。

  2. [仮想ネットワーク] ページで、[+ 作成] を選択します。

  3. [仮想ネットワークの作成][基本] タブで、以下の情報を入力するか選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    Resource group [新規作成] を選択します。
    名前に「test-rg」と入力します。

    を選択します。
    インスタンスの詳細
    Name vnet-1」と入力します。
    リージョン [米国東部 2] を選択します。

    Azure portal で仮想ネットワークを作成するための [基本] タブのスクリーンショット。

  4. [次へ] を選択して、[セキュリティ] タブに進みます。

  5. [Azure Bastion] セクションで、[Azure Bastion の有効化] を選択します。

    Bastion では、ユーザーのブラウザーとプライベート IP アドレスを使って、Secure Shell (SSH) またはリモート デスクトップ プロトコル (RDP) 経由で仮想ネットワーク内の VM に接続します。 VM には、パブリック IP アドレス、クライアント ソフトウェア、または特別な構成は必要ありません。 詳細については、Azure Bastion に関するページを参照してください。

    Note

    時間単位の価格は、送信データの使用状況に関係なく、Bastion がデプロイされた時点から開始します。 詳しくは、「価格」および「SKU」を参照してください。 チュートリアルまたはテストの一環で Bastion をデプロイする場合は、使用終了後にこのリソースを削除することをお勧めします。

  6. [Azure Bastion] で、次の情報を入力するか選びます。

    設定
    Azure Bastion ホスト名 bastion」と入力します。
    Azure Bastion のパブリック IP アドレス [Create a public IP address] (パブリック IP アドレスを作成する) を選びます。
    [名前] に「public-ip-bastion」と入力します。

    を選択します。

    Azure portal で仮想ネットワークを作成する際に Azure Bastion ホストを有効にするためのオプションのスクリーンショット。

  7. [次へ] を選択して、[IP アドレス] タブに進みます。

  8. [サブネット] のアドレス空間ボックスで、既定のサブネットを選択します。

  9. [サブネットの編集] で次の情報を入力または選択します。

    設定 Value
    サブネットの目的 既定値の [既定値] のままにします。
    名前 subnet-1」と入力します。
    IPv4
    IPv4 アドレス範囲 既定値である 10.0.0.0/16 のままにします。
    開始アドレス 既定値の 10.0.0.0 のままにします。
    サイズ 既定値の [/24 (256 アドレス)] のままにします。

    サブネットの構成の詳細のスクリーンショット。

  10. [保存] を選択します。

  11. ウィンドウの下部にある [確認および作成] を選びます。 検証に合格した場合は、[作成] を選択します。

サービス エンドポイントはサービスごと、サブネットごとに有効にします。

  1. ポータルの上部にある検索ボックスで、「仮想ネットワーク」を検索します。 検索結果で、[仮想ネットワーク] を選択します。

  2. [仮想ネットワーク] で、[vnet-1] を選択します。

  3. [vnet-1][設定] セクションから、[サブネット] を選択します。

  4. [+ サブネット] を選択します。

  5. [サブネットの追加] ページで、次の情報を入力または選択します。

    設定
    名前 subnet-private
    サブネットのアドレス範囲 既定値の 10.0.2.0/24 のままにします。
    サービス エンドポイント
    サービス [Microsoft.Storage] を選択します
  6. [保存] を選択します。

注意事項

リソースが含まれる既存のサブネットのサービス エンドポイントを有効にする前に、「サブネット設定の変更」を参照してください。

サブネットのネットワーク アクセスを制限する

既定では、サブネット内のすべての仮想マシン インスタンスが任意のリソースと通信できます。 ネットワーク セキュリティ グループを作成し、それをサブネットに関連付けることで、サブネット内のすべてのリソース間の通信を制限できます。

  1. ポータル ページの上部にある検索ボックスで、「ネットワーク セキュリティ グループ」を検索します。 検索結果から [ネットワーク セキュリティ グループ] を選択します。

  2. [ネットワーク セキュリティ グループ] で、[+ 作成] を選択します。

  3. [ネットワーク セキュリティ グループの作成][基本] タブで、次の情報を入力または選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    Resource group test-rg を選択します。
    インスタンスの詳細
    名前 nsg-storage」と入力します。
    リージョン [米国東部 2] を選択します。
  4. [Review + create](確認と作成) を選択し、次に [作成] を選択します。

ネットワーク セキュリティ グループ (NSG) のアウトバウンド規則を作成する

  1. ポータル ページの上部にある検索ボックスで、「ネットワーク セキュリティ グループ」を検索します。 検索結果から [ネットワーク セキュリティ グループ] を選択します。

  2. [nsg-storage] を選択します。

  3. [設定][送信セキュリティ規則] を選択します。

  4. [+ 追加] を選択します。

  5. Azure Storage サービスへの送信方向の通信を許可するルールを作成します。 [送信セキュリティ規則の追加] で、次の情報を入力または選択します。

    設定
    source [Service Tag](サービス タグ) を選択します。
    発信元サービス タグ [VirtualNetwork] を選択します。
    Source port ranges 既定値の * のままにします。
    宛先 [Service Tag](サービス タグ) を選択します。
    宛先サービス タグ [ストレージ] を選択します。
    サービス 既定値の [カスタム] のままにします。
    宛先ポート範囲 445」と入力します
    Protocol [任意] をクリックします。
    アクション [許可] を選択します。
    優先順位 既定値の [100] のままにします。
    名前 allow-storage-all」と入力します。

    ストレージにアクセスするための送信セキュリティを作成しているスクリーンショット。

  6. [+ 追加] を選択します。

  7. インターネットへの通信を拒否する別の送信セキュリティ ルールを作成します。 このルールは、送信方向のインターネット通信を許可する、すべてのネットワーク セキュリティ グループ内の既定のルールをオーバーライドします。 「送信セキュリティ規則の追加」の次の値を使用して、前の手順を完了します。

    設定
    source [Service Tag](サービス タグ) を選択します。
    発信元サービス タグ [VirtualNetwork] を選択します。
    Source port ranges 既定値の * のままにします。
    宛先 [Service Tag](サービス タグ) を選択します。
    宛先サービス タグ [インターネット] を選択します。
    サービス 既定値の [カスタム] のままにします。
    宛先ポート範囲 *」と入力します。
    Protocol [任意] をクリックします。
    アクション [拒否] を選択します。
    優先順位 既定値の [110] のままにします。
    名前 deny-internet-all」と入力します

    インターネット アクセスをブロックするための送信セキュリティを作成しているスクリーンショット。

  8. [追加] を選択します。

  9. ポータル ページの上部にある検索ボックスで、「ネットワーク セキュリティ グループ」を検索します。 検索結果から [ネットワーク セキュリティ グループ] を選択します。

  10. [nsg-storage] を選択します。

  11. [設定][サブネット] を選択します。

  12. [+ 関連付け] を選択します。

  13. [サブネットの関連付け][仮想ネットワーク][vnet-1] を選択します。 [サブネット][subnet-private] を選択 します。

    ネットワーク セキュリティ グループを関連付けているプライベート サブネットのスクリーンショット。

  14. [OK] を選択します。

リソースへのネットワーク アクセスを制限する

サービス エンドポイントを有効にした Azure サービスを介して作成されたリソースへのネットワーク アクセスを制限するために必要な手順は、サービスによって異なります。 各サービスの具体的な手順については、それぞれのサービスのドキュメントをご覧ください。 このチュートリアルの残りの部分では、例として Azure ストレージ アカウントのネットワーク アクセスを制限する手順を示します。

ストレージ アカウントの作成

この記事の手順に従って、Azure Storage アカウントを作成します。 ストレージ アカウントが既にある場合は、代わりに使用できます。

  1. ポータルの上部にある検索ボックスに、「ストレージ アカウント」と入力します。 検索結果で [ストレージ アカウント] を選択します。

  2. [+ 作成] を選択します。

  3. [ストレージ アカウントを作成する][基本] タブで、次の情報を入力または選びます。

    設定
    プロジェクトの詳細
    サブスクリプション Azure サブスクリプションを選択します。
    リソース グループ test-rg を選択します。
    インスタンスの詳細
    ストレージ アカウント名 storage1」と入力します。 この名前が使用できない場合は、一意の名前を入力してください。
    場所 [(米国) 米国東部 2] を選択します。
    パフォーマンス 既定値 [標準] のままにします。
    冗長性 [ローカル冗長ストレージ (LRS)] を選択します。
  4. [レビュー] を選択します。

  5. [作成] を選択します

ストレージ アカウントにファイル共有を作成する

  1. ポータルの上部にある検索ボックスに、「ストレージ アカウント」と入力します。 検索結果で [ストレージ アカウント] を選択します。

  2. [ストレージ アカウント] で、前の手順で作成したストレージ アカウントを選択します。

  3. [データ ストレージ][ファイル共有] を選びます。

  4. [+ ファイル共有] を選択します。

  5. [新しいファイル共有] で、次の情報を入力または選択します。

    設定
    名前 file-share」と入力します。
    レベル 既定値の [トランザクション最適化] のままにします。
  6. [次へ: バックアップ] を選択します。

  7. [バックアップの有効化] の選択を解除します。

  8. [Review + create](確認と作成) を選択し、次に [作成] を選択します。

サブネットへのネットワーク アクセスを制限する

既定では、ストレージ アカウントは、インターネットを含む任意のネットワーク上のクライアントからのネットワーク接続を受け入れます。 インターネットおよびすべての仮想ネットワーク内のその他すべてのサブネットからのネットワーク アクセスを制限できます (vnet-1 仮想ネットワーク内の subnet-private サブネットを除く)。

サブネットへのネットワーク アクセスを制限するには、次の手順に従います。

  1. ポータルの上部にある検索ボックスに、「ストレージ アカウント」と入力します。 検索結果で [ストレージ アカウント] を選択します。

  2. 使うストレージ アカウントを選びます。

  3. [セキュリティとネットワーク] で、[ネットワーク] を選択します。

  4. [ファイアウォールと仮想ネットワーク] タブの [パブリック ネットワーク アクセス] で、[選択した仮想ネットワークと IP アドレスから有効] を選びます。

  5. [仮想ネットワーク] で、[+ 既存の仮想ネットワークを追加] を選択します。

  6. [ネットワークの追加] で、次の情報を入力または選択します。

    設定
    サブスクリプション サブスクリプションを選択します。
    仮想ネットワーク [vnet-1] を選択します。
    サブネット [subnet-private] を選択します。

    以前作成されたサブネットと仮想ネットワークへのストレージ アカウントの制限のスクリーンショット。

  7. [追加] を選択します。

  8. [保存] を選択して、仮想ネットワークの構成を保存します。

    ストレージ アカウント画面とサブネット制限の確認のスクリーンショット。

仮想マシンをサブネットにデプロイする

ストレージ アカウントへのネットワーク アクセスをテストするには、各サブネットに仮想マシンを展開します。

テスト用の仮想マシンを作成する

次の手順では、仮想ネットワークに vm-1 という名前のテスト仮想マシン (VM) を作成します。

  1. ポータルで、[仮想マシン] を検索して選択します。

  2. [仮想マシン][+ 作成][Azure 仮想マシン] の順に選択します。

  3. [仮想マシンの作成][基本] タブで、次の情報を入力または選択します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    Resource group test-rg を選択します。
    インスタンスの詳細
    仮想マシン名 vm-1」と入力します。
    リージョン [米国東部 2] を選択します。
    可用性のオプション [インフラストラクチャ冗長は必要ありません] を選択します。
    セキュリティの種類 規定値である [標準] のままにします。
    Image [Windows Server 2022 Datacenter - x64 Gen2] を選択します。
    VMアーキテクチャ 既定値の [x64] のままにします。
    サイズ サイズを選択します。
    管理者アカウント
    認証の種類 [パスワード] を選択します。
    ユーザー名 azureuser」と入力します。
    Password パスワードを入力します。
    パスワードの確認 パスワードを再入力します。
    受信ポートの規則
    パブリック受信ポート [なし] を選択します。
  4. ページの上部にある [ネットワーク] タブを選択します。

  5. [ネットワーク] タブで、次の情報を入力または選択します。

    設定
    ネットワーク インターフェイス
    仮想ネットワーク [vnet-1] を選択します。
    Subnet subnet-1 (10.0.0.0/24) を選択します。
    パブリック IP [なし] を選択します。
    NIC ネットワーク セキュリティ グループ [Advanced] \(詳細設定) を選択します。
    ネットワーク セキュリティ グループを構成する [新規作成] を選択します。
    名前として「nsg-1」を入力します。
    残りの部分は既定値のままにし、[OK] を選択します。
  6. 残りの設定は既定値のままにし、[確認と作成] を選択します。

  7. 設定を確認し、 [作成] を選択します。

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 番目の仮想マシンを作成する

  1. 前のセクションの手順を繰り返して、2 つ目の仮想マシンを作成します。 [仮想マシンの作成] で次の値を置き換えます。

    設定
    仮想マシン名 vm-private」と入力します。
    Subnet [subnet-private] を選択します。
    パブリック IP [なし] を選択します。
    NIC ネットワーク セキュリティ グループ [なし] を選択します。

    警告

    デプロイが完了するまで、次の手順に進まないでください。

ストレージ アカウントへのアクセスを確認する

先ほど作成し、subnet-private サブネットに割り当てられた仮想マシンを使用して、ストレージ アカウントへのアクセスを確認します。 前のセクションで作成し、subnet-1 サブネットに割り当てられた仮想マシンを使用して、ストレージ アカウントへのアクセスがブロックされていることを確認します。

ストレージ アカウント アクセス キーの取得

  1. ポータルの上部にある検索ボックスに、「ストレージ アカウント」と入力します。 検索結果で [ストレージ アカウント] を選択します。

  2. [ストレージ アカウント] で、使うストレージ アカウントを選びます。

  3. [セキュリティとネットワーク] で、[アクセス キー] を選択します。

  4. key1 の値をコピーします。 キーを表示するには、[表示] ボタンを選択する必要がある場合があります。

    ストレージ アカウント アクセス キーのスクリーンショット。

  5. ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。

  6. [vm-private] を選択します。

  7. [操作] で、[Bastion] を選択します。

  8. 仮想マシンの作成時に指定したユーザー名とパスワードを入力します。 接続を選択します。

  9. Windows PowerShell を開きます。 次のスクリプトを使用して、Azure ファイル共有を Z ドライブにマップします。

    • <storage-account-key> を前のステップでコピーしたキーに置き換えます。

    • <storage-account-name> をストレージ アカウントの名前に置き換えます。 この例では、storage8675 です。

     $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 ドライブに正常にマップされました。

  10. vm-private への Bastion 接続を閉じます。

ストレージ アカウントへのアクセスが拒否されたことを確認する

vm-1 から

  1. ポータルの上部にある検索ボックスに、「仮想マシン」と入力します。 検索結果から [仮想マシン] を選択します。

  2. vm-1 を選択します。

  3. [操作] で、[Bastion] を選択します。

  4. 仮想マシンの作成時に指定したユーザー名とパスワードを入力します。 接続を選択します。

  5. 前のコマンドを繰り返して、ドライブをストレージ アカウントのファイル共有にマップします。 この手順では、ストレージ アカウント アクセス キーをもう一度コピーする必要がある場合があります。

    $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
    
  6. 次のエラー メッセージが表示されます。

    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
    
  7. vm-1 への Bastion 接続を閉じます。

ローカル コンピューターから

  1. ポータルの上部にある検索ボックスに、「ストレージ アカウント」と入力します。 検索結果で [ストレージ アカウント] を選択します。

  2. [ストレージ アカウント] で、使うストレージ アカウントを選びます。

  3. [データ ストレージ][ファイル共有] を選びます。

  4. [file-share] を選択します。

  5. 左側のメニューで [閲覧] を選択します。

  6. 次のエラー メッセージが表示されます。

    アクセス拒否エラー メッセージのスクリーンショット。

Note

お使いのコンピューターは vnet-1 仮想ネットワークの subnet-private サブネットに含まれていないため、アクセスが拒否されます。

作成したリソースの使用が終了したら、リソース グループとそのすべてのリソースを削除して構いません。

  1. Azure portal で、「リソース グループ」を検索して選択します。

  2. [リソース グループ] ページで、test-rg リソース グループを選択します。

  3. [test-rg] ページで、[リソース グループの削除] を選択します。

  4. [削除を確認するために、リソース グループの名前を入力してください] に「test-rg」と入力して、[削除] を選びます。

次のステップ

このチュートリアルでは、次の作業を行います。

  • 仮想ネットワーク サブネットのサービス エンドポイントを有効にしました。

  • 複数の Azure サービスからデプロイされているリソースに対して、サービス エンドポイントを有効にできることを学習しました。

  • Azure ストレージ アカウントを作成し、そのストレージ アカウントへのネットワーク アクセスを、仮想ネットワーク サブネット内のリソースのみに制限しました。

サービス エンドポイントの詳細については、サービス エンドポイントの概要サブネットの管理に関するページをご覧ください。

アカウントに複数の仮想ネットワークがある場合は、リソースが相互に通信できるように、それらの間の接続を確立できます。 仮想ネットワークを接続する方法を学習するには、次のチュートリアルに進んでください。