はじめまして。サイオステクノロジー DX Product & Integration コンテナ・プラットフォーム事業でエンジニアリングを担当している阿部です。
みなさま、コンテナ技術は使っていますでしょうか?
コンテナ技術って、まだまだ新しくてどんどん進化していてワクワクしますよね!
はじめに
さて、この記事では、コンテナに最適化されておりセキュアなコンテナホストOSについてのお話をしようと思います。
コンテナホストOSについて調べてみるといろいろあるんですね。この記事ではセキュアなことに着眼していますが、セキュリティ以外にもいろいろなメリットがあります。
今まで特に気にしないで、一般的なLinuxディストリビューションをコンテナホストOSに使用されている方も、コンテナ用に設計されたOSを使ってみてセキュアなシステムを構築してみてはいかがでしょうか?
ボトルロケット?!
名前がユニークですよね。炭酸水を入れたロケットの模型のことではありません。
AWS でマネージド Kubernetes を実行する Amazon Elastic Kubernetes Service(Amazon EKS)などで活用されている コンテナホスティング用オープンソース OS 「Bottlerocket」のことです。
「Bottlerocket」は、コンテナホスト専用に設計および最適化した Linux ベースのオープンソースオペレーティングシステムです。
「Bottlerocket」には、いろいろなメリットがありますが、コンテナホストに必要となるソフトウェアのみで構成されているシンプルなOSであるため、攻撃対象を減らすことができるので、セキュリティに関しても優位なものとなります。
セキュリティに関連する特徴としては、「ブート時には自己の整合性をチェックして起動」「SELinuxの強制アクセス制御により、Bottlerocket自体への変更も特権コンテナからの変更のみに制限」「OSは主にリードオンリーのファイルシステムを使用」などがあげられます。
このOSは 2020年8月31日にGAローンチされたもので、オープンソースということもあって、これからの進化に期待しちゃいますね。
Amazon EKS や ECS でホストOSを選ぶときになんとなく Amazon Linux を選択されている方もいらっしゃるかと思いますが、セキュリティについて少し考えてみて、そもそも攻撃対象を減らすというアプローチで「Bottlerocket」を検討してみるのもアリかもしれないですね。
Container-Optimized OS
次に、GCP で活用されるコンテナホストOSはどうでしょうか?
はい、ありました。「Container-Optimized OS」です。
名前のとおりです。コンテナの実行に対して最適化された Compute Engine VM 用のオペレーティング システム イメージです。
GCP でマネージド Kubernetes を実行する Google Kubernetes Engine(GKE)などで活用されているOSです。こちらは、オープンソースのChromium OSプロジェクトに基づく、Googleが管理するオペレーティングシステムです。
「Container-Optimized OS」もセキュアなOSとなり、脆弱性となりうる範囲をはじめから減らしているOSです。
このOSのセキュリティ機能としては「ルートファイルシステムが常に読み取り専用としてマウントされブート時にカーネルによってルートファイルシステムの整合性が確認される」「Chromium OS に含まれている Integrity Measurement Architecture(IMA)、監査、Kernel Page Table Isolation(KPTI)、Linux セキュリティ モジュール(LSM)など、複数のセキュリティ強化カーネル機能が有効になっている」などがあげられています。
GCP上でコンテナを利用する方は検討してみてもよいですね。
ただし、「Container-Optimized OS」は「Bottlerocket」と異なり、ユーザーがカスタマイズしたイメージを構築することを想定していません。
カスタムビルドをしたい方は注意が必要です。
いろんなコンテナホストOS
AWS、GCPと見てきたので次は Azure で活用されるコンテナホストOSはどうでしょうか?
残念ながら、本記事の執筆時点(2020年9月)ではコンテナに最適化されたOSはリリースされていませんでした。これからコンテナ技術の活用が盛んになってくれば Azure でもコンテナ用に設計されたOSがリリースされるかもしれないですね。
ここまではクラウドベンダがリリースしているコンテナホストOSを見てきましたが、コンテナ用に最適化されたオペレーティングシステムは新しいものではなく、他にもいろいろとあります。
- Alpine Linux
- CoreOS Container Linux(Fedora Core OS)
- RancherOS
- Red Hat Project Atomic(Atomic Host)
- VMware Photon OS
これらのオペレーティングシステムは「軽量でありコンテナを稼働させることに適していること」「OSに含まれているコンポーネントが少ないことによりセキュリティ面での優位性があること」が共通して言えます。
おわりに
この記事では、いくつかのコンテナ用に設計されたOSを紹介しましたが、セキュリティに関すること以外にも様々な特徴があります。システムの特性などを考慮してこれらのOSを選択することでメリットを享受することができますね。
せっかくシステムをコンテナ化するんだったら、ホストOSを選択する際にコンテナ用に最適化されたOSを採用してセキュアなシステムを作るのもいいんじゃないかなというお話でした。
ご覧いただきありがとうございました。