Azure Private Link と サービスエンドポイント
AzureのPaaSサービス(例えばAzure StorageやSQL Databaseなど)は、デフォルトではインターネットからアクセスされるようなものです。
ただ、多くの場合、内部でこれらの機能を使用した場合、外部公開はセキュリティ的に望ましくないことが多いです。
各PaaSサービスのファイアウォール機能を設定すれば、アクセスの制限はできますが、内部のみの通信なのに、わざわざインターネット経由でアクセスさせるのは無駄が多いです。
そこで、Azure Private Linkとサービスエンドポイントの登場です。
Azure Private Linkとサービスエンドポイントはどちらでも内部ネットワーク(仮想ネットワーク)から直接PaaSサービスへアクセスを可能にする
これができることで、PaaSサービスへのインターネットからのアクセスを全閉じして、セキュリティを向上させることが可能になります。
Azure Private Link
Azure Private Linkの仕組みは以下の2部分で成り立ちます。
- プライベートエンドポイント
- Private Link Service
※ プライベートエンドポイントはサービスエンドポイントと全く別物なので、混乱しないように
Azure Private Linkの動作イメージ
公式ドキュメントのイメージ図が素晴らしかったので、使わせていただきます。
イメージ図の通り、Private Linkを成り立つには、以下の部分があります。
- PaaSサービス(またはStandard LoadBalancer)に紐付けているPrivate Link Service
- アクセス元の仮想ネットワークにあるプライベートエンドポイント
- プライベートエンドポイントとPrivate Link Serviceのリンク(Private Link)
プライベートエンドポイントへアクセスすることで、PaaSサービス(またはStandard LoadBalancer)へ直接アクセスするようにできます。
用途
上記の仕様から、基本Azure Private Linkは以下の2つの用途があります。
- PaaSサービスを内部ネットワークから直接アクセスできるようにする
- 自分が作ったサービス(Standard LoadBalancerと併用が必要)をPaaSサービスみたいな形で外の環境へ提供する
※ Standard LoadBalancer:SLB
特徴
イメージ図を細かく見ていくと、以下のAzure Private Linkの特徴がわかります。
- プライベートエンドポイントは仮想ネットワークの内部IPを持つ
- 作成いされたVNetのIPを動的に取得し(取得後不変となる)、プライベートエンドポイントが削除されるまで保持し続ける(IP変わらない)
- オンプレミスから専用線(Expressroute、VPNなど)からでもプライベートエンドポイントへアクセス可能
- VNetピアリングからでもプライベートエンドポイントへアクセス可能
- プライベートエンドポイントとリンクするPrivate Link Serviceはテナント、サブスクリプション、リージョンを跨ぐことができる
- プライベートエンドポイントへのアクセスはOutboundを開けなくても、Private Link Serviceへ通信は可能
- Private Link Service側はInbound開けなくてもで、プライベートエンドポイントからの通信は可能
- プライベートエンドポイントとPrivate Link Serviceの通信はMicrosoft内部ネットワーク経由する
- インターネット経由はなし
また、AzureのPaaSサービスは上記のPrivate Link Serviceの一種と考えてれば、内部ネットワークから直接アクセスできる理由がわかると思います。
※ 実際、PaaSサービスは内部でPrivate Link Serviceのように(SLBあり)作られていると推測できるでしょう
PaaSサービスのプライベートエンドポイント作成
PaaSサービスを内部ネットワークでアクセスするには、プライベートエンドポイントを作成するだけで出来上がります。
【2021/02/07修正】
プライベートリンクがサポートするPaaSサービスの一覧は公式ドキュメント でご確認ください。
※ Azureは日々GAしていくため、公式資料を確認したほうが最新の状況が確認できます。
参考
NSGに関する制限事項
【2021/03/22更新】
プライベートリンクを構成すると、プライベートのIPを持つようになりますが、vNic(仮想NIC)を持っているわけではありません。そのため、NSGのルールは適用できません。
プライベートリンクを構成すると、プライベートのIPを持つようになります。
読み取り専用のvNic(仮想NIC)が作成されます。ただし、どのVMとも紐づいていないため、NSGのルールは適用できません。(サブネットのNSGルールも適用されない)
影響としては、例えばプライベートリンクへ「Inbound」でネットワーク内部からのアクセス制限ができなくなってしまいます。
ただ、ネットワーク内の他のワークロードにNSGの適用は可能なので、他のリソースの「Outbound」で制限することで、対策は可能です。
参考
作成
作成手順はここでは割愛しますが、公式ドキュメントに詳細な手順がございますので、ご参考いただければと思います。
サービスエンドポイント
サービスエンドポイントは仮想ネットワークの機能の一つで、仮想ネットワークから指定のPaaSサービスへ直接通信できるようにする設定です。
サービスエンドポイントもMicrosoftの内部ネットワーク(バックボーン)経由でPaaSサービスと通信しますので、インターネット経由しません(セキュア)。
【2021/02/07追記】
サービス エンドポイントを追加しても、パブリック エンドポイント(インターネットからの入口)は削除されません。 トラフィックがリダイレクトされるようになるだけです。
即ち、特定のAzureサービスのサービスエンドポイントを仮想ネットワークに追加したことで、追加したサービスへの通信はインターネットを経由しなくなります。
サービスエンドポイントがサポートするPaaSサービスの一覧は公式ドキュメント でご確認ください。
※ 対応可能なサービスはプライベートリンクよりは少ない
※ 2020/02/07時点では、Azure Container Registry (Microsoft.ContainerRegistry)はまだプレビュー状態です。
作成
作成手順はここでは割愛しますが、公式ドキュメント に詳細な手順がございますので、ご参考いただければと思います。
比較
どちらでもPaaSサービスを内部ネットワークからアクセスさせることを可能にできますが、サービスエンドポイントでは一部劣っている部分があります。
- 対応しているPaaSサービスの種類:Private Linkの方が現時点多い
- オンプレミスからのアクセス:サービスエンドポイントは、デフォルトで、オンプレミスから(ExpressRoute)の通信はできない
- オンプレミスのNAT IPをAzureサービス リソースのIPファイアウォールで許可することで、通信が可能になる
最後に
最近サービスエンドポイントのキーワードがよく耳にしたので、関連するAzure Private Linkも一緒に調べてみました。
以前、自分もここら辺あやふやで、似たようなキーワードが出てきてよくわからなかったので、この記事ですっきりしていただける方がいたらありがたいです。
ここまで読んでいただいて、お疲れ様でした。
コメント