現在のネットワークでは、さまざまな管理、統合機能が高機能化し、大量のコンテナや仮想マシン(VM)を実行、管理することが簡単にできるようになりました。このため、データセンターやクラウドなど大規模ネットワークには、大量の「サーバー」や「クライアント」が動作するようになっています。
反面、外部からの侵入やマルウェアなどセキュリティ的なリスクが高まっています。昔のようにファイアウォールの内側は「安全」と考えることはできず、ネットワークを小分けに閉じて、万一の場合に影響を最小限に抑える必要があります。
そこで必要になるのが「ネットワークアクセス制御」です。簡単にいうと、ホスト、ネットワークから他のホストやネットワークへのアクセスの可否を制御するものです。一般的には、アクセス元、アクセス先のIPアドレスやポート番号、プロトコルを元にアクセスの可否を定義したネットワークアクセス制御リスト(ネットワークACL)を作成し、これをルーターやスイッチに設定します。
京都大学 学術情報メディアセンター 小谷大祐助教
特にデータセンターなどの大規模ネットワークでは、サーバーなどの計算資源を効率的に利用するため、物理的なネットワークはすべてのホストを等しく接続します。このようにしないと、構成やサーバー割り付けなどにより特定のルーターがボトルネックになってしまう可能性があるからです。このため、任意のコンテナやVMの間のパケットがあらゆるルーター/スイッチを通ることを考えて、ネットワークACLによる制御を行う必要があります。
ところがコンテナやVMは、動作してはじめてIPアドレスが割り当てられ、事前に知ることが困難です。また、同じ制御をするコンテナやVMのIPアドレスの割り当てが一定範囲になるような制約にすると、上限を超えてコンテナやVMを起動することが困難になります。管理するアドレスの量も膨大になり、もはやIPアドレスベースでの管理は破綻していると言っていいでしょう。仮想化技術であるVX LANの応用で制御しているところも多いのですが、こちらは本来はトンネリングのための技術であるため、どうしても煩雑になってしまいます。