組織内のアンマネージド/マネージドEC2インスタンスを横断的に確認する方法3選
はじめに
管理アカウントから組織内のアンマネージド/マネージド(SSM管理対象/非管理対象)EC2インスタンスを横断的に確認する方法をいくつかまとめました。
委任管理アカウントから容易にセットアップできる方法のみを紹介します。
組織内のアンマネージド/マネージドインスタンスを横断的に確認する方法として、以下の3つが考えられます。
- AWS Systems Manager統合コンソール(SSM統合コンソール)
- AWS Resource Explorer
- AWS Security Hub のコントロール[SSM.2]
それぞれ解説します。
1. SSM統合コンソール
SSM統合コンソールを利用することで、委任管理アカウントから、組織内のすべてのEC2インスタンスの管理状態(マネージド/アンマネージド)を一元的に把握することが可能です。
また、アンマネージドインスタンスの原因を確認し、是正することも可能です。
その他の機能として、マネージドインスタンスのOSの割合やSSM Agentのバージョンなども確認できます。
設定方法や詳細は以下の記事をご参照ください。
注意点として、SSM統合コンソールはSSMクイックセットアップを利用するため、SSMクイックセットアップが利用できない大阪リージョンのEC2インスタンスは把握できません。
また、AWS Organizationsの管理アカウントは集計対象外のため、管理アカウントにEC2インスタンスがある場合、集計対象外になります。
2. Resource Explorer
組織でResource Explorerを設定することで、委任管理アカウントからマルチアカウントビューを使用して、組織内のEC2インスタンスやマネージドインスタンスを確認できます。
EC2インスタンス一覧
マネージドインスタンス一覧
セットアップ方法は、SSMクイックセットアップだけでなく、AWS CloudFormation StackSetsの方法もありますので、大阪リージョンのEC2インスタンスも把握できます。設定方法は以下をご確認ください。
アンマネージドインスタンスの確認方法
マルチアカウントビューから組織内の「EC2インスタンス」と「マネージドインスタンス」が検索できますので、その差分をシェルで処理すると、アンマネージドインスタンスが確認できます。
AWS CloudShellを使用すると、1つのコマンドでアンマネージドインスタンスを横断的に確認できます。
方法は以下の記事をご参照ください。
3. Security Hub
Security Hubの「AWS基礎セキュリティのベストプラクティススタンダード」には、[SSM.1]というコントロールがあり、これはEC2インスタンスがSSMによって適切に管理(マネージドインスタンス化)されているかを確認します。
アンマネージドインスタンスであれば、コントロールが失敗します。コントロールが成功していれば、マネージドインスタンスであると確認できます。
委任管理アカウントに検出結果を集約することで、横断的に把握することが可能です。
Organizations 環境で Security Hubをセットアップする方法は以下の記事が参考になります。
セットアップによって、委任管理アカウントから検出結果を以下のようにフィルタリングすることで横断的にアンマネージド/マネージドインスタンスが確認できます。
- アンマネージドインスタンス
- 検出結果のフィルター条件
- リソースタイプ: AwsEc2Instance
- レコードの状態: ACTIVE
- コンプライアンスのステータス: FAILED
- コンプライアンスセキュリティコントロール ID: SSM.1
- 検出結果のフィルター条件
- マネージドインスタンス
- 検出結果のフィルター条件
- リソースタイプ: AwsEc2Instance
- レコードの状態: ACTIVE
- コンプライアンスのステータス: PASSED
- コンプライアンスセキュリティコントロール ID: SSM.1
- 検出結果のフィルター条件
アンマネージドインタンスの判定基準
3つの方法を紹介しましたが、注意点として、アンマネージド/マネージドインスタンスの判定基準は、それぞれのAWSサービスや機能によって異なります。
「Security Hub SSM.1」は判定基準がAWSドキュメントに記載されています。
日本語訳:このコントロールは、アカウント内の停止中および実行中のEC2インスタンスがAWS Systems Managerによって管理されているかどうかを確認します。
セキュリティとコンプライアンスの維持を支援するため、Systems Managerは停止中および実行中の管理対象インスタンスをスキャンします。
https://docs.aws.amazon.com/securityhub/latest/userguide/ssm-controls.html#ssm-1
日本語訳:Amazon EC2インスタンスがAWS Systems Manager Agent(SSM Agent)によって管理されているかどうかを確認します。EC2インスタンスが実行中でSSM Agentが停止している場合、またはEC2インスタンスが実行中でSSM Agentが終了している場合、このルールは非準拠(NON_COMPLIANT)となります。
EC2インスタンスが停止中でSSM Agentが実行中の場合、ルールは非準拠(NON_COMPLIANT)を返しません。
https://docs.aws.amazon.com/config/latest/developerguide/ec2-instance-managed-by-systems-manager.html
まとめると、ドキュメントで確認できる「Security Hub SSM.1」のアンマネージド/マネージドインスタンスの判定基準は以下の通りです。
インスタンスの状態 | SSMエージェントの状態 | コントロール結果 |
---|---|---|
稼働中 | 動作中 | 成功 |
稼働中 | 停止中 | 失敗 |
稼働中 | 未インストール | 失敗 |
停止中 | インストール済み | 成功 |
停止中 | 未インストール | 失敗 |
一方、「Resource Explorer」と「SSM統合コンソール」には、マネージドインスタンスの判定基準に関する記載がありません。
私の検証によると、SSMフリートマネージャーやSSMインベントリ、Security Hub SSM.1では、マネージドインスタンスが停止中であってもマネージドインスタンスとして評価されます。
しかし、「Resource Explorer」と「SSM統合コンソール」では、マネージドインスタンスが停止中になるとアンマネージドインスタンスとして評価されました。
委任管理アカウントのフリートマネージャーから確認できるマネージドインスタンス一覧(停止中のインスタンスもマネージドインスタンスとして評価)
委任管理アカウントから確認できる組織内のSSMインベントリ(停止中のインスタンスもマネージドインスタンスとして評価)
委任管理アカウントから確認できる組織内のSSM統合コンソール(停止中のインスタンスはアンマネージドインスタンスとして評価)
どれが適しているか
マネージドインスタンスを定期的に停止する場合は、「Security Hub SSM.1」での確認が適していると考えます。評価基準が明確であり、停止中のインスタンスもマネージドインスタンスとして適切に評価されるためです。
一方、コストを重視する場合は、無料で利用できる「Resource Explorer」が適しています。
「SSM統合コンソール」は、視覚的に管理状態を把握しやすく、OSの割合やSSM Agentのバージョンなどの追加情報も確認できる点が利点です。ただし、組織の管理アカウントや大阪リージョンのEC2インスタンスは対象外である点に留意する必要があります。
組織の要件や運用方針に応じて、最適な方法を選択するとよいでしょう。