安心安全!Azure Private Linkを使ったAzure PaaSへのプライベート接続

2020年9月30日掲載

クラウドSEの小川です。現部署に配属され早1年以上が経ち、大きな案件をたびたび任せられるようになるなど、自分の成長を少しずつ実感しております!
突然ですが、Azure Private Linkサービスと呼ばれるAzureサービスをご存じでしょうか。本サービスが登場したことで、セキュリティの観点でAzure PaaSリソースをご利用できなかった方々も、安心してAzure PaaSを利用できるようになりました。今後さまざまなワークロードをご検討されていくなかで、セキュリティを担保する際に本サービスが活用されると推測し、本記事を執筆いたしました。
では、Azure PaaSリソースへのプライベート接続を実現するAzure Private Linkサービスの魅力を余すことなくお伝えしていきます!

目次

1.Azure Private Linkって何?

端的に説明すると、Azure PaaSリソースにプライベート(閉域)接続できるサービスです。2019年末ごろよりMicrosoft社が注力してアップデートを続けており、2020年9月現在では多くのAzure PaaSリソースでAzure Private Linkサービスを利用できるようになりました。これまでのAzure PaaSリソースへの接続サービスと比較して、どのような点で興味深いサービスなのかを説明していきます。

1.1.既存サービスとの比較

これまで、仮想ネットワークを経由したAzure PaaSリソースへの接続サービスとしてAzure Service Endpointが提供されていました。このサービスでは、Azure PaaSにはパブリックIPアドレスが付与されるため、L3接続のセキュリティを考慮に入れた運用設計が必要でした。一方で、Azure Private Linkサービスでは、パブリックIPアドレスではなくプライベートIPアドレスが付与されます。さらに、特定のAzure PaaSリソースにアクセスするには、Azure PaaSリソースとリンクされたAzure プライベートエンドポイントを経由しなくてはいけません。このように、パブリックからAzure PaaSへのアクセスを禁止できることがAzure Private Linkサービスのメリットとなります。
近年、Microsoft社はAzue Private Linkサービス拡充に力を入れており、多くのAzure PaaSリソースにおいてPrivate Linkを作成できるようになりました(参考:Azure Private Link とは:可用性)。最近では、Azureの最新プロダクトであるAzure SynapseでもAzure Private Linkサービスが提供されています。以下の図にあるように、接続元のIPアドレスを指定しなくとも、Azure PaaSにプライベートアクセスできるようになるため、幅広いワークロードでの利用が想定できます。ただし、接続元のIPアドレスを制限したい場合には、NSGを利用できないことにご注意ください。後述しますが、IPアドレスで縛るのではなく、Azure Private Linkサービスを使えるユーザを制限する必要があります。

1.2.Azure Private Linkの使いどころ

Azure Private Linkの使いどころについて考えていきましょう。Azure Private Linkには以下のような特筆すべき点があります。

  • 特定のAzure PaaSリソースをお客さまが専有する
  • Azure PaaSリソースには、リンクされた仮想ネットワークのみからしかアクセスできない

以上のようにPaaSリソースをあたかもお客さま専用のサービスとして扱うことができます。これらの特徴を活かして次のような使い方が考えられます。

1.2.1.オンプレミスからAzure PaaSへ閉域接続

ソフトバンクが提供している閉域接続サービスであるダイレクトアクセス for Microsoft Azureをご利用いただくと、オンプレミスからAzure PaaSへの閉域接続が可能となります。Azure Private Linkサービスを利用するダイレクトアクセス for Microsoft ことで、外部へのデータ漏えいリスクの観点からPaaS利用が進まなかったお客さまが、安心してPaaS利用に踏み出せるきっかけとなることでしょう。また、お客さま専用線が帯域確保型の場合ですと、Azure PaaSを安定にご利用できるようになります。Azure Private Linkサービスは、応答性が求められるPaaS利用にも威力を発揮することでしょう。

ダイレクトアクセス for Microsoft Azure サービス詳細

1.2.2.閉域接続でのデータ解析・機械学習

