Slide 1

Slide 1 text

Dockerコンテナのセキュリティを考えてみよう 2024 author: GANGAN

Slide 2

Slide 2 text

About me 2024 author: GANGAN

Slide 3

Slide 3 text

About me 岩丸慎平 (@gangan_nikki) AI Webアプリケーションの開発・運用やってました (Vue.js, Java, AWS, k8s, etc.) Nuxt, UnJS Core contributor, etc. Vue・Nuxt 情報が集まる広場 / Plaza for Vue・Nuxt. Publication Owner 2024 author: GANGAN

Slide 4

Slide 4 text

About me (学生時代) 北九州高専(制御系) → 鹿児島大学・大学院(情報系) → 東京でAI Webアプリ開発 7,8社ほどインターンに参加 学生時代に200本以上、現在300本弱の技術記事を執筆 逆求人系の会社で就職支援・登壇なども行ってました 2024 author: GANGAN

Slide 5

Slide 5 text

なお、本日Nuxt・フロントの話はしないです。 2024 author: GANGAN

Slide 6

Slide 6 text

本日はDockerの話をします。 2024 author: GANGAN

Slide 7

Slide 7 text

皆さん、Dockerを使ったことありますか? ✋ 2024 author: GANGAN

Slide 8

Slide 8 text

コンテナはWebアプリケーションで広く使われて いる AWS: ECS (Elastic Container Service) Google Cloud: CLoud Run Microsoft Azure: Azure Container Apps, Azure Container Instance, etc. Kubernetes: コンテナの運用管理・スケーリングをサポートするOSS 2024 author: GANGAN

Slide 9

Slide 9 text

皆さん、環境構築は楽しい/好きですか? ✋ 2024 author: GANGAN

Slide 10

Slide 10 text

環境構築は大体しんどい 何回も同じ作業を繰り返す必要がある 同じものをインストールしてもバージョン違いで詰むことがある 共同PCの場合、環境差分でエラーが発生する PC1でもPC2でも同じ環境を構築したい 2024 author: GANGAN

Slide 11

Slide 11 text

Upgrade to Pro — share decks privately, control downloads, hide ads and more … Docker との戦い ~研究室インフラおじさんへの… gangan December 20, 2019 Technology 0 99 2024 author: GANGAN

Slide 12

Slide 12 text

出典: https://matsuand.github.io/docs.docker.jp.onthefly/get-started/overview/ 2024 author: GANGAN

Slide 13

Slide 13 text

Dockerfileの例 (Python) Dockerfile というものを用意することで 環境をコード化することが可能 強強エンジニアが作った環境のベストプラクティ スを流用できる 言語、ライブラリのバージョンを指定して明示す ることができる FROM python:3.7.5 RUN mkdir /var/www # workdir の指定 WORKDIR /var/www # 依存Python ライブラリ一覧コピー COPY requirements.txt ./ # 依存Python ライブラリインストール RUN pip install --no-cache-dir -r requirements.txt WORKDIR /var/www/src CMD ["uwsgi","--ini","/var/www/uwsgi.ini"] 2024 author: GANGAN

Slide 14

Slide 14 text

これで環境の冪等性を担保することができますね 2024 author: GANGAN

Slide 15

Slide 15 text

めでたしめでたし 2024 author: GANGAN

Slide 16

Slide 16 text

セキュリティおじさん 「そのコンテナ、セキュリティ大丈夫? 🤔」 2024 author: GANGAN

Slide 17

Slide 17 text

Q. では、どんなところがリスクなのでしょうか? 2024 author: GANGAN

Slide 18

Slide 18 text

考えうるセキュリティリスク 1. OSのバージョンは問題ないか 2. ライブラリのバージョンは最新か 3. 脆弱性を放置していないか 4. 権限はどうなっているのか => 不備があると犯罪の踏み台や顧客情報の漏洩などに繋がる => OSレベルの知識が要求される 2024 author: GANGAN

Slide 19

Slide 19 text

適切な対応 1. 適切なイメージを選定しましょう 2. マルチステージビルドを利用しましょう 3. 不要なものは積極的に削除しましょう 4. CI/CDで脆弱性を監視しましょう 2024 author: GANGAN

Slide 20

Slide 20 text

適切な対応 1. 適切なイメージを選定しましょう -> LinuxではなくPython, NodeJSなどに限定する -> alipine、slim、distroressなど最適なサイズのイメージを選ぶ 2. マルチステージビルドを利用しましょう -> パッケージのビルド時に生成される不要なものを含めないように -> 必要に応じてShellすら削除する 3. 不要なものは積極的に削除しましょう -> 開発時のみ使うツール、スクリプト、ライブラリ、本番環境で必要ですか? 4. CI/CDで脆弱性を監視しましょう -> Trivyや各クラウドが用意するチェックツールを利用する 2024 author: GANGAN

Slide 21

Slide 21 text

Dockerを見ながら… 1. 適切なイメージを選ぶ 2. alipine, slim, distroressなど、適切なイメージを 選ぶ 3. 「開発で必要なもの、本番で必要なものは異な る」 # syntax=docker/dockerfile:1.4 FROM --platform=$BUILDPLATFORM python:3.10-alpine AS build WORKDIR /app COPY requirements.txt /app RUN --mount=type=cache,target=/root/.cache/pip \ pip3 install -r requirements.txt COPY . /app ENTRYPOINT ["python3"] CMD ["app.py"] FROM builder as dev-envs RUN <

Slide 22

Slide 22 text

便利なツールは適切に利用することで効果を発揮 しやすい 2024 author: GANGAN

Slide 23

Slide 23 text

実際のセキュリティ対応事例 2024 author: GANGAN

Slide 24

Slide 24 text

Javaのセキュリティ対応に追われた話… タイトル「Amazon CorrettoイメージでJava11+Gradle+Spring Bootプロジェクトを動かす: Java SE脆弱性対応」 https://tech-blog.optim.co.jp/entry/2023/02/16/100000 (時間あれば記事を見ながら話したい) 2024 author: GANGAN

Slide 25

Slide 25 text

さいごに 2024 author: GANGAN

Slide 26

Slide 26 text

About me 岩丸慎平 (@gangan_nikki) AI Webアプリケーションの開発・運用やってました (Vue.js, AWS, k8s, etc.) Nuxt, UnJS Core contributor, etc. Vue・Nuxt 情報が集まる広場 / Plaza for Vue・Nuxt. Publication Owner 2024 author: GANGAN

Slide 27

Slide 27 text

Vue・Nuxt 情報が集まる広場 / Plaza for Vue・Nuxt. Vue.js / Nuxtユーザーが気軽に 情報を得られる場所を目指して作成しました 初学者がVue2系、Vue3系で迷わないよう に、初学者がとりあえず最初に調べてみる場 所を目指して広場という名前にしています 執筆してくれる方は随時募集中です https://github.com/shinGangan/comm_vue_nuxt 2024 author: GANGAN

Slide 28

Slide 28 text

おしまい 2024 author: GANGAN