今回はサービスエンドポイントについてです。
- ■はじめに
- ■サービスエンドポイントの料金
- ■サービスエンドポイントの制限
- ■サービスエンドポイントを利用する理由
- ■サービスエンドポイントを利用するパターン
- ■サービスエンドポイント設定の流れ
- ■サービスエンドポイント設定確認
- ■サービスエンドポイントを利用した場合のルートテーブル
- ■サービスエンドポイント設定後のPaaSの名前解決について
- ■補足:サービスエンドポイント削除後のSQLデータベースへの接続
■はじめに
サービスエンドポイントは、
仮想ネットワーク内のAzureリソース(仮想マシン等)からAzureが提供しているPaaS(※1)にアクセスする際の通信手段の一つです。
※1
すべてのPaaSが対象になっているわけではなく、
以下リンク先の「一般公開」「パブリックプレビュー」に記載されているPaaSを利用しているときには、サービスエンドポイントを利用することができます。
Azure 仮想ネットワーク サービス エンドポイント | Microsoft Docs
■サービスエンドポイントの料金
発生しません。
※PaaSの利用料はもちろんかかります。
■サービスエンドポイントの制限
「サービスエンドポイントを使おう」と思って設定を進めていく中で残念な結果にならないように、サービスエンドポイントを利用したPaaS接続での制限事項について先に記載致します。
制限事項は主に以下の2つです。
・仮想ネットワークとPaaSのリージョンは同じにする
・通信の開始は必ず、仮想ネットワーク(内のAzureリソース)からPaaS ※逆はNG
■サービスエンドポイントを利用する理由
通常、Vnet上の仮想マシンからAzure SQL Database(PaaS)に接続する際、
デフォルトではインターネット経由でアクセスすることになります。
インターネット経由での通信となるので、仮想マシンもAzure SQL DatabaseもパブリックIPアドレスを使って通信します。
(送信元:仮想マシンのパブリックIPアドレス、宛先:Azure SQL DatabaseのパブリックIPアドレス。通信経路:インターネット)
サービスエンドポイントは、
インターネット経由ではなくローカルネットワーク経由(正確には、Microsoftネットワーク上。バックボーンネットワークとも言います)で接続することができます。
つまり、通信データがインターネットを流れないため、セキュアな通信が可能となります。
(送信元:仮想マシンのプライベートIPアドレス、宛先:Azure SQL DatabaseのパブリックIPアドレス。通信経路:Microsoftネットワーク)
■サービスエンドポイントを利用するパターン
「Vnet上のリソースからPaaSへの接続」が大半です。
■サービスエンドポイント設定の流れ
サービスエンドポイントの設定は以下の流れで行います。
1.サブネット設定にて、接続したいPaaSへのサービスエンドポイントを有効化する
2.PaaS側でサービスエンドポイントを利用した通信となるように設定を行う
■1.サブネット設定にて、接続したいPaaSへのサービスエンドポイントを有効化する
サービスエンドポイントはサブネットのオプション設定です。
具体的には、下図の「サービスエンドポイント」プルダウンメニューからPaaSを選択します。
↓サービスエンドポイントのプルダウンメニューの内容↓
試しにSQLDatabase(=Microsoft.Sql)を選んで保存した場合は以下のように表示されます。
■2.PaaS側でサービスエンドポイントを利用した通信となるように設定を行う
今回はSQLDatabaseでサービスエンドポイントを利用した通信設定を行ってみます。
事前に「SQLデータベース」を作成しています。
少しわかりにくいですが、サービスエンドポイントを利用した通信の設定は、
「SQL Server」リソースにて設定します。
「SQL Server」の左ペインにて「セキュリティ」>「ファイアウォールと仮想ネットワーク」を選択します。
「Azureサービスおよびリソースにこのサーバーへのアクセスを許可する」項目は「いいえ」にします。
「仮想ネットワーク」項目にて「既存の仮想ネットワークを追加」をクリックします。
※デフォルトでは何も設定されていません。
右ペインの設定項目に必要情報を入力/選択し「OK」をクリックします。
事前にサブネットでサービスエンドポイントを構成しているため、「サービスエンドポイントの状態」は「有効」になっています。
設定が完了すると、以下の通り表示が更新されます。
■サービスエンドポイント設定確認
PaaS(今回はSQLデータベース)への接続確認を行います。
仮想マシンからSSMSを利用してSQLデータベースへ接続できます。
■サービスエンドポイントを利用した場合のルートテーブル
仮想マシンのNICにて「有効なルート」を確認すると、「ネクストホップの種類」列が「VirtualNetworkServiceEndpoint」のものがあります。
■サービスエンドポイント設定後のPaaSの名前解決について
サービスエンドポイントを構成することにより、仮想ネットワークからのPaaSへのアクセスはMicrosoftネットワークを経由したセキュアな通信となります。
ただ、仮想ネットワーク上の仮想マシンや個人の端末上でSQLデータベースへの接続文字列を名前解決すると、いずれもグローバルIPアドレスが表示されます。
つまり、サービスエンドポイントにより、SQLデータベースの接続文字列に対する名前解決がプライベートIPアドレスとなるわけではなく、あくまで名前解決はグローバルIPアドレスとなります。
サービスエンドポイントを構成した後もオンプレミス環境からAzurePaaSへの接続には引き続きグローバルIPアドレスが利用されます。
PaaS側で接続元グローバルIPアドレスを拒否している場合(※1)は、オンプレミス環境からPaaSへ接続することはできません。
※1
「SQL Server」リソースの左ペイン「ファイアウォールと仮想ネットワーク」をクリックし、右ペインの「Azureサービスおよびリソースにこのサーバーへのアクセスを許可する」がデフォルトで「いいえ」になっているため、外部からSQLServerへの接続はできません。
オンプレミス環境からAzurePaaSへプライベート接続を実施したい場合には、AzurePrivateLinkを利用します。
■補足:サービスエンドポイント削除後のSQLデータベースへの接続
サービスエンドポイントを削除した場合は、SQLデータベースへ接続することができません。
インターネットからの接続は以下の通り「いいえ」を選んでいることにより拒否されます。
試しに「はい」を設定した場合、クライアントIPアドレス(=接続元グローバルIPアドレス)を設定することで、インターネット経由でのSQLデータベースへの接続ができるようになります。
以上です。