はじめての AWS Config Rules

記事タイトルとURLをコピーする

みなさんこんにちは。
技術研究課の山田です。

2015年10月の re:Invent で発表された AWS Config Rules のプレビューが触れるようになったので、ドキュメントを読み進めつつさっそく使ってみました。

f:id:swx-yamanaka:20200820142634p:plain

AWS Config Rules とは?

あらかじめAWSの各種リソースに対してルールを定義しておくことで、リソースが望ましい状態になっているのか、なっていないのかを検査してくれる AWS Config の拡張機能です。
定義したルールに応じて、AWS Config Rules が「リソースの変更のタイミング」または「定期的」に検査を行ってくれます。
例えば、下記のようなルールを定義出来ます。

  • Elastic IP が EC2 Instance にアタッチされているのか
  • EC2 Instance が特定の Security Group に関連付けられているのか
  • 特定の Security Group の◯番ポートが許可されているのか

AWS Config Rules は現在(2015年11月11日) Preview 状態なので、使ってみたい方は AWS Config Rules Preview Signup のフォームから申し込みましょう。

ルールの定義について

定義するルールには AWS であらかじめ用意されているAWS Managed Rulesと、ユーザ独自に定義する Customer Managed Rulesの2パターンがあります。
AWS Managed Rules の一覧は下記URLより参照可能です。

AWS Managed Rule は事前に定義されているルールなのですが、Customer Managed Rules では独自にルールを定義することが可能です。
独自ルールの定義には AWS Lambda で関数を書く必要があるので、初めての方には少し敷居が高いかもしれないですね。

Config Rules の設定を行う

さきほど書いたように、定義するルールには「AWS が用意したもの」と「自分で用意するもの」と2パターンあるのですが今回は AWS があらかじめ用意している AWS Managed Rulesで設定を進めます。
AWS Management Console にログインした状態で、下記URLへアクセスします。

ルールの追加

Config Rule の追加を行うので、左メニューの Rules をクリック、そして Add Rule をクリックします。

f:id:swx-yamanaka:20200820143056p:plain

AWS Managed Rule の一覧が表示されます。
現在(2015年11月11日)は、9種類のルールが提供されています。
今回は、この中のeip-attached( Elastic IP が EC2 Instance に対してアタッチされているか) ルールの設定を行います。
eip-attached の要素をクリックする事で設定を進めます。

f:id:swx-yamanaka:20200820143154p:plain

Configure Rule で設定する箇所は6つありますが、AWS Managed Rule ではデフォルトで全ての項目が埋まっているためユーザ側で特に設定する必要はありません。
Resources に EC2: EIP が選択されているので、Elastic IP の状態が変化した際にこのルールの検査が走ることになります。

f:id:swx-yamanaka:20200820143256p:plain

もちろんAWS Managed Rule でも全く設定が変更出来ないわけではなく、例えば「特定の Tag が付与されているリソース」とスコープを設定する事も可能です。

f:id:swx-yamanaka:20200820143330p:plain

今回はすべてデフォルト状態のままで Save をクリックします。

動作確認

AWS Config Rules の動作に必要な設定を終えたので、実際に動作を確認してみましょう。
Elastic IP を 1つ確保して、どの EC2 Instance にも紐付いていない状態にします。
この状態で暫く待ちます。

f:id:swx-yamanaka:20200820143421p:plain

すると、AWS Config Rules の左メニュー Rules で eip-attached が 1 noncompliant resource(s) になり、リソースがルールに違反した状態となっていることを知らせてくれます。

f:id:swx-yamanaka:20200820143517p:plain

また、AWS Config Rules の左メニュー Resource で「いつからリソースが違反した状態になっていたのか」をタイムラインでも確認出来ます。
対象リソースの Config timeline のアイコンをクリックします。

f:id:swx-yamanaka:20200820143622p:plain

Now をクリックすることで直近のタイムラインが表示されます。
今回の例では11日 12:35 に Elastic IP を確保してから放置していた、ということになります。

f:id:swx-yamanaka:20200820143703p:plain

まとめ

ということで、今回は基本的な AWS Config Rules の設定を行いました。
Customer Managed Rules を書くことで、例えば 「特定のAMIに紐付いていないまま放置されているスナップショットを警告」や「使われていないEBSを警告」できたり、どんなルールでもユーザ側で作成可能なので夢が広がりますね。