🐈

Azure のコントロール プレーンとデータ プレーンのはなし

2024/06/24に公開

TL;DR

  • 先日の LT の内容をきっかけに、Azure portal のコントロール プレーン、データプレーンについて整理しておき隊
  • データ プレーンはそのサービスのアクセス制御から、コントロール プレーンは条件付きアクセスで設定する
  • データ プレーンを守っただけでは、コントロール プレーンからデータ プレーンの設定を変更して、結局データ流出する可能性を残してしまう

はじめに

PaaS 系のサービスで、アクセス制限をかけると一部機能が使えなくなることがあります。
Azure Private Endpoint を生やしたらなんかうまくいかなかくなった、のようなケースは散見されます。
その理由を理解するために、コントロール プレーンとデータ プレーンという考え方を説明します。

また、データ プレーンのアクセス制限をかけただけでは、実はデータ流出につながる可能性を残してしまっています。
コントロール プレーンとデータ プレーンの違いと、それぞれのアクセス制御方法についてまとめてみます。

Storage Account のアクセス制御

たとえば Storage Account のアクセス制限をかけたい、という際に、Azure portal から設定を行うことになります。
適切な設定を入れることで、インターネット全体からのアクセスをブロックし、一部の IP アドレスからのみアクセスを許可する、といったことが可能です。

で、じゃあその「制御できた」通信には種類があることを意識しておきましょう、というお話です。
名前として、コントロール プレーンとデータ プレーンと区別して呼びますが、Azure コントロール プレーンとデータ プレーン などでその記載を見ることができます。

コントロール プレーンとデータ プレーンに関しては Azure 固有の内容ではなく、SDN(Software Defined Network)とは など SDN などの文脈でも使われることが多いように思います。

データ プレーン

先にデータ プレーンの方から説明します。

特定の IP アドレスからしか Storage Account のコンテナーにアクセスできないように制御しても、相変わらず Azure portal から該当の Storage Account の 概要 や ネットワーク などの画面は引き続き表示可能です。
ただし、データ ストレージ > コンテナー や データ ストレージ > ファイル共有 などの画面は見れません。

blob など Storage Account へのアクセスは制御できているため、一般的なデータに関するセキュリティという観点では要件を満たしています。
これは、データ プレーンに関するアクセス制御と呼ぶことができます。

コントロール プレーン

データ プレーンに対して、引き続き見れてしまっている 概要 や ネットワーク に関する設定の画面に関する通信はコントロール プレーンの通信です。
コントロール プレーンでは、Storage Account に実際に保管されているデータ、例えば blob などは直接見ることができません。
したがって、これが直ちにデータ流出につながることはありません。

コントロール プレーンのアクセス制御

コントロール プレーンで設定した内容によりデータ プレーンのアクセス制御はできますが、その設定の変更 はどの IP アドレスからでもできるような状況が残っています。
つまり、特定の IP アドレスからしか blob などのデータにアクセスできないよう設定していますが、そもそもその設定をどの IP アドレスからでも変えられてしまう、結果的にどこからでも blob にアクセスできるようにできてしまう可能性が残っています。

コントロール プレーンのアクセス制御のためには、Azure では Microsoft Entra ID の条件付きアクセスを利用することになります。
やや内容は異なりますが、大まかな内容としては 条件付きアクセスを使用して Azure 管理の MFA を必須にする - Microsoft Entra ID がそれに該当します。

Storage Account や SQL Database をはじめとした PaaS 系のサービスのほとんどが該当しますが、それぞれのアクセスを制御しておくことが大事です。

その操作はコントロール プレーンなのかデータ プレーンなのか

これらの違いを把握しておくと、Azure portal や Azure AI Studio などの利用に際しても、ある機能が利用できない理由が理解できます。

Azure OpenAI Service にもアクセス制御の項目がありますが、設定するとデータ プレーンに関して制限がかかります。
しかし、コントロール プレーンのアクセス制御はまた別です。
その結果、Azure AI Studio で、該当の Azure OpenAI Service のリソースは見えるのに、モデルを利用したチャット プレイグラウンドが利用できない、という状況が発生します。

このような動作は Azure Machine Learning Studio でも発生します。
Azure ML のリソースに対して Azure Private Endpoint を設定すると、インターネット側からアクセスした際に、リソースは見えるけれども学習は実行できない、という状況になります。

正確には、このようなコントロール プレーンとデータ プレーンの違いのほかに、DNS による名前解決がうまくいっているかという点も影響するため、Azure Private Endpoint を名前解決観点で詳細に説明してみた なども見ていただければと思います。
また、そのような状況においてもいい感じに手元の PC から Azure Private Endpoint を利用するような仕組みについても、Microsoft Entra Private Access と Azure Private Endpoint の組合せが最高 というのが現時点でのきれいな解の 1 つかなと思っています。

まとめ

ということで、Azure portal を使っているとシームレスにコントロール プレーン操作とデータ プレーン操作を行えますが、Azure Private Endpoint を含むアクセス制御を実施すると Azure portal の一部の機能だけが利用できない、という状況になります。
その場合、Azure portal を IP 制限掛けられた内部から開く必要がありますが、じゃあその環境内に Windows Client OS がありますか、そこから条件付きアクセス許可できますか、という別の課題が発生することがあります。
コントロール プレーンとデータ プレーンの違いをよく把握し、ネットワークの要件・設計に含めていくようにしてください。

参考

  • Azure コントロール プレーンとデータ プレーン

https://learn.microsoft.com/azure/azure-resource-manager/management/control-plane-and-data-plane?wt.mc_id=MVP_391314

  • SDN(Software Defined Network)とは

https://www.infraexpert.com/study/sdn01.html

  • 条件付きアクセスを使用して Azure 管理の MFA を必須にする - Microsoft Entra ID

https://learn.microsoft.com/entra/identity/conditional-access/howto-conditional-access-policy-azure-management?wt.mc_id=MVP_391314

  • Azure Private Endpoint を名前解決観点で詳細に説明してみた

https://zenn.dev/skmkzyk/articles/private-endpoint-in-detail

  • Microsoft Entra Private Access と Azure Private Endpoint の組合せが最高

https://zenn.dev/skmkzyk/articles/mepa-private-endpoint


Update log

  • 文章のニュアンスの変更 - 2024/06/25
  • 新しい記事の内容を参照する段落を追加 - 2024/08/08

Discussion