APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

【Blog Week】AWS Configカスタムルールについて触って考えてみる

こんにちは。クラウド事業部の菅家です。
AWS Configについて、カスタムルールを触ってみたので、感想含め学んだところを書いていきます。

カスタムルールとは

docs.aws.amazon.com

まずAWS Configには設定できるルールとして大きくマネージドルールとカスタムルールがあります。
マネージドルールはAWS側で定義済みのカスタマイズ可能なルールです。
対してカスタムルールは文字通り、自分で1から作成するルールとなります。<

カスタムルールの作成方法

以下、AWS Configより「ルールを追加」を押した先の画面となります。

右側2つ、

  • カスタム Lambda ルールを作成
  • Guard を使用してカスタムルールを作成

この2つがカスタムルールとなります。

カスタム Lambda ルールを作成

docs.aws.amazon.com

カスタム Lambda ルールとは、作成したルール(どの対象をいつトリガーするのか)の評価をLambdaにて行う形式となります。
流れとしては、以下になります。

  • 作成したカスタムルールがイベントを発行。
  • イベント発行時にLambdaによって作成された評価を呼び出し、関数内でリソースを評価する。


Guard を使用してカスタムルールを作成

aws.amazon.com

カスタムLambdaルールより後に出たもののようです。
ルールの評価にAWS CloudFormation Guardを使用しているところが、先のカスタムLambdaルールと異なる点です。

メリットとしてはLambdaでのコーディングであったり、管理の手間がなくなり、定義が楽になったところがあるようです。

CloudFormation Guardを使用してカスタムルールを作成してみる

以下、公式を参考に作ってみます。

docs.aws.amazon.com


1. ルールを追加

AWS Configの「ルールを追加」を押した以下の画面で「Guard を使用してカスタムルールを作成」を選択して次に進みます。

2. 設定画面が出ることを確認

以下、ルールの設定画面が出てきます。

3. 「詳細」の記載

「詳細」にてルール名、説明等をまず記載します。

4. ルールの内容

「ルールの内容」、ここにGuardカスタムポリシーを入力していきます。
公式からそのまま流用。

github.com

Guardカスタムポリシーは.guardというファイル形式で、独自の構文が使われているようです。
余談ですが、個人的には見た目、Jenkinsのジョブ定義をgroovyで書いているものと感覚としては近いです。

5. その後の設定

その他については、マネージドルールと同様、「評価モード」にて評価対象の範囲とリソースが評価されるタイミングを、「パラメータ」にてタグなどの属性チェックを記載します。 最後に作成ボタンを押して完了となります。

最後に

かなり食わず嫌いしてまして、カスタムルールって作るの難しいのかなと思ったのですが、今回の体験で設定自体は簡単で後はGuardの書き方を覚えると良いということがわかりました。
書き方についてはまた別途学習してみようと思います。

また、今回ちらっとLambdaの方も試してみたのですが、Lambdaにて先に関数を作ってからルールを作る際に紐づけとなっていました。
そもそもLambdaを作るという作業が発生する他、評価とルールの画面が別々となってしまうため、ルールが増えてくるとなかなか管理が大変だと感じた次第です。
反面、Guardを使用したカスタムルールは、カスタムルールの記載がAWS Config側の設定画面にあり、上の一画面で完結しているのですごくわかりやすいと感じました。
AWS CLIからも作成できるようなので、環境ごとに画面を触って作成という手間もなさそうです。

ナイス手軽!!