コンテナセキュリティとはなにか? ① 導入編 DevOps

NIST Special Publication 800-190の「Application Container Security Guide」がものすごくわかりやすく、コンテナセキュリティ製品のメーカは概ね、このガイドに沿ったホワイトペーパを出されています。
まずはこの内容を正しく理解すべきです。そのうえで、このNISTの内容ではシステム全体のセキュリティ対策という観点ではまだ不足というか、端折ってあるので、例えばネットワークセキュリティの部分を加味して全体を強化していかなければなりません。

その前に。
その前にです。

まずは「DevOps」を知らなければなりません。

「DevOpsとは、業務もしくはサービスと開発とリリース、IT運用に密接な連携を目指した、システムのデリバリー・アプローチです。
これまでサイロ化されていた、開発、運用、テストをまとめて、必要な時間を短縮。「CI/CD」(継続的インテグレーションと継続的デリバリー)環境を構築し、アプリケーションのデリバリー、デプロイメントやセキュリティの監視を継続的に行うモデルです。」

どうでしょう?呪文のようですね。なんのことだかさっぱりわかりません。

古いレガシーな開発モデルは1,2年もしかしたら2年以上かけて要件定義から概要設計、詳細設計をじっくり行い、システム環境を概ね決めたら最小構成の開発環境をつくりその開発環境のある劣悪環境のタコ部屋に大量のプログラマーが押し込まれて、昼夜問わず過酷なスケジュールで、プロジェクトが管理。長時間にわたるプログラミング業務でエンジニアの脳みその言語機能がプログラム言語に浸食され、エンジニアは日本語の使い方のみならず人間だったかどうかさえ忘れる・・・そして出来上がったプログラムを組み合わせてテストし、本番環境を作成してそこに改めてインストールしてまたテストして・・・膨大な時間とお金と、エンジニアの人間性を消費してサービスイン。そしてエンジニアは夜明けとともに朝日を浴びて、「あ、俺、昔、人間だったかも・・・」とかまぁ、そんな感じです。

一方、今、私たちが利用しているインターネット上のサービスっていかがでしょう?ものすごいスピードで新しい機能が追加されて、使い方に困るぐらいのスピード感でアップデートされて、ほぼ常に新しい機能やサービスを利用しているかと思います。逆に使い物にならないものやあまりはやらなかったものは物凄いスピード感で消えていきます。正直、古いレガシーな開発モデルではまったくもって太刀打ちできないわけです。
そのため、市場の要件をできるだけ取り込んだサービスをできるだけ早く、リリースするモデルが必要とされ、うまれたのがDevOpsというモデルです。

このモデルではプログラマたちはは非人間的なタコ部屋に押し込まれることはありません。開発・テスト・運用に必要な環境は切り出されて再利用可能でかつ、共同・協力作業ができるように共有可能なものになっています。開発とテスト、運用と密に連携し、市場投入まで短いサイクルで回すことが可能になり、結果として出てきた市場の要件をスピード感をもって取り込むことが可能になります。特にコンテナが登場してから劇的にモデルを構築しやすくなりました。
Wikiにはその効果がわかりやすく記述してあるので、引用させてもらいます。

1.市場投入までの時間の短縮
2.高い顧客満足度
3.改良された製品の品質
4.改良されて、信頼性の高いリリース
5.改良された生産性・効率
6.迅速な実験によって、適切な製品を構築する能力

ここで、続きは次回で・・・
としたいのですが、「開発・テスト・運用に必要な環境は切り出されて再利用可能でかつ、共同・協力作業ができるように共有可能なものになっています。」という点がポイントになっていまして、賢明な皆様ならわかると思います。そうです。セキュリティ対応の必要性が出てくるわけです。では次回・・

参考)
Application Container Security Guide
nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf

Wiki 「DevOps」