AZ-900

【AZ-900】パブリックエンドポイントとプライベートエンドポイントの違いとは?PaaSに接続するためのエンドポイントを理解しよう!

【AZ-900】パブリックエンドポイントとプライベートエンドポイントの違いとは?PaaSに接続するためのエンドポイントを理解しよう!

どうも、フリーランスエンジニアのMakotoです。

今回は、AzureのPaaSサービスに接続するためのエンドポイントについて解説します。サービスエンドポイントは試験範囲ではないかもしれませんが便宜上あわせて解説します。

  • パブリックエンドポイント
  • サービスエンドポイント
  • プライベートエンドポイント
似たような名前で違いがわかりにくい・・・

それぞれのエンドポイントの概要だけでなく、内部的な仕組みや設定手順もあわせて解説します。ぜひ、最後までお読みください。

それではいってみましょう!

エンドポイントの比較サマリ

今回は先に結論です。3つのエンドポイントを簡単にまとめると次の通りです。

エンドポイント経路
パブリックエンドポイントインターネットを経由してパブリックIPアドレスで接続
サービスエンドポイントAzureバックボーンを経由してパブリックIPアドレスで接続
プライベートエンドポイントAzureバックボーンを経由してプライベートIPアドレスで接続

 

サービスエンドポイント、プライベートエンドポイントともインターネットに出ることなく安全に接続するための手段で、パブリックIPアドレスかプライベートIPアドレスかの違いがあります。

詳細は後述しますが、AZ-900試験の対策としてはまず、パブリックエンドポイントとプライベートエンドポイントの違いを理解しておきましょう。

パブリックエンドポイントとは?

まず、エンドポイントという言葉の意味をおさえておきましょう。

エンドポイントとは、「終端」や「末端」という意味を指す用語ですが、クラウドの文脈ではサービスの接続先となる「URL」のことだと理解して問題ないでしょう。

Azureの主要なPaaSサービスはインターネット経由で接続する前提で設計されており、例えば*.windows.netなどのURLで接続するとパブリックなIPアドレスに名前解決されて接続されます。

サービス接続先URLの例
Blobストレージaaa.blob.core.windows.net
App Servicebbb.azurewebsites.net
SQL Databaseccc.database.windows.net

Azure Storageのうち、仮想マシンのDiskストレージはIaaSに分類されますが、BLOBストレージなどその他のデータサービスは主にPaaSに該当します。

パブリックエンドポイントとは、各サービスごとに割り当てられたURLのことを指しており、それはつまり、接続先となるパブリックIPアドレスであるとも言い換えることができます。図中の青丸がパブリックエンドポイントのイメージ。

パブリックエンドポイントとは

インターネットを経由してパブリックIPアドレスで接続するということは、セキュリティ設定が甘ければ誰でも接続できるリスクがあるということです。

一般的にシステムのセキュリティレベルを上げるために、インターネットを経由せずに「閉域で接続できること」が要件になることはよくあります。

こういった背景をもとに登場したエンドポイントが「プライベートエンドポイント」です。

サービスエンドポイントとは?

プライベートエンドポイントを解説する前に「サービスエンドポイント」について触れておきます。AWSでいうところのVPCエンドポイント(GW型)です。

AZ-900の試験範囲としては明示されていませんが、プライベートエンドポイントと比較されることが多く、将来のためにセットで理解しておくことをオススメします。

サービスエンドポイントを使うと、インターネットを経由せずにPaaSのリソースに接続できるようになります。無料で使えるのも特徴です。

サービスエンドポイントの説明を公式ドキュメントから抜粋します。

仮想ネットワーク (VNet) サービス エンドポイントでは、Azure のバックボーン ネットワーク上で最適化されたルートを介して、Azure サービスに安全に直接接続できます。 エンドポイントを使用することで、重要な Azure サービス リソースへのアクセスを仮想ネットワークのみに限定することができます。

出典:仮想ネットワーク サービス エンドポイント

要するに2つのことができるようになると書いています。

  • Azureのバックボーンネットワークを経由するようになる
  • アクセス元を仮想ネットワークに限定することができる

