LoginSignup
2
1

More than 1 year has passed since last update.

【AWS】AWS Configでルールに準拠していないEC2を削除し、EventBridge + SNSメール通知する

Last updated at Posted at 2022-03-25

はじめに

AWSのConfigは想像以上の強さをもっており、
AWSサービス全体の監視をしてくれるだけではなく、
サービスが業務要件やコンプライアンスに準拠しているか否かも判断することができ、
必要に応じて当AWSサービスを停止、または削除する等を行うこともできます。

ゴール

本記事のゴールとしては、
Amazon Linux 2 AMI以外に、AMIに登録していないEC2を作成されましたら、当EC2の自動削除と、メール通知を実現することを目標とします。
つまり、以下のAMIから作ったEC2しか作れないっていうことです。
その他のAMI、例えばWindowsやRedHatなどのAMIからは、EC2を作れないことになります。
截屏2022-03-25 18.59.29.png

また、ルールに準拠されていない削除されたEC2に対しては、こういうアラートメールが届く想定です。
截屏2022-03-26 00.54.20.png

1.SNS作成

お好きな名前と表示名を入れて、SNSを作成します。
image.png

SNS作成後に、サブスクリプションを作成し、自分のEメールを入力します。
截屏2022-03-25 18.47.04.png

上記のメールアドレスに届いたら、「Confirm subscription」を押下し、承認します。
截屏2022-03-25 18.52.00.png

2.IAMロール作成

IAMのロールは
AmazonSSMAutomationRoleを追加します。
さらに、インラインポリシーを追記し、MyAutomationRole"を追加します。

MyAutomationRole"ポリシーはこんな感じで追加してください
截屏2022-03-25 19.28.05.png

ロールの信頼関係に、ssm.amazonaws.comec2.amazonaws.comにしてください。
截屏2022-03-25 19.28.45.png

3.Config作成

次にConfigを作成しますが、私は「1-clickセットアップ」で作成しました。
截屏2022-03-25 18.54.40.png

新しいルールを追加します。
截屏2022-03-25 18.56.33.png

「approved-amis-by-id」を選択します。
截屏2022-03-25 18.57.45.png

はじめにご説明させていただいた、Linux Amazon 2のAMI IDをパラメータに登録しておきます。
ami-0c02fb55956c7d316
截屏2022-03-25 19.02.50.png

その他の設定項目はデフォルトのままで作成します。
作成後に、「アクション」→「修復の管理」を押下します。
截屏2022-03-25 19.08.38.png

修復方法は自動修復とし、修復のアクションは「AWS-TerminateEC2Instance」を選択します。
截屏2022-03-25 19.20.51.png

リソースIDパラメータは」、InstanceIdを選択します。
パラメータのロールに、IAM側で作成したロールのARNを貼り付けし、保存します。
截屏2022-03-25 19.22.44.png

4.Eventbridge作成

名前を説明を入力の上、ルールタイプは「イベントパターンを持つルール」を選択します。
截屏2022-03-25 19.05.44.png

イベントパターンは、AWSのサービスに選択します。
截屏2022-03-25 19.07.17.png

イベントソースにConfig
イベントタイプにConfig Rules Compliance Change
特定のメッセージタイプにComplianceChangeNotification
截屏2022-03-25 19.30.46.png

ターゲットに、SNSトピックを選択し、
ターゲット入力を設定に入力トランスフォーマーを選択します。
そのあと入力トランスフォーマーを選択します。
截屏2022-03-25 19.32.53.png

サンプルイベントにConfig Rules Compliance Changeを選択します。
截屏2022-03-26 00.42.22.png

「ターゲット入力トランスフォーマー」に下記のJSONを入力します。

{
  "account": "$.account",
  "complianceType": "$.detail.newEvaluationResult.complianceType",
  "configRuleARN": "$.detail.configRuleARN",
  "configRuleName": "$.detail.configRuleName",
  "detail-type": "$.detail-type",
  "id": "$.id",
  "messageType": "$.detail.messageType",
  "region": "$.region",
  "resourceId": "$.detail.resourceId",
  "resourceType": "$.detail.resourceType",
  "source": "$.source",
  "time": "$.time"
}

截屏2022-03-26 01.04.57.png

下記コードをテンプレートに入力し、保存します。

"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"

"( °-° )    Σ(°̀ᗝ°́)   =͟͟͞͞(꒪ᗜ꒪ ‧̣̥̇)   Σ( ºΔº 〣)"

"前方高エネルギー接近中、非戦闘員は速やかに退避せよ!!"
"あなたが作ったEC2はルールに準拠されていないため、"
"AWS Configに削除されました~!!"

"∑(๑ºдº๑)!!  Σ( °o°)  (๑°ㅁ°๑)!!  ฅ(º ロ º ฅ)"

"以下は削除されたEC2情報です!!よく確認しておいてね~!!"

"・ID:<id>"
"・動作タイプ:<detail-type>"
"・アカウント:<account>"
"・時間:<time>"
"・リージョン:<region>"
"・インスタンスID:<resourceId>"
"・AWS Configルール名:<configRuleName>"
"・AWS Config ARN名:<configRuleARN>"
"・メッセージタイプ:<messageType>"
"・コンプライアンスタイプ:<complianceType>"
"・リソースタイプ:<resourceType>"

"★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★"

截屏2022-03-26 00.42.37.png

その他の設定はデフォルトのままで設定します。

5.テスト実施

上記のAMI IDに準拠していないEC2を作成してみます。
例えばUbuntuのAMIを選んで、作成します。
截屏2022-03-25 23.21.46.png

作成し始めました。
截屏2022-03-26 00.47.52.png

すぐConfigではコンプライアンスに比準拠と検出されました。
截屏2022-03-25 23.25.51.png

Configから当ルールに準拠していないEC2を削除しました。
截屏2022-03-26 00.49.49.png

メールのほうに、無事に定義されたアラートメールが届いたことを確認できました。
截屏2022-03-26 00.54.20.png

一方で、Amazon Linux 2を作ったら、削除されていないことを確認できました。
截屏2022-03-26 00.59.06.png

参考

顔文字は下記のサイトから参考しました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1