Dockerイメージを軽量かつ安全に作る
(insight.infograb.net)- アプリケーションを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イメージによりビジネスを保護し、リスクを事前に防ぐことができる
まだコメントはありません。