コンテナのベスト プラクティス

このページでは、コンテナ イメージのビルドと実行に関するベスト プラクティスについて説明します。

コンテナのビルド

コンテナ イメージのビルド方法は、ビルドやデプロイの速度、およびイメージの維持に必要な作業に影響します。

イメージのビルドについては、Docker のベスト プラクティスをご覧ください。

公開レジストリに関する検討事項

次の場合について注意して検討します。

公開ソースからのイメージを使用する

Docker Hub などの公開ソースからイメージを使用する場合、組織が管理していないコードがソフトウェア サプライ チェーンに導入されます。リスクを軽減するために、次のことを行えます。

  • イメージの内容を管理するために独自のイメージを作成する。
  • 標準化されたベースイメージを使用し、そのイメージ上に構築する。
  • イメージの脆弱性をスキャンし、特定した脆弱性に対処する。
  • デプロイするイメージに標準とポリシーを適用する。
レジストリの公開

レジストリ ストレージ バケットに対する読み取りアクセス権を allUsers ID に付与することで、Google Cloud プロジェクトのレジストリを公開できます。

すべてのユーザーが Google Cloud アカウントを所有している場合は、代わりに allAuthenticatedUsers ID を持つ認証済みユーザーのみにアクセスを制限できます。

レジストリを公開する前に、次のガイドラインを検討してください。

  • レジストリに保存されているすべてのイメージが一般公開できるもので、認証情報、個人データ、機密データが公開されないことを確認します。
  • ユーザーがイメージを pull すると、下り(外向き)ネットワークに対して料金が発生します。大量のインターネット ダウンロードのトラフィックが予想される場合は、関連する費用を検討してください。
  • デフォルトでは、プロジェクトのユーザーあたりの割り当てに制限はありません。乱用を防ぐため、プロジェクト内のユーザーあたりの割り当ての上限値を設定します。

未使用イメージの削除

未使用のコンテナ イメージを削除してストレージ コストを削減し、古いソフトウェアを使用するリスクを軽減します。gcr-cleaner など、この作業に役立つツールが数多く用意されています。gcr-cleaner ツールは Google の公式プロダクトではありません。

コンテナ セキュリティの評価

Center for Internet Security(CIS)には、Docker コンテナのセキュリティを評価する Docker ベンチマークがあります。

Docker には、Docker Bench for Security というオープンソース スクリプトがあります。このスクリプトを使用して、実行中の Docker コンテナを CIS Docker ベンチマークに対して検証できます。

Docker Bench for Security は、CIS Docker ベンチマークの多くの項目を確認するのに役立ちますが、スクリプトでは検証できない項目もあります。たとえば、コンテナのホストが強化されているか、コンテナ イメージに個人データが含まれているかどうかは確認できません。ベンチマークのすべての項目を確認し、追加の確認が必要な項目を特定してください。

デプロイの保護

安全なソフトウェア サプライ チェーンを構築する方法と、Google Cloud で脆弱性スキャンと Binary Authorization を使用してデプロイのポリシーを定義し適用する方法について説明します。

ソフトウェア サプライ チェーンの保護について説明した動画もご覧ください。