[アップデート] Allowed AMI機能とAWS Configが統合し、許可されていないAMIで起動されたインスタンスが検出できるようになりました
こんにちは!AWS事業本部のおつまみです。
AWS Config でアップデートがあったのでご紹介します!
3行まとめ
- EC2インスタンスの起動に使用されるAMIを管理するための「Allowed AMI」機能がAWS Configと統合され、許可されていないAMIで起動されたインスタンスを自動検出できるようになった
- この統合により、監査モードで検出した非準拠インスタンスを視覚的に確認でき、セキュリティ管理者の負担軽減とコンプライアンス対応の強化が実現する
- 大規模マルチアカウント環境を持つ企業にとって特に有用で、組織全体のセキュリティガバナンスを効率的に向上させることができる
解説
Allowd AMIとは何か?
re:Invent2024で発表された新機能であり、組織内で使用可能なAMIを制限する機能です。この機能により非準拠 / 未承認の AMI を誤って使用してしまうリスクを軽減することが可能となります。
この機能には、「監査」と「有効」のモードがあり、「監査」モードでは、実際にアクセスを制限することなく、どのAMIが「Allowed AMI」の基準から外れているのかを検知します。これにより、リスクのない評価期間を設けることができます。
特徴についてはこちらの記事をご参考ください。
今まで何が困っていたか?
これまで、組織内で許可されたAMIを識別することは困難であり、セキュリティやコンプライアンスの観点から問題がありました。特に、許可されていないAMIで起動されたEC2インスタンスを監査し、Allowed AMI を有効にした場合の影響を評価するには、特別にカスタムスクリプトを作成する必要がありました。
有名なスクリプトとしては、Datadog の whoAMI-scanner が挙げられます。詳細はこちらの記事をご参考ください。
今回のアップデートで何が嬉しいか
今回のアップデートにより、AWS Configのマネージドルール「ec2-instance-launched-with-allowed-ami」を使用して、許可されていないAMIで起動されたEC2インスタンスを自動的に検出できるようになりました。
「非準拠」となる検知条件は以下の通りです。
- Allowed AMIの設定が有効である
- 実行中または停止中のEC2インスタンスが、AMIがAllowed AMIの基準を満たしていない
これにより、組織全体で使用されているAMIの可視化と管理が格段に容易になります。
さらに、EventBridgeやSNSと連携することで、非準拠インスタンスが検出された際の自動通知や修復アクションのトリガーも可能になり、セキュリティインシデントへの対応時間を大幅に短縮できます。
やってみた
実際に他アカウントから共有されたAMIで起動したインスタンスがAWS Configルールで非準拠となるか確認してみます。手順は以下の通りです。
- AWS Config ルールの作成
- Allowed AMI の設定
- 共有された AMI で EC2 起動
- AWS Config ルールにて非準拠確認
前提条件
- AWS アカウントへのアクセス権限として管理者権限を持つ IAM ユーザーまたはロールを使用してること
- AWS Config が有効化されていること
手順
1. AWS Config ルールの作成
- 「AWS Config」にて「ルール」を選択し、「ルールを追加」ボタンをクリックします
- 「ルールの作成」画面で以下を設定します
- 「AWS マネージドルール」を選択
- 検索ボックスに「ec2-instance-launched-with-allowed-ami」と入力し、ルールを選択後、「次へ」をクリックします
- 「ルールの設定」画面、「確認と作成」画面はデフォルトのままで「保存」をクリックします
2. Allowed AMI の設定
- 「EC2」にて、 ダッシュボード > 「Allowed AMIs」 をクリックします。
- 未設定だと無効になっているため、、「管理」をクリックします。
- 「Allowed AMIs settings」を「Audit mode」(監査モード)、「AMI criteria」に公式ドキュメントを参考に JSON を入力し、最後に「更新」をクリックします。今回はAMIを共有するアカウントも許可されていないとしたいため、
amazon
とaws-marketplace
のみを許可設定としています。
- 「更新」をクリックし、「Successfully enabled audit mode for Allowed AMIs.」が表示されたら変更完了です。
3. 共有された AMI で EC2 起動
- 「EC2」 > 「AMI」 にて、他アカウントから共有されたAMIを選択します。許可されていないので、
Allowd AMI
がいいえ
になっていることが確認できますね。「AMIからインスタンスを起動」をクリックします。
- インスタンス起動画面でも「許可されていません」赤字で出力されているのが、良いですね。このまま任意の設定でインスタンスを起動します。
- インスタンスが正常に起動することを確認します
4. AWS Config ルールにて非準拠確認
- AWS Config サービスに戻ります
- 作成したルールにて、「アクション」 > 「再評価」をクリックします。
- 画面を更新すると、許可リストにない AMI から起動した EC2 インスタンスは「非準拠」と表示されることがわかりました。
注意事項
- AWS Configルール作成のみでは非準拠インスタンスの特定のみとなります。
- 非準拠を通知したい場合は追加実装が必要となります。
- 検知対象はEC2のみでAMIは検知できません。許可されたAMIを保持していないかはブログ冒頭でお伝えした whoAMI-scannerを使用することを推奨します。
最後に
今回は、Allowed AMI機能とAWS Configが統合し、許可されていないAMIで起動されたインスタンスが検出できるようになったことを紹介しました。
この統合により、EC2インスタンスが許可されていないAMIを使用しているかどうかを一目で確認できるようになり、セキュリティ管理者の負担が大幅に軽減されます。今後はAWS Security Hubとも統合しそうだなと思いました。
EC2インスタンスを誰でも起動できるような状態になっているアカウントをお持ちの方はぜひ設定していただき、セキュリティを強化していただきたいです!
以上、おつまみ(@AWS11077)でした!