クラウドエンジニアブログ

Azure Private Link を使用した PaaS リソースへのプライベートアクセス

uchizono-toshiteru

内苑 利映

1. はじめに

皆さんこんにちは。内苑です。
Azure Private Link のプレビュー版の提供が開始され、PaaS リソースや、ピアリングされていない仮想ネットワーク上にデプロイされた独自サービスに対してプライベート接続が可能になりました。少し前にリリースされた機能で、PaaS リソースが仮想ネットワークを識別して通信制御を実現するためのサービスエンドポイントというものがありましたが、この機能との違いなどにも触れながら内容を紹介していきたいと思います。


2. 特徴

Azure Private の特徴を以下に記載します。
内容は公開情報に記載のものをかみ砕いてご紹介します。

参考:Azure Private Link とは
https://docs.microsoft.com/ja-jp/azure/private-link/private-link-overview

  • Azure プラットフォーム上のサービスへのプライベートアクセス
    接続元または接続先にパブリック IP アドレスを必要とせずに、ローカル仮想ネットワークからプライベート通信でプライベートリンクリソースへアクセスすることが可能。
    現在使用可能なプライベートリンクリソースは以下の通り。

・Azure SQL Database
・Azure SQL Data Warehouse
・Azure Storage
・Azure Data Lake Storage Gen2
・Azure Cosmos DB
・独自サービス

  • オンプレミスおよびピアリングされたネットワーク
    Private Link サービスに対して、オンプレミスから VPN or ExpressRoute を経由してプライベートアクセスが可能。
  • データの流出に対する保護
    Azure Private Link の構成要素であるプライベートエンドポイントは、PaaS リソース全体ではなく、特定のインスタンスにマッピングされるため、他のリソースには接続しないようにすることが可能。 この組み込みメカニズムにより、データの流出のリスクを抑えることができる。

  • グローバルな展開
    Private Link サービスと異なるリージョンの仮想ネットワークを接続することが可能。
    例)東日本リージョンに展開された SQL Database に米国西部の仮想ネットワークからプライベートエンドポイントで接続 等

  • 重複するアドレス空間からの接続
    Azure Private Link では、IP アドレス空間が重複する異なる仮想ネットワークのアプリケーションをプライベートに接続する代替方法が提供される。


3. 環境準備

Azure Private Link を使用した PaaS リソースへのプライベートアクセスの動作を確認するため、以下のリソースを作成しました。リージョンは全て米国西部で統一しています。

  • 仮想ネットワーク
    名前 :private-link-dev-vnet
    アドレス空間 :10.0.0.0/16
  • サブネット
    名前 :srv-subnet
    アドレス空間 :10.0.0.0/24

  • ネットワークセキュリティグループ
    名前 :private-link-dev-nsg
    ルール内容 :※ 受信規則は既定の内容、送信規則は後述

  • 動作検証用 VM
    VM 名 :remote-vm
    所属サブネット :srv-subnet

  • 動作検証用 SQL Database
    データベース名 :pldev-sqlserver
    サーバー名 :pldev-sqldb

  • ※ NSG のルールは送信規則の既定の内容を以下の通りに上書きしています

  • インターネット方向の通信 :拒否
  • Virtual Network への通信 :許可

準備段階での構成は以下図の通りとなります。

環境準備

srv-subnet に適用している NSG の設定にて、インターネット方向の通信を遮断しているため、remote-vm は PaaS 領域に配置されている pldev-sqldb に接続することができません。
このサブネット内にプライベートエンドポイントを作成することにより、pldev-sqldb へのプライベート通信を実現します。それでは早速プライベートエンドポイントを作成していきます。

◇ プライベートエンドポイントの作成

[すべてのサービス]の検索ボックスに[プライベート]と入力し、[プライベートリンクセンター]を選択します。

プライベートエンドポイントの作成1



[プライベートエンドポイント]タブにて[追加]を選択し、プライベートエンドポイントの設定を入力していきます。

