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 などへアクセスできるようになるというわけです。
コメント