説明
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 で同じ作成者情報を管理します。アプリケーションの権限やセキュリティを変更する設定ではありません。