#OSCKYOTO 2019 LTで話した内容です。 コンテナセキュリティに関する議論のきっかけになれば良いと思います。
コンテナのセキュリティってどうなってるの?OSC2019 KYOTO(8/3) LT みやざき さとる
View Slide
言うなれば運命共同体• コンテナ=アプリケーションコンテナとする• いわゆる、Docker、Kubernetes を想定している• cgroupとLinux Usernamespaceでリソースを分離• コンテナはカーネルを持たない• 必要なアプリケーションとライブラリ、パッケージを含む
nodeAnode間接続TLSVxLAN互いに頼り、互いに庇い合い、互いに助け合う• ノード内のコンテナ同士の通信はプライベートなブリッジ• ノード間通信は、Docker SwarmではTLS化されている• Kubernetesでは、ノード通信をVxLAN経由で行われTLS化されている• コンテナ外からは限定されたポートのみ接続nodeBfrontContainer Container ContainerContainerContainer Container
nodeOS/カーネル一人が五人のために、五人が一人のために• すべてを非特権ユーザーで動作させる• ホスト側でコンテナデーモン動作• コンテナ側でアプリケーション動作• よりセキュアにプロセスを動作させるコンテナデーモン非特権ユーザアプリケーション非特権ユーザアプリケーション非特権ユーザコンテナ
だからこそ戦場で生きられる• コンテナはイメージで配布• イメージはレイヤ構造• イメージ作成時に脆弱性スキャンが可能• Wazuh• Vuls• Gitlab(Clair)• trivy• etc…ContainerApplication LayerMiddleware LayerBase OS Layer
分隊は家族、分隊は兄弟• コンテナ内に余計なものがない• ネットワークは分離・暗号化されている• コンテナ及びアプリケーションを非特権ユーザで動作• コンテナイメージは脆弱性スキャンしている• だからコンテナはセキュア?
嘘を言うな!
猜疑に歪んだ暗い瞳がせせら笑う• 日々、脆弱性は発見される• ベースOS/ライブラリ/アプリケーション/パッケージ(pip/gem/npm…)の更新• ゼロデイ攻撃、マルウェアによる被害• 長期稼働時での意図しない動作
無能、怯懦、虚偽、杜撰• 定期的に実施• アプリケーションの動作確認• イメージの更新• イメージの脆弱性確認• 不正な動作を検知
どれ一つ取っても戦場では命取りとなる。• 定期的に脆弱性スキャンを行わないと実サービスに影響が発生• コンテナのランタイム検知を行うOSSは少ないWazuh、falcoなどなど• 不正なファイル更新• 不正な動作• 不正な通信• 脆弱性の検知
それらを纏めて無謀で括る• 事前にセキュリティ計画を立てる• イメージの更新タイミング• コンテナの寿命• コンテナデプロイの容易さ• 外側からのアプリケーション動作の確認• 不正通信の検知• etc…
誰が仕組んだ地獄やら、兄弟家族が嗤わせる• 定期的に以下の処理実行する仕組みが必要• イメージ再作成• イメージ検査• アプリケーション動作確認• デプロイ• コンテナの寿命を短くする• すべてを手動で行うとツライので、ある程度は自動化
お前も、お前も、お前も• 一貫した開発・セキュリティ・運用が必要• Development• どの言語、ライブラリで作成するか• アプリケーションの静的解析• 脆弱性に対するアプリケーション確認• Security• セキュリティ基準の策定• DevとOpsに対するセキュリティ対策支援• Operations• イメージアップデート、コンテナデプロイ• 監視
だからこそ、俺のために死ね!• セキュリティ施策が立てられないならお金の力で解決する!• セキュリティに強い人を雇う• コンテナセキュリティ製品の導入• AQUA Cloudnaitive Security Platform• NeuVector• sysdig platform/monitor/secure• Tufin Iris/Orca• twistlock• etc…
我々は何のために集められたのか次回「未定」