MAINTAINER 命令の使用

非推奨の MAINTAINER 命令を LABEL に置き換え、イメージのメタデータを管理してください。

説明

MAINTAINER は従来の Dockerfile でイメージの作成者を記録する命令でしたが、現在は非推奨です。LABEL を使うと、作成者、チーム、リポジトリ、バージョンなどのメタデータを柔軟に管理できます。

直接的なセキュリティ脆弱性というより、保守上の問題です。メタデータの管理方式が混在すると、イメージの保守や自動化ツールとの連携が難しくなる場合があります。

想定される影響

  • 古い記述方式が残り、保守基準が不統一になる場合があります。
  • イメージのメタデータを読み取るツールで追加の対応が必要になる場合があります。

対処方法

  • MAINTAINER の代わりに LABEL を使い、作成者や管理情報を宣言してください。
  • 必要なメタデータのキーと値を整理し、利用するツールとの互換性を確認してください。公開されるイメージのメタデータに秘密情報を含めないでください。

例

作成者メタデータの表現だけを比較します。app ディレクトリには、対象イメージで実行できる server ファイルが必要です。

変更前

dockerfile
FROM alpine:3.20

MAINTAINER devops@example.com
COPY app /app
CMD ["/app/server"]

変更後

dockerfile
FROM alpine:3.20

LABEL maintainer="devops@example.com"
COPY app /app
CMD ["/app/server"]

補足:

  • 変更前: 非推奨の MAINTAINER 命令を使用しています。
  • 変更後: LABEL で同じ作成者情報を管理します。アプリケーションの権限やセキュリティを変更する設定ではありません。

参考資料