Azure Kubernetes ServiceやAzure Machine LearningでもAzure Private Linkが利用可能となっており、幅広いロードワークでもプライベート接続が実現できるようになります。例えば、エッジコンピューティングなどの大容量のデータ分析や、GPU付きの仮想マシンとAzure PaaSリソースとを連携させた機械学習などが考えられます。このように、これまでは閉域環境で行うことが難しかったワークロードに対応できるようになりました。
さらに、プライベートエンドポイントとAzure PaaSリソース間はAzureバックボーンネットワークを介して接続されていることも大きなメリットになるでしょう。お客さま側でネットワーク設計や調達をしなくとも、Azure Private Linkサービスを利用することでセキュアのみならず高速かつ安定した通信を実現できます。今後、大容量の機密データを扱うワークロードが増える中で、Azure Private Linkの使いどころは益々増えることでしょう。

1.2.3.よりフレキシブルでセキュアなテレワーク環境

テレワークの要として話題となっているWindows Virtual Desktop(WVD)とAzure Private Linkサービスを利用することで、フレキシブルでセキュアなリモート開発環境を実現できます。例えば、Private Linkサービスを利用してAzure Storage、Azure SQLデータベースやAzure Cosmos DBと社内システムとが連携している際には、WVDを利用することで社外から閉域環境での開発が行えます。また、WVDとAzure PaaS間はMicrosoft バックボーンネットワークを通じてのやり取りとなるので、一般的なインターネット通信よりも安定で高速な通信が期待できます。

1.3.課金形態

さて、気になるAzure Private Linkサービスの利用料金についても解説いたします。Azure Private Linkサービスを利用する際には以下のような料金が発生いたします。

VPN Gatewayの使用料金や、Azureデータセンターからのアウトバウンド通信料金(13.34円~/GB:東日本リージョン)を考えますと、Azureネットワークサービス群の価格としては比較的安価となります。受信と送信のどちらにも料金がかかってしまうことには要注意ですが、それでもまだ安価にAzure Private Linkサービスを利用できます。

2.Azure Private Linkサービスの構成要素

Azure Private Link サービスを利用するには、仮想ネットワーク内に作成したAzure プライベートエンドポイントとリンクする必要があります。この際、Azure プライベートエンドポイントの内部名前解決ができるように、Azure Private DNSを利用することが推奨されております。本章では、これらのサービスを簡単に紹介していきます。

2.1.Azure Private Linkサービス

Azure Private Link サービスをもう少しかみ砕いて説明すると、Azure PaaSリソースを仮想ネットワークにマップするサービスとなります。このサービスは、Azure PaaSにもともと組み込まれているので作成する必要はありません。ただし、お客さま独自のサービスをご利用される場合は、Azure Private Linkサービスを作成した後、Standard Load Balancerの配下にお客さま独自のサービスを配置する必要があります。

2.2.Azure プライベートエンドポイント

Azure プライベートエンドポイントは、Azure Private Linkサービスに接続するエンドポイントとして、仮想ネットワーク内に作成する必要があります。また、後程確認しますが、Azure PaaSリソースとリンクされたプライベートエンドポイント用にNICが作成され、プライベートIPアドレスが割り振られます。このIPアドレスがAzure PaaSリソースの名前解決の際に利用されます。なお、1つのAzure Private Linkは1つのプライベートエンドポイントとしかリンクできません。
参考:Private Link サービスとプライベート エンドポイントの関係はどのようなものですか

2.3.Azure Private DNS

Azure Private DNS は、仮想ネットワーク内にお客さま独自のカスタムDNS サーバを構築せずに、 PaaSとしてカスタムドメイン名を管理および解決できるサービスです。プライベートエンドポイントを設定する際にAzure Private DNSと統合するオプションを選択すると(デフォルト設定)、自動的にAzure Private DNSサービスが作成されます。これにより、プライベートエンドポイントの内部名前解決ができるようになります。
補足となりますが、内部名前解決の際にはAzure内部DNSが利用されています。実際にデプロイをしてAzure Private DNSの動きを見ますが、プライベートエンドポイントの名前解決の際、一度Azure内部DNS(168.63.129.16)に問い合わせをしていることが分かります(参考:IP アドレス 168.63.129.16 とは)。このAzure内部DNSは、仮想パブリックIPアドレスを持つ世界共通のDNSサーバーとして機能しており、Azureデータセンター内のサービスの名前解決に利用されております。
参考:Azure 仮想ネットワーク内のリソースの名前解決

