- アプリケーションをDockerイメージとして作成してデプロイしていると、重いベースイメージを使うことで一度ダウンロードするのに時間がかかったり、機密データを含んでセキュリティ上の問題が生じたりすることがある
- Dockerイメージをより軽量かつ安全にする方法
- イメージサイズを減らす
- Dockerイメージが軽くなるほど、アプリケーションのビルドやデプロイの速度が上がる
- そうすると、より頻繁に多くデプロイできるようになり、開発者の生産性が向上する
- 方法
- マルチステージング手法: ステージを複数作成し、それぞれ別々にビルドして、最も軽いイメージに結果を統合する方式
RUN コマンドをできるだけ少なく使う方法: RUN コマンドは個別のイメージを作る。これを最小限にするため、RUN コマンド1回でできるだけ多くのスクリプトを実行する
.dockerignore で不要なソースコードを除外する
README.md やテストコードは、実際のアプリケーションをビルドする際には不要
- API認証トークンのような機密情報を含む
.env ファイル、.pem 秘密鍵ファイル、Gitコミット履歴を含む .git ディレクトリはDockerイメージに含めてはならない
- こうしたファイルをDockerイメージに含めないように
.dockerignore ファイルを作成する
- 安全なイメージを作る
- Dockerイメージがroot権限を持っていると、ハッキングされた際に危険になる可能性がある
- 方法
- 正確なイメージバージョンを使う: バージョンを指定しないと
latest バージョンが自動で取得され、状況によって実行内容が変わる可能性がある
/etc への書き込み権限をなくす: /etc はシステム設定ファイルやスクリプトが入ったディレクトリ。アプリケーションが通常これを変更することはないため、書き込み権限をなくすのが望ましい
- すべての実行ファイルを削除する: Goの場合、実行ファイル1つだけで動かせるため、潜在的なリスクがある他の実行ファイルをすべて削除する
- 一般ユーザーに切り替える: rootアカウントはシステムのすべてを変更・制御できる。最小限の権限だけを持つユーザーを作成し、そのユーザーでのみアプリケーションが動作するようにする
- 軽量なDockerイメージは、CI/CDパイプラインとアジャイル手法が組み合わさると相乗効果を発揮する
- 安全なDockerイメージによりビジネスを保護し、リスクを事前に防ぐことができる
まだコメントはありません。