Azure の PaaS をセキュアでプライベートに利用できる! Azure Private Link 登場!

Azure の PaaS をセキュアでプライベートに利用できる! Azure Private Link 登場!

PaaS へのプライベートなアクセスを容易にする Azure Private Link

Azure のサービスをより簡単にセキュアに利用するためのサービスとして、Azure Private Link が登場しました。 Azure Private Link は Azure Storage や Azure SQL Servers といった Azure の PaaS へ仮想ネットワーク内からアクセスできるようにするサービスです。

What is Azure Private Link? (Preview)

これまでも Azure Web Apps などの一部 PaaS は仮想ネットワーク内にデプロイすることでプライベートIPでアクセスできたり、サービスエンドポイント設定によりトラフィックを Azure データセンター内で完結する接続構成は可能でした。前者の場合はデプロイ可能なサービスが限られており、後者の場合は接続先の Azure PaaS はパブリックIPであるため、厳密な接続情報が絞れず L3 セキュリティの観点で苦労することがありました。

Azure Private Link では Azure PaaS へのプライベートなアクセスを実現するため、Azure Private Endpoint と Azure Private Link service が提供されています。

Private Endpoint は 仮想ネットワーク内に配置して、VM から PaaS へアクセスできるようにするサービスです。Private Endpoint は自身がプライベートIPを持ち、配置した仮想ネットワーク内、もしくはピアリングした仮想ネットワークから Private Endpoint を経由して他のサービスへアクセスできるようにします。

対して Private Link Service は、Private Endpoint 経由でアクセスできるサービスを自身や他のユーザーの仮想ネットワークに提供するためのサービスです。これにより、自テナント内に限らず、他のテナントの仮想ネットワークに対しても保有しているサービスを提供できるようになります。

Private Endpoint をデプロイ

クイックスタートを参考にして Private Endpoint をデプロイしてみます。最終的な構成はこのようなイメージです。

仮想ネットワークの作成(接続確認用のVM)

まずは仮想ネットワークを作成します。接続確認用の VM を作成するサブネットと Private Endpoint を配置するためのサブネットを作成します。サブネットは適当に。

接続先 Azure サービス作成

Private Endpoint を経由して接続する先の Azure PaaS を作成しておきます。今のところ Private Endpoint から接続可能なサービスタイプは次の通りです。

  • Microsoft.Network/privateLinkServices
  • Microsoft.Sql/servers
  • Microsoft.Storage/storageAccounts

この中から Storage Account と Azure SQL を作成して接続先のリソースを準備します。例として Storage Account の作成時の注意点を画像で示します。作成のパラメーターはほとんど通常の作成通りですが、ネットワーク接続の設定項目で一つやっておくことがあります。

ネットワーク接続の項目に[プライベートエンドポイント]という項目が追加されているので、こちらを選択します。これで、プライベートエンドポイント経由でアクセス可能な Storage Account が作成されます。

サービスエンドポイント

[すべてのサービス]から「プライベート」と検索すると[プライベート リンク センター]が表示されるので選択します。左メニューから[プライベート リンク]を選択し、[追加]をクリックしていきます。リソースの名前などの基本情報を入力していきます。

プライベートエンドポイントの接続先にするリソースを指定します。リソースの種類と作成済みのリソースを選択していきます。

Private Endpoint を作成する仮想ネットワークを選択します。また、接続先の Azure PaaS の名前を解決するためのプライベート DNS ゾーンも作成します。

Private Endpoint の動き

まず、Private Endpoint の項目を確認します。[プライベート リンク センター]>[プライベート リンク]を選択すると、作成済みの Private Endpoint と接続先の Azure サービスが表示されます。

次に、Azure プライベート DNS ゾーンの内容を確認します。Storage Account への Private Endpoint を作成した時のプライベート DNS ゾーンには次のようにレコードが追加されています。Storage Account の FQDN を解決する情報と、作成とリンク先の仮想ネットワークアドレス内のプライベートIPが割り当てられています。

VM に関連づけられている NIC から取得できるルーティングテーブルを確認してみると、「InterfaceEndpoint」という名目でネクストホップが追加されています。

VM 内から名前解決がどのように行われているかも確認しています。Azure PaaS への名前解決を行なってみるとプライベート DNS ゾーンに登録されたレコードで解決されることが見えます。

つまり、仮想ネットワーク内の VM からはプライベート DNS ゾーンで解決された Private Endpoint のプライベートIPを解決し、それを経由して Azure PaaS へ接続します。

これで、Azure の仮想ネットワーク内からはプライベートIPをネクストホップとして解決し、Azure PaaS などへアクセスできるようになるというわけです。