3.Azureリソースのパラメータ設定

さてAzure Private Linkサービスを利用するために必要な知識は揃ったところで、それぞれのAzure リソースのパラメータを決めていきましょう。今回は、よく使われるAzure PaaSリソースであるAzure StorageとAzure SQLデータベースを作成することにします。また、これらのリソースにアクセスする踏み台ホスト仮想マシンを作成します。
以上のリソースのサンプルパラメータを、以下の通りに設定しました。リソースの設定値に関しては、設定する段階で説明いたします。

リソース命名規則は、推奨される名前付けおよびタグ付け規則を参考に命名いたしました。
参照:推奨される名前付けおよびタグ付け規則 - Microsoft Cloud Adoption Framework for Azure

仮想ネットワークの通信要件は次の通りです。

【通信要件】

以上の構成要素を図に起こすと次のようになります。

それでは、いよいよ次の章よりインスタンスを作成していきましょう。なお、リソースグループは東日本リージョンにすでに作られているものとして話を進めます。

4.Azure 仮想ネットワークの準備

まず手始めに、Azure プライベートエンドポイントと踏み台ホストを配置するサブネットを準備しましょう。なお、Azure プライベートエンドポイント専用のサブネットを用意する必要はなく、任意のサブネットに作成可能です。

4.1.プライベートエンドポイントと踏み台ホスト用の2つのサブネットを作成する

パラメータシートにしたがって仮想ネットワークを作成した後に、2つのサブネット(プライベートエンドポイント用と踏み台ホスト用)を作成します。

2つのサブネットを作成したら、ネットワークのセキュリティを高めるためにNetwork Security Group(NSG)を作成します。

4.2.Network Security Groupを作成する

仮想ネットワーク作成後、プライベートエンドポイント用の仮想ネットワークにアタッチするNSGを作成していきます。まず、リソース作成画面より、【ネットワーキング】⇒【ネットワークセキュリティグループ】を選択します。次に、パラメータシートに従ってNSGを作成します。

NSGを作成した後は、NSGの設定を確認します。今回は受信セキュリティ規則についてはデフォルトのままとし、送信セキュリティ規則に追記を行います。具体的にはインターネットへの通信規則を上書きし、インターネット方向への通信を禁止します。【送信セキュリティ規則】をクリックし、送信セキュリティ規則に規則を追加します。

送信セキュリティ規則の設定画面を開き、【追加】をクリックすると送信セキュリティ規則を追加できます。今回は、画面のように【Internet】への通信を【拒否】することにします。設定した後に、右ペイン内の【追加】をクリックし、NSGの設定を終えます。

最後に、プライベートエンドポイント用のサブネットにNSGをアタッチします。これにより、目標としていたネットワーク通信要件を満たすことができました。本番運用の際は、踏み台ホスト仮想マシン用のサブネット用にもNSGを作成し、よりセキュアな構成を構築する必要がありますが、今回は割愛いたします。

5.Azure PaaSリソースのPrivate Linkおよびプライベートエンドポイントの作成

仮想ネットワークを作成し終わりましたら、Azure PaaSリソースとAzure Private Linkサービスを作成していきます。

5.1.Azure Storageの作成

パラメータシートに従いながらAzure Storageから作成していきましょう。Azure Storageのクラスは、費用が安いローカル冗長ストレージを選択しています。次に、【ネットワーク】をクリックし、プライベートエンドポイントの設定を行います。

【プライベートエンドポイント】を選択し、プライベートエンドポイントを【追加】します。4章で作成したプライベートエンドポイント用のサブネットにエンドポイントリソースが作成されることを確認します。このときデフォルトではプライベートDNSと仮想ネットワークが統合する、と表示されています。これにより、Azure PaaSはEndpointに関連付けされ、Azure PaaSリソースのFQDNがプライベートエンドポイントのプライベートIPアドレスに名前解決されることになります。

さて、Azure Storageの設定の仕上げとして、【ファイアウォールと仮想ネットワーク】の設定を行います。【信頼されたMicrosoftサービスによるこのストレージアカウントに対するアクセスを許可します】のチェックを外すことにより、Azure Storageにアクセスするにはプライベートエンドポイント経由する以外に方法がなくなります。

