こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。
今回は以下の記事の続きをしてみようと思います。
AWS Configを使ってEC2にアタッチされずに残存してしまっているEBSを自動検出⇒SSMで自動削除という流れを実施していきたいと思います。
環境イメージ
用語
SSM(AWS Systems Manager)
EC2インスタンスやオンプレミスサーバー、その他のAWSリソースの構成管理やパッチ適用、自動化などを一元的に行うサービス。
以下のようなサービスを提供している。
- Distributor: 独自ソフトウェアやエージェント(CloudWatch Agent等)をパッケージ化し、複数のサーバーへ一括配布・インストールする機能。
- Fleet Manager: サーバー群の稼働状況やファイルシステム、ログなどをGUIで一元的に確認・操作し、RDP/SSH接続も可能な管理コンソール。
- Patch Manager: OSのセキュリティパッチ適用を自動化し、適用ルールの定義(ベースライン)や適用状況のレポート管理を行う機能。
- Run Command: サーバーにログイン(SSH/RDP)することなく、安全かつ一括でOSコマンドやスクリプトをリモート実行する機能。
SSM Automation ランブック
「EC2を起動する」「DBのスナップショットを取る」といった一連のAWS操作手順を定義したドキュメント(YAML/JSON形式)のこと。
AWS Configで検知した「違反リソース(例:未使用EBS)」に対して、このランブックを自動実行させることで、自動修復(Auto Remediation)が可能になる。
ハンズオン
IAM Roleの準備
Config(SSM Automation)が使用するRoleを作成していきます。
IAM Roleの管理画面からロールを作成を押下します。

AWSのサービスからSystem Managerを選択します。

EBSを消すので、そのPolicyをアタッチします。
今回はEC2FullAccessを指定しました。

AWS-Config-auto-delete-roleという名前でRoleを作成します。

Config
上記の記事の通りConfigをセットアップします。
セットアップ後、管理画面からルール > ec2-volume-inuse-checkと遷移して詳細画面を開きます。
アクションから修復の管理を押下します。

以下の内容で設定をしていきます。他はデフォルトのままで変更の保存を押下します。
修復アクション(≒SSMドキュメント、SSM Automationランブック):AWSConfigRemediation-DeleteUnusedEBSVolume
リソースIDパラメータ:VolumeId
パラメータのAutomationAssumeRole:arn:aws:iam::アカウントID:role/AWS-Config-auto-delete-role

ルールの詳細ページにリダイレクトされます。
修復アクションに設定が入っていることを確認します。

動作確認
EBSを単品で作成してそれを自動で検知・削除させたいと思います。

すぐにチェックしてほしいので、Configのルールから再評価を押下します。
再評価が始まるとその旨の通知が画面上に表示されます。


下の方に画面をスクロールして、対象範囲内のリソースを確認します。
先ほど作成したEBSが表示されていることを確認します。作成するだけして、EC2等にアタッチしていない為ですね。

少し待つと、ステータスの欄が「アクションの実行がキューに入りました」と出力されます。

更に少し待つと、ステータスが「アクションが正常に実行されました」と出力されます。

EBSの欄を見ると先ほど作成したEBSが削除されていることがわかります。
便利ですね。

環境削除
残しっぱなしにすると、課金が発生する可能性があるのでConfigの設定を削除します。
・修復アクションの削除
・ルール自体の削除
この2点を行う事できれいにすることが出来ます。

