【アップデート】Amazon InspectorでBottlerocket OSの脆弱性をスキャン・検知できるようになりました

2022.09.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

prismatixのとばち(@toda_kk)です。

脆弱性検知のためのAWSサービスであるAmazon InspectorがBottlerocket OSのサポートを開始しました!

Bottlerocketは、AWSが中心となって開発・提供しているコンテナ実行に特化したLinuxベースのOSです。セキュアかつ軽量に保たれている点が特徴です。

Bottlerocketに関する詳細情報や、実際のコンテナサービスにおける利用については、下記の記事などをご参照ください。

Bottlerocketはコンテナワークロードをセキュアに実行できるOSであるものの、これまでAmazon Inspectorによる脆弱性スキャンに対応していなかったようです。下記のIssueを見ると、2020年3月には要望が上がっていました。

今回のアップデートによって、Bottlerocketバージョン1.7.0以上かつAWS商用リージョンにおいて、OS上の脆弱性をAWSサービスによって検知できるようになり、コンテナワークロードをよりセキュアに保つことができるようになりました。Issueの作成から2年以上が経ち、要望のコメントをしていた人も喜び泣いているようです。

Bottlerocketにおける脆弱性スキャンの仕組み

上記のアナウンスでは次のように記載されています。

Amazon Inspector is a vulnerability management service that scans EC2 and container workloads for software vulnerabilities and unintended network exposure. Amazon Inspector leverages the AWS System Manager (SSM) agent to scan for vulnerabilities. In Bottlerocket hosts, the SSM agent runs within the control host container, so you need to make sure it is enabled in your hosts.

「Inspectorでは脆弱性スキャンのためにSSMエージェントを利用する」という旨が記載されているため、AWS re:Invent 2021で発表されたアップデートである、いわゆる"Inspector v2"による脆弱性スキャンと検知が行われるようです。

また、Bottlerocketにおいてデフォルトでは"Control Container"と呼ばれるコンテナが起動されます。これは、コンテナオーケストレーションとは分離された形でSSMエージェントを実行するための仕組みです。

そして、InspectorではControl Containerとして実行されているSSMエージェントを利用することで脆弱性スキャンを実現しています。

そのため、InspectorでBottlerocketの脆弱性スキャンを実行したい場合は、Control Containerを有効にする必要があります。

実際にInspectorでBottlerocketの脆弱性をスキャンしてみた

それでは、実際にInspectorでBottlerocketの脆弱性スキャンを実行してみます。

まず、Bottlerocketを利用するAmazon EC2インスタンスを起動します。AWS公式から提供されているAMIはECS-OptimizedもしくはEKS-Optimizedのみのようなので、今回はECS-Optimized AMIを利用します。

最新のECS-optimized AMI IDは、パブリックに公開されているSystems Manager Parameter Storeに登録されています。Bottlerocketの場合は、下記コマンドで取得できます。

aws ssm get-parameter --name "/aws/service/bottlerocket/aws-ecs-1/x86_64/latest/image_id" --query Parameter.Value --output text

x86_64の2022年9月30日時点での最新であるami-00aa50f9b226f030eを利用しました。

また、InspectorではSSMエージェントを通じて脆弱性スキャンを実行するため、対象のEC2インスタンスがSSMで管理できる状態になっている必要があります。EC2にアタッチするIAMロール(インスタンスプロファイル)の権限や、ネットワークの状態を適切に設定しておく必要があります。詳細については、下記の記事などをご参照ください。

Inspectorで「EC2のスキャン」を有効にしていれば、EC2インスタンスの起動後しばらく経つと脆弱性スキャンが自動で実行されます。

オペレーティングシステムが「BOTTLEROCKET」として認識されているのがわかります。

検知された内容を確認してみると、OSの脆弱性というよりはAWS上のネットワークの設定におけるリスクが検知されていました。セキュアなOSであることを主張しているだけあって、さすがですね。

Inspectorを利用することでBottlerocketの脆弱性を簡単にスキャンできる

Bottlerocketのバージョンをなるべく最新に追従していれば、Inspectorを有効化するだけで簡単に脆弱性スキャンを実行することができます。

すでにAmazon ECSやEKSのデータプレーンにおいてBottlerocketを利用している場合は、ぜひInspectorを有効化してみてください。コンテナワークロードを簡単によりセキュアに保つことができるかと思います。

以上、prismatixのとばち(@toda_kk)でした。