おはようございます。
今日は、Azure Data Factoryのマネージド仮想ネットワーク/マネージドプライベートエンドポイント機能について勉強したので、分かったことをまとめておきたいと思います。
Contents
マネージド仮想ネットワーク
概要
https://docs.microsoft.com/ja-jp/azure/data-factory/managed-virtual-network-private-endpoint
- Azure IRをAzure仮想ネットワーク内に展開できる
- これによってData Factoryが、プライベートエンドポイントで保護されたAzureリソースに仮想ネットワーク経由でアクセスできるようになる
- この仮想ネットワークはADFがManageするため、ユーザが意識することはない
統合する仮想ネットワークは画面上などでユーザが指定できるわけではないことから、ADFが内部的に用意した仮想ネットワークに展開されているようなイメージなのかなと思います。
また、構成次第ではAzureリソースだけでなくオンプレミスのデータソースとの接続もできる模様。まだちゃんと読めてないですがリンクだけ貼っておきます。
利用時の注意点
以下のように、セキュリティとパフォーマンスとの間にトレードオフがあるようです。TTLをうまく設定できると問題にならないのかもしれません。
- 既存のグローバル統合ランタイムを、Data Factory マネージド仮想ネットワーク内の統合ランタイムに切り替えることはできない。また、その逆も同様。
- 送信方向にはすべてのポートが開かれている。(=パブリックなエンドポイントへの通信も可能ということっぽい?ということで、ADFからパブリックエンドポイントへの通信をさせたくないならSelf-Hosted IRを利用することになりそう)
- 設計上、マネージド仮想ネットワーク内の統合ランタイムでは、グローバル統合ランタイムよりもキュー時間が長くなる。 Data Factory ごとに 1 つのコンピューティング ノードが予約されていないため、各アクティビティが開始される前にウォームアップが必要となるため。ウォームアップの時間は、統合ランタイム自体というよりは、仮想ネットワークへの参加でかかる。
- ただし、マネージド仮想ネットワークの構成時にTTLを設定できて、その時間内であればウォームアップ済ノードが利用できるためキュー時間が短縮される。
- COPYアクティビティではTTLはサポートされていない。
参考:
- https://docs.microsoft.com/ja-jp/azure/data-factory/managed-virtual-network-private-endpoint#managed-virtual-network
- https://docs.microsoft.com/ja-jp/azure/data-factory/managed-virtual-network-private-endpoint#activity-execution-time-using-a-managed-virtual-network
- https://docs.microsoft.com/ja-jp/azure/data-factory/managed-virtual-network-private-endpoint#outbound-communications-through-public-endpoint-from-a-data-factory-managed-virtual-network
その他接続先サービス固有の制限もいくつかあるようです。
マネージドプライベートエンドポイント
概要
- 再掲の図ですが、以下図の通りマネージド仮想ネットワーク内に接続先データソースのプライベートエンドポイントを配置できるという機能
- 一般的なプライベートエンドポイントの機能の恩恵として、ADFからの通信をプライベートに行えることに加えて、ADFフルマネージドなのでユーザ側でエンドポイントの管理が不要。
- マネージド仮想ネットワークを利用する場合、このマネージドプライベートエンドポイントと併用することでプライベート通信を実現できる
プライベート リンクを使用すると、データ ストアとマネージド仮想ネットワーク間のトラフィックは、全面的に Microsoft のバックボーンネットワークを介して転送されます。 プライベート リンクによって、データ流出のリスクから身を守ることができます。
https://docs.microsoft.com/ja-jp/azure/data-factory/managed-virtual-network-private-endpoint#managed-private-endpoints
利用時の注意点
- PaaS データ ストア (Azure Blob Storage、Azure Data Lake Storage Gen2、Azure Synapse Analytics など) に対してプライベート エンドポイントが既に作成されており、すべてのネットワークからのアクセスが許可されている場合でも、Data Factory からはマネージド プライベート エンドポイントを使用してアクセスすることしかできない。
- 2022年6月末時点で、以下リソースで対応している。
- Azure Functions (Premium プラン)
- Azure Key Vault
- Azure Machine Learning
- Azure Private Link
- Microsoft Purview
なるほど、ADFマネージド仮想ネットワークはユーザが意識できない場所で作られるので、データソースとのプライベート通信を行うにはマネージドプライベートエンドポイントを使うしか方法はないのですね。(マネージド仮想ネットワークが認識できないので、通常のプライベートエンドポイントをユーザ作業で配置することもできませんからね・・・)
ここに対応していないリソースへのプライベート接続を実現したい場合は、現段階だとSelf-Hosted統合ランタイムを利用することになりそうです。
参考:
実際につかってみた
今回、これらの機能を実際に使ってみました。以下にちょうどよいチュートリアルがあったので、こちらをなぞってみました。操作感のイメージアップになれば幸いです。
プライベート エンドポイントを使用して Azure Blob Storage から SQL データベースに安全にデータをコピーする
https://docs.microsoft.com/ja-jp/azure/data-factory/tutorial-copy-data-portal-private
事前準備
Azure Blob Storageに適当なファイルを配置し・・・
Azure SQL Databaseにインポート先テーブルを作成しておきます。
Azure Data Factoryマネージド仮想ネットワーク内にAzure統合ランタイムを作成
ここからはADFの設定です。
Data Factory Studioでマネージド仮想ネットワーク内に新しい統合ランタイムを作成します。
Azure統合ランタイムを指定し・・
仮想ネットワーク設定で、「仮想ネットワークの構成」を有効化すればOKです。
作成したら、統合ランタイムの一覧にサブタイプ”マネージド仮想ネットワーク”として追加されていることが確認できます。
パイプラインの作成
Azure Blob Storage -> Azure SQL Databaseにデータをコピーするパイプラインを構成していきます。
Blob Storage上に先ほど配置したファイルをソースとして追加し・・・
ここで、リンクサービスの設定が今回の肝です。
対象Blob Storageを選択し、統合ランタイムを先ほど作成したマネージド仮想ネットワークのものを指定するのに加えて、マネージドプライベートエンドポイントを作成します。
マネージドプライベートエンドポイントの承認は明示的に行う必要があるようなので、Blob Storageのネットワーク>プライベートエンドポイント接続タブから承認します。
また、本当にプライベートアクセスになっているか確かめたい場合は、Storageのネットワーク設定から、パブリックアクセスを無効化しておくと良いでしょう。( or 診断設定を有効化していれば、そのログからアクセス元がプライベートIPになっていることでも確認できそうです)
次にシンクの設定です。
インポート先のSQL Databaseを設定します。
こちらも同様、リンクサービスのランタイムをマネージド仮想ネットワーク経由に変更し、
SQL Databaseに対してマネージドプライベートエンドポイントを作成した後、SQL Database側で承認を行えば準備完了です。(こちらも、検証のためパブリックアクセスを無効化しておくと良いでしょう)
パイプラインの発行とテスト
設定が完了したらデバッグし、問題なければ公開します。
そして、「トリガーの追加」>「今すぐ実行」で実行してみます。
モニタリング画面でみていると、確かに初回はキューにはいってから処理中になるまで1分ほどかかりました。
2回目以降は、TTLの設定が効いているのかキュー待機時間はほぼありませんでした。
データは無事登録されています。
以上、Azure Data Factoryのマネージド仮想ネットワーク機能とマネージドプライベートエンドポイント機能への理解を深める、の回でした。勉強になりました。
最後に、参考になった!という場合には以下の「いいね」ボタンをポチって頂けると励みになります!
おしまい
コメントを残す