はじめに
「3分でできる!最高のDockerfileを書いたあとにやるべき1つのこと」で告知したVuls祭り #5で、コンテナのセキュリティについてお話ししました。
しかし15分程度の時間だと、説明不足な点もあったので、資料を修正しつつ、補足コメントを入れました。
パートごとにタイトルを付けたので、Qiitaの目次を参考にするとわかりやすいと思います。Dockerイメージの簡単な説明 & Dockle内部でやっていることの解説 が本記事のメインパートです。
参考になったら、Vuls/Dockle/Trivyのスターお願いします! 特にDockleは後発でスター数が少なく、まずはスター1Kを目指してます。
Vuls Dockle Trivy
なお、タイトルの元ネタはこちらです。震えてくださってありがとうございます。 @nagashi_ma_w
- 2019.6.20: いくつかスライドを削除し、順番を入れ替えました。オリジナル版はSpeakerDeckの資料で確認できます
- 2019.7.10 実際にPublicなコンテナイメージに対しての実行結果をサイトにまとめました。 DockerHubで公開されているコンテナが安全か確かめてみた結果 に操作方法をふくめ、まとめてあります。
スライド
コンテナ導入実態と、セキュリティの現状
- このパートでコンテナの導入状況を聞いたら9割以上の人が手を上げました。Vulsを利用するところはかなり堅い(既存の資産が強い)企業が多いので意外なのとともに、コンテナの普及率を物語っていました
- IDC Japanの資料は2018年版の資料です。2019年版は高額で手が出せなかった
- セキュリティインシデント情報は2018年の情報を元にした資料。詳細はこちら。
利用できるセキュリティの指標と、対策ツールたち
- CISベンチマークはこちら。CIS(The Center for Internet Security)が専門家の意見を元に発行している資料です
- まわりの企業を見ても、イメージはプライベートレジストリにおいて、クラウドのマネージドサービスで運用というパターンが多いと思うのですがデータはありません
Dockle/Trivyでチェックできること
- 🔺は独断です。「安全なソースから〜」の項目は厳密には❌なのですが、直接インストールしても脆弱性チェックはできる、という意味で甘めに🔺にしてます。
Dockerイメージの簡単な説明 & Dockle内部でやっていることの解説
- 詳細はこちらの資料。イメージの説明は66ページからはじまります。
今回は概要だけお伝えしましたが、イメージに保存される各ファイルの形式や情報などもまとまっています。
Docker might not be your friend. Trojanizing Docker images - OS情報のパース, パッケージ情報のパースの部分を僕が担当してます。TrivyでもVulsでも利用されています。
Vulsでも一部の機能を実装したよ
![slide30]
(https://speakerd.s3.amazonaws.com/presentations/5dd14e96b7214a3aa099794a2899fe23/preview_slide_30.jpg?523478)
- OS/パッケージの脆弱性の検知はVulsの機能を使っていて、Trivyを利用してません。ライブラリの検知部分ではTrivyを利用しています。
- ライブラリの検知は割とアツイ機能!! だが、時間なくてほぼスキップした内容。
あの現場でVulsのデモが正常に動くのは、 @kotakanbe@github と僕だけだったと思うので、デモすればよかったと思いました。
未発表資料
最後に
スライド中でも触れてますが、ここで扱っているのはイメージに関することだけです。
Host設定/DockerDaemon設定/Runtimeの設定のいずれもやらなければならないことなので、このあたりの知見もふくめて情報をまとめたいです。