ここまでの作業で気づいた方もいるかもしれませんが、Azure プライベートエンドポイントリソースやAzure PaaSリソースを作成するAzureリージョンを選ぶことができます。プライベートエンドポイントは、仮想ネットワークと同一リージョンに作成する必要があります。ただし、Azure PaaSリソースは、Azure プライベートエンドポイントとは異なったリージョンで作成しても構いません。このようにプライベートエンドポイントとAzure PaaSリソースの位置関係を意識しなくてもよいのもメリットとなるでしょう。Azure Private Linkサービスの使い方でお悩みの方は、Azure Private Linkのよく寄せられる質問などを確認してみるとよいでしょう。
参照:Azure Private Link のよく寄せられる質問 (FAQ)

5.2.Azure SQL Databaseの作成

次は、Azure SQL Databaseを作成していきましょう。パラメータシートに従いSQLサーバを作成していきます。

必要に応じて【データベースの構成】をクリックし、SQLサーバのサイズを設定してください。今回は安めの汎用目的というサイズを選びました。サイズを設定し終えたら、Azure Storageと同様ネットワークの設定を行います。

ネットワーク接続を【プライベートエンドポイント】と設定し、【プライベートエンドポイントを追加する】をクリックし、プライベートエンドポイントを構成してください。エンドポイントの設定が終わり次第、SQLデータベースを作成してください。

Azure SQLデータベースが作成されましたら、【ファイアウォールと仮想ネットワーク】を設定します。ここで、【パブリックネットワークアクセス】を拒否することで、当該のAzure SQLデータベースへアクセスするためには、プライベートエンドポイントを経由することが必須となります。

5.3.作成したリソースの確認

さて、無事2つのAzure PaaS リソースを作成し終わりました。リソースグループに作成されているリソースを確認してみましょう。プライベートエンドポイントに付随してNICが作成されていますね。このようにプライベートエンドポイントにNICがアタッチされることで、あたかもAzure PaaSリソース用のNICが作成されたように見えます。
Azure プライベートエンドポイントとAzure Private DNSゾーンについては、次の章でもう少し詳しく見ていきましょう。

6.Azure PaaSリソースへプライベートアクセスできる仕組みに迫る

Azure PaaSリソースへアクセスできる仕組みを知るために、Azure プライベートエンドポイントとAzure Private DNSゾーンについて挙動を確認してみましょう。

6.1.Azure プライベートエンドポイントの詳細

Azure プライベートエンドポイントの概要を確認してみると下の図のような画面となります。Azure PaaSリソースを作成途中にプライベートエンドポイントを作成すると、Azure PaaSリソースへのアクセスは自動で接続許可されます。一方で、プライベートエンドポイントを別個に作りAzure PaaSリソースへの接続を行う際には、Azure PaaSリソース側の承認操作が必要となります。

参考:承認ワークフローを使用したプライベート リンク リソースへのアクセス

また、Azure プライベートエンドポイントにFQDNが割り当てられていることが分かります。次の節で触れますが、ここでFQDNが割り当てられていることで、Azure プライベートDNSに問い合わせることで、Azure プライベートエンドポイントの内部名前解決ができるようになります。

6.2.Azure Private DNSゾーンについて

Azure Private DNSゾーンリソースをクリックしてみると、DNSレコードが登録されていることが分かります。

なお、DNS構成についてはAzure プライベート エンドポイントの DNS 構成を参照すると、
「既存の Microsoft Azure サービスには、パブリック エンドポイント経由で接続するときに使用する DNS 構成が既に存在している場合があります。 プライベート エンドポイントを使用して接続するには、この構成をオーバーライドする必要があります。」
との記載があり、手間を考えるとAzure Private DNSゾーンの利用がよいでしょう。
参考:Azure プライベート エンドポイントの DNS 構成

6.3 Azure プライベートエンドポイントの注意点と回避策