プライベートエンドポイントの作成2



  1. 基本
    サブスクリプション:任意のサブスクリプション
    リソースグループ:任意のリソースグループ
    名前:private-endpoint-sqldb
    地域:米国西部

  2. プライベートエンドポイントの作成3



  3. リソース
    接続方法:[マイディレクトリ内のAzureリソースに接続します]
    サブスクリプション:任意のサブスクリプション
    リソースの種類 :Microsoft.sql/servers
    リソース:pldev-sqlserver
    対象サブリソース:sqlServer

  4. プライベートエンドポイントの作成4



  5. 構成
    仮想ネットワーク:private-link-dev-vnet
    サブネット:srv-subnet
    プライベート DNS ゾーンと統合する:はい
    プライベート DNS ゾーン:privatelink.database.windows.net

  6. プライベートエンドポイントの作成5



  7. タグ
    設定なし

  8. 確認及び作成
    設定値を確認し、作成する

これでサービスエンドポイントが作成され、srv-subnet に所属する動作検証用 VM(remote-vm)から動作検証用 SQL Database(pldev-sqldb)へのプライベート通信が可能な状態となりました。以下のような構成イメージとなります。


プライベートエンドポイントの作成6


4. 動作検証

remote-vm にログインし、コマンドプロンプトにて pldev-sqlserver の名前解決を行います。

動作検証1



エンドポイント作成時に新規作成したプライベート DNS ゾーンがプライベートアドレスの値を返します。
この状態で、SSMS(SQL Server Management Studio)を使って pledev-sqldb に接続を試みます。

動作検証2,3



上記のように、インターネット通信を遮断した状態で、PaaS 領域に配置されている SQL Database に接続することができました。
SQL Database 側から、クライアントの接続 IP がどう見えているかも確認してみましたが、プライベート IP から来ているように見えます。

動作検証4



SQL Server 側ではどのようにプライベートエンドポイントの設定が反映されているかというと、以下のようになっています。
pldev-sqlserver のリソース画面にて、[プライベートエンドポイント接続]タブを選択します。

動作検証5



先ほど作成したプライベートエンドポイントの名前が頭についた接続名が表示され、[状態]が[Approved]になっていますね。「◇ プライベートエンドポイントの作成」にて、[マイディレクトリ内の Azure リソースに接続します]を選択したため、[要求/応答メッセージ]の値が[Auto-Approved]となり、自動的に接続が承認される動作となるようです。

動作検証6



5. サービスエンドポイントとの比較

PaaS リソース側が仮想ネットワークを識別してアクセス許可を設定可能にする機能でサービスエンドポイントというものがあります。今回の Private Link との機能比較を以下にまとめましたので参考にしていただければと思います。

左右にスクロールしてご覧ください。

比較要素 サービスエンドポイント Private Link
通信方式(to PaaS) パブリック プライベート
接続制限(受信) リソースのファイアウォール設定 エンドポイント接続要求の許可/拒否
接続制限(送信) サービスエンドポイントの有効化
サービスエンドポイントポリシーの定義
エンドポイント作成時に接続先の PaaS リソースを指定
リージョンの制限 ストレージと SQL は例外的にネットワークリソースと PaaS リソースが同一リージョンに配置されている必要がある なし


サービスエンドポイントでは、仮想ネットワークでサービスエンドポイントを有効化し、NSG のサービスタグを使用して接続する PaaS リソースの種類、リージョンを絞って許可し、サービスエンドポイントポリシーを適用して特定リソースのみへの接続のみを許可して接続制御を設定します。
それに対して、Private Link では、プライベートエンドポイントを作成して接続したい PaaS リソースを選択するだけで接続制御を設定できます。
ですので、サービスエンドポイントより Private Link の方がシンプルで分かりやすいです。


6. まとめ

恐らく多くの Azure ユーザーが待ち望んでいた PaaS へのプライベートアクセス機能が、ものすごくシンプルな形で提供されるようになったように思えます。サービスエンドポイントのリリース時は、PaaS が VNet を識別して、VNet ごとに制御できるようになるということで、なんと画期的な機能なんだと感心しましたが、今回はそれを上回るリリースだと思います。ネットワーク側の変更などは特に必要なく実装可能なので、ぜひお試しください!

【総合】お問い合わせ

ソリューションに関する全般的なお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録