図解するとこんな感じ。

サービスエンドポイントとは

Azureバックボーン経由となるのは仮想ネットワークからの接続の場合です。図の例だと仮想マシンからリソースに接続しようとするとインターネットに迂回することなく直接接続できます。

デフォルトでは仮想ネットワークのサブネット単位で「システムルート」というルートテーブルが設定されており、0.0.0.0/0 つまり、パブリックIPアドレス宛ての場合のネクストホップは「インターネット」になっています。(図中の白丸

システムルート出典:仮想ネットワーク トラフィックのルーティング

 

ところが、サービスエンドポイントを設定するとAzureバックボーン経由の接続点が作成され(図中の赤丸)、指定したサービスの持つパブリックIPアドレスへ接続する場合のネクストホップが「サービスエンドポイント」になるようルートが追加されます。

仮想ネットワークのメニューにあるサービスエンドポイントの追加画面。以下の例ではAzure Storage(Microsoft.Storage)を追加しています。

サービスエンドポイントの追加仮想マシンのネットワークインターフェイスのメニューにある有効なルートの画面。Azure Storageへ接続する場合のルートが追加されています。

NICの有効なルート

インターネットに出ていく場合、接続元IPはパブリックIPアドレスに変換(SNAT)されますが、サービスエンドポイント経由の場合はプライベートIPアドレスで接続できるためパブリックIPアドレスは不要になります。

そして、サービスエンドポイントはファイアウォールによるアクセス制御にも利用できます。

パブリックネットワークアクセスの設定を「選択した仮想ネットワークとIPアドレスから有効」に変更した場合に、アクセス元をサービスエンドポイントを持つ仮想ネットワーク(サブネット)に限定することができます。

次の画面はストレージアカウントのネットワークメニューから仮想ネットワークを追加しているところです。

ストレージのファイアウォールと仮想ネットワーク

なお、下段の「ファイアウォール」の箇所にアドレス範囲を指定して自分のPCなどのIPアドレスを許可することもできます。

整理すると、サービスエンドポイントはPaaSのリソースが持つパブリックIPアドレス宛ての経由点で、仮想ネットワークの出口にあるゲートウェイのようなものです。

仮想ネットワーク内部からPaaSに接続する時のルートをサービスエンドポイントに振ることで、Azureバックボーンを経由して安全に直接接続できるようになります。

そして、ファイアウォール規則に仮想ネットワークを指定することで、アクセス元を特定の仮想ネットワークに限定することができます。

サービスエンドポイントを使うとAzureバックボーン経由でPaaSのリソースに直接接続でき、アクセス元を特定の仮想ネットワークに限定できる

こういった機能が無料で利用できるのでメリットが大きいと思われるかもしれませんが、Microsoftとしては次に説明する「プライベートエンドポイント」を推奨しています。

サービスエンドポイントでは接続元は限定できても、接続先として「特定のリソースにしかアクセスさせない」といったことが実現できなかったり、接続先にパブリックIPアドレスを利用する点が管理上、面倒だったりするためです。

プライベートエンドポイントとは?

プライベートエンドポイントを使うと、接続先もプライベートIPアドレスでPaaSのリソースに接続できるようになります。AWSでいうところのVPCエンドポイント(IF型)です。

つまり、PaaSのリソースがあたかも仮想ネットワークの中に存在しているかのように扱うことができるということです。

こちらは有料で、稼働時間とデータ転送量に応じて課金されます。

サービスエンドポイントより後に登場したサービスで、対応するPaaSもどんどん拡大されています。

プライベートエンドポイントを利用する場合は次の3つのリソースが登場します。

Azureリソース説明
プライベートエンドポイント実態はネットワークインターフェイス(NIC)
プライベートDNSゾーンPaaSのURLをNICのプライベートIPアドレスに名前解決
プライベートリンクプライベートエンドポイントとPaaSサービスを1対1で関連付け

図解するとこんな感じ。

プライベートエンドポイントとは

前述のサービスエンドポイントでは、PaaSの接続先URLはパブリックIPアドレスに名前解決されます。ルートがインターネット経由ではなくなりますが、パブリックIPアドレスで接続します。

プライベートエンドポイントでは、PaaSの接続先URLはプライベートIPアドレスに名前解決されます。

次の画面は、Linuxの仮想マシンからdigコマンドで名前解決の結果を確認した場合の例です。

BlobストレージのURLが設定前(上)はパブリックIPアドレスに名前解決されていますが、設定後(下)はプライベートIPアドレスになっていることがわかります。

プライベートエンドポイント設定後の名前解決

つまり、仮想ネットワーク内部からPaaSに接続する場合、プライベートDNSゾーンのエントリによってプライベートIPアドレスに接続するように変更され、プライベートリンクで定義された関連付け(リンク設定)により、よしなに中継してくれているというわけです。

プライベートリンクでの関連付けが1対1で設定できる点も見逃せません。接続元、宛先リソースとも指定できるので、サービスエンドポイントの課題をクリアしています。

実際に利用する際の注意点として、パブリックエンドポイントが勝手に無効になるわけではないので、外部からのアクセスを遮断したい場合はパブリックアクセスを無効にする必要がある点は覚えておきましょう。

プライベートエンドポイントプライベートリンクは違いがわかりにくいですが、前者がNICを指し、後者が関連付け設定や経路を指す言葉です。最初のうちは同じものと捉えても問題ないと思います。

ロードバランサ配下の独自サービスにプライベート接続するための「Azure Private Link サービス」という機能もありますが本記事では省略しています。

プライベートエンドポイントは「Private Linkセンター」のメニューから作成します。

プライベートエンドポイントの作成 基本タブでは名前やリージョンを指定します。

プライベートエンドポイントの作成(基本)

 

リソースタブでは接続先のリソースを選択します。ここではストレージアカウントのBLOBを選択しています。

プライベートエンドポイントの作成(リソース)

仮想ネットワークタブでは接続元の仮想ネットワークとサブネットを指定します。ここで指定したサブネットにNICが作成されます。

プライベートエンドポイントの作成(仮想ネットワーク)

DNSタブではDNSレコードの管理方法を指定します。Azureで管理する場合は「プライベートDNSゾーンと統合する」としておけばいっしょにプライベートDNSゾーンが作成されます。

プライベートエンドポイントの作成(DNS)

 

プライベートエンドポイントを作成したらパブリックアクセスは無効にしておきましょう。ただ、AzureポータルからBLOBなど中身が見れなくなるので、指定のIPだけ許可しておくのが良いかもしれません(セキュリティ要件次第)

ちなみに、リソース側のネットワークメニューからもプライベートエンドポイントを作成できます。

パブリックネットワークアクセスを無効にする

 

最後に仮想マシンから接続確認をします。ファイアウォールで許可されていない場合は「The request may be blocked」とエラーになっていましたが、プライベートエンドポイントを作成するとBLOBのリストを取得できるようになりました。

$ az storage blob list --auth-mode login --account-name azstartstorage --container-name image --output table

The request may be blocked by network rules of storage account. Please check network rule set using 'az storage account show -n accountname --query networkRuleSet'.
If you want to change the default action to apply when no rule matches, please use 'az storage account update'.

$ az storage blob list --auth-mode login --account-name azstartstorage --container-name image --output table

Name                       Blob Type    Blob Tier    Length    Content Type    Last Modified              Snapshot
-------------------------  -----------  -----------  --------  --------------  -------------------------  ----------
コース画像_Azure_IaaS.JPG  BlockBlob    Hot          60785     image/jpeg      2022-06-18T03:47:36+00:00

 

まとめ

今回はAzureのPaaSサービスに接続するためのエンドポイントについて解説しました。

デフォルトでは「パブリックエンドポイント」を使ってインターネット経由でアクセスしますが、インターネットに出ることなく閉域で安全に接続するための手段として「プライベートエンドポイント」がある点をおさえておきましょう。

また、「プライベートエンドポイント」は「サービスエンドポイント」とよく比較されます。サービスエンドポイントは無料で利用できますので「こういった方法もあるんだな」と頭の片隅に入れておきましょう。

それでは、また。

 

Azure入門コースを見る