[アップデート] 許可されていない AMI から起動された EC2 インスタンスが AWS Config のマネージドルールで検出できるようになりました
いわさです。
昨年の AWS re:Invent 2024 にて「許可された AMI」という概念が登場し、組織で許可する AMI を識別できるようになりました。主にセキュリティやコンプライアンスの目的で使われる機能です。
この機能を有効化すると AMI 一覧画面から各 AMI が許可された AMI なのかどうかを簡単に確認することができるようになります。また、EC2 インスタンスの起動画面でも結構強めで許可されていない AMI で起動しようとしているぞとアイコンが表示されます。
許可された AMI は識別だけできる監査モードの他に、許可された AMI 以外から起動できなくするモードも備わっています。
監査モードの場合だと EC2 インスタンスが許可された AMI で起動されたかどうかを次のようにインスタンス詳細から確認することも出来ます。
上記から確認するのも良いのですが、先日のアップデートで AWS Config のマネージドルールを使って、許可されていない AMI で起動された EC2 インスタンスを自動検出できるようになりました。
禁止まではせずに例外的に特定インスタンスだけ許可させたいとか、あるいは許可された AMI を有効モードに変更したが既存インスタンスの棚卸しが出来ていないとかいくつか思いつくのですが、準拠・非準拠状況が自動管理できるのは嬉しいと思います。
設定方法
検証の前提として次のように適当な AMI 許可ルールを設定しておきます。
Amazon と自分の AWS アカウント作成 AMI のみ許可してみますが、監査モードで設定します。
次に AWS Config からルールを設定してみましょう。
今回追加されたのは「ec2-instance-launched-with-allowed-ami」というマネージドルールです。
AWS Config では対象リソースを色々と絞り込んだり出来ますが、今回は全 EC2 インスタンスを対象にルールを設定しました。
パラメータとして「InstanceStateNameList」が指定できるのですが一旦無視しましょう。後述します。
設定後、早速検出されました。
許可されていない AMI から起動された 3 つの EC2 インスタンスが非準拠としてマークされています。
起動状態を指定する
上記の検出結果は次のように 3 台の EC2 インスタンスを対象にしています。
デフォルトでは全ての EC2 インスタンスが対象となるのですが、例えば EC2 が停止されている場合は検出対象外にしたい場合もあると思います。
今回追加されたマネージドルールではパラメータ「InstanceStateNameList」で検出対象とするインスタンスの起動状態を指定することが出来ます。
パラメータ値としては running と stopped を設定することが出来て、どちらも許可したい場合は設定しないあるいは、カンマ区切りで 2 つの値を入力します。
今回は停止状態の EC2 インスタンスは検出対象外としたいので、値に running を設定してみました。
再評価してみると次のように起動中で、かつ許可されていない AMI を使った EC2 インスタンスのみが検出されました。
さいごに
本日は許可されていない AMI から起動された EC2 インスタンスが AWS Config のマネージドルールで検出できるようになったので使ってみました。
インスタンス一覧の詳細画面から状況を把握していたり、手動で是正対応されていた方はこのルールを使うとかなり運用が楽になるのではないでしょうか。