
ECR の拡張スキャンでサポートされているプログラミング言語でも UNSUPPORTED_IMAGE が発生するときの対処方法
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
ECR の拡張スキャン機能を使用して、コンテナイメージの脆弱性スキャンを実行しています。先日、Python のコンテナイメージを更新したところUNSUPPORTED_IMAGEでスキャンが失敗しました。
AWS公式ドキュメントを確認しましたが、Python はサポートされており、他の Python のコンテナイメージは問題なくスキャン実行できています。
なぜサポートされているはずのコンテナイメージでUNSUPPORTED_IMAGEが発生するのでしょうか?対処方法を教えてください。

どう対応すればいいの?
コンテナイメージのオペレーティングシステム(ベースイメージ)を確認してください。
ECR の拡張スキャンでは Python を含む複数のプログラミング言語をサポートしていますが、オペレーティングシステムもサポート対象である必要があります。そのため、サポートされているプログラミング言語のコンテナイメージでも、サポート対象外のオペレーティングシステムを使用している場合はUNSUPPORTED_IMAGEが発生します。
現時点で拡張スキャンでサポートされているオペレーティングシステムは限定されており、すべてのオペレーティングシステムがサポートされているわけではないためご注意ください。
サポート対象外のオペレーティングシステムを利用している場合は、サポート対象のオペレーティングシステムへの変更をご検討ください。
なお、コンテナイメージのオペレーティングシステムはDockerfileのFROM 行(ベースイメージの指定行)やコンテナを実行しコンテナ内の/etc/os-releaseファイルなどから確認できます。
やってみた
サポートされている Alpine Linux 3.15 と現時点でサポートされていない Alpine Linux 3.16 のコンテナイメージで、オペレーティングシステムの確認と、スキャンを実行してみます。
- Alpine Linux 3.15:python:3.11-rc-alpine3.15
- Alpine Linux 3.16:python:3.11-rc-alpine3.16
オペレーティングシステムの確認
Docker コマンドから各イメージを実行し、オペレーティングシステムとプログラミング言語を確認します。
$ docker run -it python:3.11-rc-alpine3.15 /bin/sh / # / # cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.15.4 PRETTY_NAME="Alpine Linux v3.15" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://bugs.alpinelinux.org/" / # / # python -V Python 3.11.0b3
$ docker run -it python:3.11-rc-alpine3.16 /bin/sh / # / # cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.16.0 PRETTY_NAME="Alpine Linux v3.16" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues" / # / # python -V Python 3.11.0b3
スキャン結果の確認
上記コンテナイメージを拡張スキャンを設定した ECR にプッシュして、スキャンステータスを確認します。
python:3.11-rc-alpine3.15のスキャン結果

python:3.11-rc-alpine3.16のスキャン結果

同じプログラミング言語のコンテナイメージですが、オペレーティングシステムが異なるとUNSUPPORTED_IMAGEが発生することが確認できました。
参考資料
Amazon ECR 拡張スキャンを有効にするときは、次の事項を考慮する必要があります。
Amazon Inspector では特定のオペレーティングシステムのスキャンがサポートされます。






