【Amazon Inspector】【指摘対応】apt-get upgradeがCodeBuildでエラーになる

フロントエンド/バックエンドをまとめてFargateで運用 + CICDにCodePipelineを使用してDeployするアプリをAmazon Inspectorの脆弱性診断にかけて、その指摘対応をした時の話。

指摘事項とその対応方法の確認

まずはどういう指摘があったのかをAmazon Inspectorの管理コンソール画面から確認する。今回はFargate上のアプリでECRのイメージに対するScan診断だったため、「Findings → By container repository」で対象のアプリを選択。一覧から指摘事項の管理番号のリンクをクリックすると、画面右側に指摘の詳細が表示される。

この中に「Remediation(対策)」という項目があり、ここを見ると是正にどういうアクションが必要かが記載されているので、基本的にはこの情報をもとに対応していく、という進め方になります。

今回ハマったポイント

今回のケースではLinux kernelのバージョンに関連する指摘が多く、「Remediation(対策)」に「apt-get update && apt-get upgrade」具体的なコマンドが掲載されていたので、これをそのままDockerfileに「RUN apt-get update && apt-get upgrade」と追記したところエラーとなり(「apt-get update」の方は問題ない)、何か具体的な理由も書かれていないので手探りであれこれ試行錯誤してハマりました。

解消方法

この「apt-get upgrade」はユーザー認証が必要で、そのままでは通らないらしく、以下のような記述に変更することで解消しました。※「ENV DEBIAN_FRONTEND noninteractive」をセットすることで会話モードをオフにし、「apt-get」に「-y」を付与することでユーザー認証を自動実行できる

ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get -y upgrade

Take Away

Amazon Inspectorで提示してくれている「Remediation(対策)」は、基本方針としては大いに参考にはなるけど、そのままでは解消しないケースもあり、多少の調整・試行錯誤が必要になることもある、ということでご参考に頂ければ幸いです。

以上!