Azure プライベートエンドポイントを設定している間に、ネットワークとセキュリティの観点で注意点があったことにお気づきでしょうか。
2020年9月の時点では、NSGをAzure プライベートエンドポイントにアタッチすることができません。つまり、Azure PaaSリソースとの間には、(Endpointを作成した)サブネットにアタッチされたNSGの受信・送信規則を無視したトラフィックが流れます。実際に運用する上では、 プライベートエンドポイントでの受信・送信トラフィックの監視をしておく必要があるでしょう。例えば、サブネットにアタッチされているNSGのフローログの監視およびAzure プライベートエンドポイントに接続するリソース側でトラフィックの監視するなどが考えられます。なんにせよ、現時点では運用負荷が増えてしまうため、今後のアップデートを通して、よりきめ細やかな設定ができるようになると推測されます。
参考:プライベート エンドポイントがあるサブネットのネットワーク セキュリティ グループ規則

さらに、前述したとおりAzure プライベートエンドポイントのデフォルトの設定ではAzureにプライベート接続できる全ユーザがエンドポイントにアクセスできてしまうことにも注意が必要です。限られたユーザのみにプライベートエンドポイントを公開するよう権限周りで制御することを推奨いたします。
参考:Private Link サービスの公開を制御するにはどうすればよいですか。

7.踏み台仮想マシンからAzure PaaSへプライベート接続

最後に踏み台仮想マシンからAzure StorageとAzure SQLにアクセスしてみましょう。仮想マシン作成やログイン手順の詳細については、Microsoft Azure IaaS超入門その1 〜最速30分!Azure登録から仮想マシン構築〜を参照ください。踏み台仮想マシン用に用意したサブネットに、仮想マシンを作成してAzure PaaSリソースへの接続を試みます。

7.1.仮想マシンからAzure PaaSの名前解決できているかを確認する

まずは、Azure PaaSの名前解決ができているかを実際に操作して確かめてみます。仮想マシンにてPower Shellを開き、コマンド【nslookup “Azure Storage アカウント名”.blob.core.windows.net】および【nslookup “Azure SQL データベースサーバ名”.database.windows.net】と打ってみましょう。
すると次のような画面となり、名前解決がなされ、Azure PaaSリソースにプライベートIPアドレスが割り当てられていることが分かります。IPアドレス168.63.129.16を経由しておりますが、これがAzure内部DNSと呼ばれるものです。stsb.blob~の名前解決が出来ないため、Azure内部DNS⇒Azure Private DNSと問い合わせたことが分かります。

7.2.踏み台仮想マシンからAzure Storageにアクセスできるかを確認する

踏み台仮想マシンにAzure Storage Explorerと呼ばれるAzure Storageを操作できるツールをインストールします。Azure Storage Explorer – クラウド ストレージ管理にアクセスして、ダウンロードおよびインストールしましょう。
参考:Azure Storage Explorer – クラウド ストレージ管理

一度、Azure Portal画面に戻り、Key1の接続文字列をコピーします。

再度、踏み台仮想マシンの画面に戻りAzure Storage Explorerに表示されている【Storage Account】を右クリックします。【Connect to Azure Storage】をクリックし、【Use a connection string】を選択し、次に進みます。

適当な名前を入力し(Storage Account名を推奨します)、先ほどコピーした接続文字列をペーストします。

内容を確認して、Azure Storageに接続します。

無事接続できました。

7.3.仮想マシンからAzure SQL Databaseにアクセスできるかを確認する

次に、踏み台仮想マシンからAzure Endpoint経由でAzure SQLデータベースにアクセスしてみます。踏み台ホスト仮想マシンにSQL Server Management Studio(SSMS)をインストールするためにSQL Server Management Studio (SSMS) のダウンロードにアクセスします。

SSMSを実行しますと初回接続画面が現れ、接続する先のSQLサーバの情報を入力する必要があります。ここでは、Server nameに【”サーバインスタンス名”+database.windows.net】を入力し、サーバインスタンスを作成した際に使用した管理者名とパスワードを入力し【Connect】をクリックします。

無事SQLサーバに接続できました。

8.最後に

最後まで本ブログを読んでいただきありがとうございます。Azure Private Linkサービスは、これまでセキュリティ的観点などでAzure PaaSを利用できなかったお客さまにとって非常に魅力的なサービスであることをお伝えできていれば幸いです。Private Linkの設定は非常に簡単かつ明快ですので、ぜひ本ブログの手順を確認いただきながら一度試していただけたらと思います。
これからも有益な情報を発信していくべき、Azureの検証を進めてまいります。それではまた次のブログでお会いしましょう。

関連サービス

Microsoft Azure

Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。

おすすめの記事

条件に該当するページがございません