天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

コンテナセキュリティ - Forkwell Library#26に参加してきた

forkwell.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

これまで Forkwell のイベントで登壇されたエキスパートの方々は、先達が記した書籍から「気づき」を得て実践し、振り返り、再現性のある「学び」として身に付けていく中で、実績を築いてこられました。

しかし、日々限られた時間の中で知識や情報をアップデートし続けるのはそう簡単ではありません。 Forkwell Library では、著者・訳者・実践者らを登壇者として招き、そんな思いを抱えた開発者の皆さまが「学びのきっかけ」を得られる勉強会を目指します。

今回の第26回目では、株式会社スリーシェイク監修のもと、2023年4月12日に発売された『コンテナセキュリティ - コンテナ化されたアプリケーションを保護する要素技術』を取り上げます。 本書は、開発者、運用者、セキュリティ専門家がセキュリティリスクを評価し、適切なソリューションを決定するために、コンテナの主要な要素技術を検証する実践的な書籍です。 今回は訳者の一人である水元平氏をお招きし、コンテナセキュリティに対する理解をより深めるためのポイントをご紹介いただきます。

会の様子

基調講演「コンテナセキュリティ」

コンテナセキュリティ本の概要

最初に書籍の紹介がありました。

本書籍はO'Reillyから出版されている書籍であり、コンテナを構成するLinux技術の話に触れている本だということでした。(Dockerやk8sの詳細は触れていない)

やや古い本(3年前の本)なので情報のアップデートは翻訳のタイミングで行っているそうで、コンテナ本としては初級〜中級、セキュリティ本としては入門〜初級レベルの本だという話がありました。

書籍構成(全体)

書籍全体のざっくりとした構成としては、

  • 1章...セキュリティの基本
  • 2-4章, 8章...Linuxの要素技術
  • 6-7章, 9-10章, 12-13章...Docker/k8sの説明

といった形になっているそうです。

書籍構成(章ごと)

書籍全体の紹介があった後は、章ごとに細かな紹介がありました。(時間の関係で幾つかの章をピックアップするような形)以下、章ごとにどのような内容が記載されているかを書いていきます。

1章...セキュリティの原則をはじめとした基本的な考え方を知れる。

3章...cgroupの説明がされている。手を動かしながら読み進めることができると良い章。tenforwardさんの連載も見ながら見るとおすすめ。

4章...Linuxのnamespaceの話がされている。3章同様に手を動かしながら読み進めると良い。最後の方にあるcontained.afの話は面白かったがアクセスできなくなっているので、GitHubを直接参照するのがおすすめ

6章...コンテナイメージの話がされている。当時はDockerドメインだったのでその前提でコンテナイメージの基礎やイメージセキュリティの話が説明されている。

7章...ソフトウェア脆弱性の話がされている。イメージスキャンや脆弱性スキャンの仕組みに関する説明がある。

9章...コンテナエスケープの説明がされている。内容としては少なめで、コンテナからの脱出方法やコンテナ-ホスト間のnamespace共有、コンテナ間のnamespace共有などの説明もある。

13章...コンテナ実行時のセキュリティに関する説明がある。(コンテナのランタイム保護)最近賑わっているeBPFやDrift Preventionの説明もある。

14章...コンテナとOWASPトップ10の話がある。ただ、アプリケーションセキュリティのOWASPトップ10と結びつけるのはやや無理矢理感がある。

コンテナセキュリティの理解を深めるために

書籍内容を踏まえた上で、コンテナセキュリティの理解を深めるための方法の説明がありました。

  • セキュリティ対策の効果、重要性を脆弱性や攻撃手法から深める
  • セキュリティ対策の優先順位づけ(侵入対策、検知、緩和策)を考える

また、コンテナ環境を狙うマルウェアを知ることも重要だということで、DokiやKinsingなどの理解を深めた行くことが重要だという話です。

有用な参考資料としては、乗っ取れコンテナ!!のセッションや脅威モデリングで考えるKubernetes セキュリティ攻撃テクニックとセキュリティ対策のまとめあたりがおすすめできるということです。

おすすめ書籍

本書籍以外のおすすめ書籍として以下が紹介されていました。

www.amazon.co.jp

www.amazon.co.jp

Q&A

発表の後はQ&Aがありました。以下、Q&Aの内容を常体かつ一問一答形式で記載していきます。

実際の運用でコンテナセキュリティを継続して対処していくのはかなり手間だが、コンテナセキュリティ製品はあるのか?

Trivyは好き。使いやすくて対応範囲が広いツールが好きだが、最近はあまり目新しいものはない。

実行中のコンテナセキュリティのベストプラクティスは何だと思うか?

色々な観点がありかなり悩ましい。

侵入対策としてはアクセスできる人やネットワーク数を減らすことが挙げられるだろうし、検知でいうとスキャンが挙げられるだろうし、緩和策だと権限を小さくする話などが出てくるとは思う。ただし、個々人の環境次第な部分はあるのでベストプラクティスといえるのかは難しい。

取り組みやすさだけで考えるならCI/CDや脆弱性スキャンみたいな部分になると思う。

脆弱性/セキュリティの最新情報やトレンドをどのように集めるのか?

有識者の力や社内の有識者を借りてTwitterやニュース記事を取ってくる。

Fargateのラインタイム暴防御のおすすめはあるか?

振る舞い検知ツールとかにはなると思うが直接パットは答えられない。デプロイ時のポリシーチェックで権限を落としたり振る舞い検知の話はあるのかなと思う。

コンテナ技術に触り始めたばかりの人にはどのような書籍がいいのか?

本書の前に読みたい本という意味だと、Dockerやk8sの入門書を読むのがよいのかなと思う。なお、コンテナセキュリティの本は全然ない。

imageのセキュリティスキャンのやり方、脆弱性対応のプロセスに悩んでいる。ベストプラクティスはあるか?

ベストプラクティスというのは難しい。
CI/CDパイプラインを組んでいると思うが、まずDockerファイルで検知できるのならその時点で差込できると良い。リポジトリ上のイメージは定期スキャンになると思う。実行イメージは、ツールもあるが個人的な経験的には負荷が高すぎるような印象は持っている。(実行イメージはリリースサイクルにもよる)

trivyのようなツールで拾いきれないような脆弱性が発生する場合はどのように検知・管理しているのか?

パッケージマネージャー外のツールを入れるのをやめてほしいという話をすることになると思う。

アプリケーション開発者が意識しなければならないコンテナセキュリティは?

外部から直接アクセスという意味であれば、SQLインジェクションなどは普通に気にするのかなと思う。

プライベートネットワーク内で稼働しているコンテナは、他アプリケーションに自由にアクセスできないようにするみたいなところは普通に気にすると思う。

また、Dockerファイルを作っているならそこのセキュリティは必ず気にしないといけないはず。

ベースのコンテナイメージの脆弱性を解消するためにはどこまでタグのバージョンを上げればよいのか?

trivyなどを今一度かけてみるみたいな形になると思う。

コンテナに対する攻撃のデモはあるか?

ぱっとわからないが、もし見つけたら後ほど共有する。

実際にコンテナセキュリティの弱さが原因で生じたインシデント事例があったら教えてほしい

見たことがない。ただ、見たとしても事例を教えることはできないと思う。

会全体を通した感想

コンテナセキュリティの話は、本にしてもイベントにしてもなかなか知る機会が少なかったので、非常に貴重なイベントだと感じました。

水元さんの説明が非常にわかりやすく、Q&Aでも色々な前提を置いた上での回答をしてくれて助かりました。