[AWS] AWS Config Rulesを使ってルールに違反した設定を見つける


こんにちは。
AWS認定資格の勉強やLambdaがうまく使えずハマりにハマっていたら、前回の記事投稿から1ヶ月近く経ってました。気を取り直して記事を書いていきます。

今回は、前回に引き続きAWSの監視ツールの一つ**「AWS Config Rules」**に触ってみようと思います！

#0.AWS Config Rulesとは
**AWS Configで取得した設定が正常な値かどうかチェックするルールを設定するサービス**です。
図にすると以下のような感じだと思います。

![COnfig.png](https://qiita-image-store.s3.amazonaws.com/0/95380/a3ae25ef-f7af-5c98-3f1b-d254661e904f.png)

**チェックのタイミングについて**
　チェックのタイミングは「定期チェック」と「変更時チェック」の２つがあります。
　　・「定期チェック」は、毎時や毎日など定期的に設定のチェックします。
　　・「変更時チェック」は、リソースの追加や変更を行ったときに設定のチェックをします。

**ルールについて**
 ルールはAWSが提供している「マネージドルール」と自分で設定することができる「カスタムルール」の二つがあります。
　
　・「マネージドルール」は、AWSが提供しているルールで以下のようなルールがあります。
　　　　　-EBSが暗号化されているか
　　　　　-CloudTailsが有効化されているか
　　　　　-EIPがアタッチされているか
　　　　　-SSHポートが開放されていないか
　　　　　-EC2がVPC内に作れられているか
　　　　　-特定のタグがついているか
　　　　　-特定のポートが開放されていないか
　・「カスタムルール」は、Lambdaファンクションを使ってルールを作成します。
　　　こちらはかなり柔軟にルールを作ることができるみたいです。
　　　詳細はクラスメソッドさんの素晴らしいサイトをご参照ください。
　　　[AWS Config Rulesのマネージドルールを試してみた。 #reinvent](http://dev.classmethod.jp/cloud/aws/aws-config-rules-maneged-rules/)

**提供されているリージョンについて**
バージニアリージョンのみサービスが提供されています。(2016/3/23)
早く東京リージョンに来て欲しいですね。


#1.AWS Config Rulesの設定
それでは、AWS Config Rulesを設定していきます。リージョンは、バージニアです。
「EIPがアタッチしているか」確認するルールを作成します。

1.[Config]をクリックします。
![001_2.png](https://qiita-image-store.s3.amazonaws.com/0/95380/7924a3f8-f0a3-e507-b3cd-e599e8b509a2.png)


2.[Rules]をクリックします。#東京リージョンと見た目が違いますね。
![002.png](https://qiita-image-store.s3.amazonaws.com/0/95380/8a7a6746-57ce-5eba-5979-64a3a4cfb9dd.png)

3.[Add rule]をクリックします。
![003.png](https://qiita-image-store.s3.amazonaws.com/0/95380/e5beaaf6-ce88-2c6f-f57a-72f5339a88e8.png)

4.今回は、マネージドルールの[eip-attached]を利用します。
　カスタムルールを使用する場合は、[Add custom rule]をクリックしてください。
![004.png](https://qiita-image-store.s3.amazonaws.com/0/95380/56bcc47f-fbee-155f-4578-08309dcef6f8.png)

5.マネージドルールの場合は特に変更が必須な部分はないので、[Save]をクリックします。
![005.png](https://qiita-image-store.s3.amazonaws.com/0/95380/1cb9df54-d745-d8e0-45e2-b166879efff6.png)

6.ルールが追加されていることを確認します。
![006.png](https://qiita-image-store.s3.amazonaws.com/0/95380/18f286df-5275-4e32-974a-782cd41654b6.png)

簡単ですが、これでルールの追加は完了です！


#2.AWS Config Rulesの確認
それでは、ルールの動きを確認していきます。

1.ルールを作成してから暫くすると、Complianceの値が「No results reported」に変わります。
　まだ、EIPを一つも取得していません。監視対象がない状態だとこの値になります。
![010.png](https://qiita-image-store.s3.amazonaws.com/0/95380/52190011-f183-2f86-1b5b-1306ac369b28.png)

それでは、EIPを取得します。
**EIPを取得(未アタッチ)　-違反状態-**

2.EIPを取得して暫くすると、Complianceの値が「1 noncompliance resource(s)」へと変わりました。
　ルール違反がある場合この値になります。矢印の部分をクリックすると詳細を確認することができます。
![011 2.png](https://qiita-image-store.s3.amazonaws.com/0/95380/c19c38ca-d957-ac55-9fed-5dcc68fc6c36.png)

3.[Config timelines]をクリックすると、設定が変更された時間などさらに詳細な情報が確認できます。
![012_2 2.png](https://qiita-image-store.s3.amazonaws.com/0/95380/5af5d94d-e3fe-6f4f-63a6-b47d098c903d.png)

4.変更時間などを確認できます。
![013 2.png](https://qiita-image-store.s3.amazonaws.com/0/95380/853b6a26-097d-d135-5a59-2c11d34a8f02.png)

次にEIPをインスタンスにアタッチします。
**EIPをアタッチ　-遵守状態-**

5.EIPをアタッチして暫くすると、Complianceの値が「Compliant」へと変わりました。監視対象のリソースが全てルールを遵守している状態だとこの値になります。
![014.png](https://qiita-image-store.s3.amazonaws.com/0/95380/275ae9d3-63a7-0369-d7ae-bc6a93e27bb7.png)

6.タイムラインも更新されてます。
![015 2.png](https://qiita-image-store.s3.amazonaws.com/0/95380/d8acc21c-0c78-447a-30ec-82517d4f74a8.png)

確認作業は以上となります！

#3.AWS Config Rulesの削除
最後にルールの削除を行います。

1.[Edit rule]をクリックします。
![016.png](https://qiita-image-store.s3.amazonaws.com/0/95380/02b7340f-b225-001b-602c-61e2eaecd499.png)

2.画面下の[Delete rule]をクリックします。
![017.png](https://qiita-image-store.s3.amazonaws.com/0/95380/2d777f30-c17a-7950-2e74-110bf8f3ccd7.png)

3.確認画面が表示されるので、[Delete]をクリックします。
![018.png](https://qiita-image-store.s3.amazonaws.com/0/95380/616f878b-3a4b-b4f0-4307-b3a76552e634.png)

これでルールの削除も完了です！

#4.さいごに
「AWS Config Rules」も管理コンソールからぽちぽちしていくだけで設定することができました。リソースが増えてくると思わぬところで設定ミスをしてしまうので、機械的に設定のミスを発見することができるのはありがたいと感じました。監視サービスは、色々なサービスと組み合わせることによって利便性が上がっていく気がします。Lambda使えるように頑張ります。


#99.参考

https://aws.amazon.com/jp/config/
http://recipe.kc-cloud.jp/archives/8381
http://recipe.kc-cloud.jp/archives/8558
http://dev.classmethod.jp/event/cmdevio2016-report-e1-aws-config/
http://dev.classmethod.jp/cloud/aws/aws-config-rules-maneged-rules/

参考にさせていただきました。
ありがとうございます。