記事検索

検索ワードを入力してください。
Sky Tech Blog
Dockerコンテナの​外部​ネットワークへの​アクセス遮断

Dockerコンテナの​外部​ネットワークへの​アクセス遮断

Dockerを使用したAI学習環境におけるセキュリティ対策について説明しています。特に、iptablesを用いた通信制限の設定方法と、特定のIPアドレスとの通信許可について詳述しています。

AIの学習環境としてDockerは一般的なものの一つかと思います。しかし、Dockerは気を付けて使用しないとセキュリティ上の問題を起こしてしまうことがあります。そのうちの一つが通信制限です。

Ubuntuだけの通信制限であれば ufw(Uncomplicated Firewall) などを利用することが可能です。しかしDockerはDOCKER-USERの通信をあらゆるIPアドレスに対して許可するようiptablesにルールを加えてしまうため、コンテナのポート指定を間違えるとセキュリティ上の問題となってしまう可能性が残ります。

Kubernetesなどを利用する方法もありますが、以前iptablesの設定を行って特定のIPアドレス以外の通信を遮断するように変更したため、その内容を記載します。

Dockerの​コンテナ間通信以外の​通信を​遮断

Dockerによって使用されるネットワークのデフォルトは 172.16.0.0/12 となっているため、それ以外の通信を拒否(DROP)するよう設定します。

iptables -A DOCKER-USER ! -s 172.16.0.0/12  -j DROP
iptables -A DOCKER-USER ! -d 172.16.0.0/12  -j DROP

特定の​IPアドレスとの​通信を​許可する

上記の設定ではコンテナ間通信のみが許可された状態なので、やり取りしたいIPアドレスとの通信を以下のように許可します。

今回アドレスは例として 192.0.2.0/24 とします。

iptables -I DOCKER-USER -s 192.0.2.0/24 -j RETURN
iptables -I DOCKER-USER -d 192.0.2.0/24 -j RETURN

結果としてiptablesでは以下のようなルールが設定されます。

Chain DOCKER-USER (1 references)
num  target     prot opt source               destination
1    RETURN     all  --  anywhere            192.0.2.0/24
2    RETURN     all  --  192.0.2.0/24      anywhere
3    DROP       all  -- !172.16.0.0/12        anywhere
4    DROP       all  -- anywhere              !172.16.0.0/12

ルールは上から適用されるため、 192.0.2.0/24 との通信はin/outともに許可⇒Dockerコンテナ間通信以外は拒否という順番でルールが適用され、特定のIPアドレスとの通信とDockerコンテナ間通信のみが許可されて、それ以外は遮断されている状況となります。

最後に

最後まで読んでいただき、ありがとうございます。私たちのサービスでは、データ分析基盤の構築やDeep Learningモデル開発、MLOps構築、生成AIモデル開発等データに関わるプロジェクトを伴走支援しております。データ分析基盤開発やデータのAI活用経験のある方や、興味のある方は、ぜひご応募ください。あなたのスキルと情熱をお待ちしています。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム