こんにちは。サニービュー事業部の小寺です。
みなさんは、AWS Configを使われていますか?使っているけれど、なかなか活用できてないなと思い、今日はConfigのベストプラクティスについてお伝えいたします。
■AWSコンフィグってどんなサービス?
AWSコンフィグとは、AWSリソースの設定から、AWSリソースの構成情報のスナップショットを取得し、管理するサービスです。
この構成情報を元に、現状のAWSリソースの設定が、利用者によって定義された正しい状態になっているか評価します。
簡単にAWSリソースの構成や変更を可視化することができます。

■AWSコンフィグでできること
1) AWS リソースの設定が最適な設定であるかどうかを評価する。
2) AWS アカウントに関連付けられているサポート対象リソースの現在の設定のスナップショットを取得する。
3) アカウント内にある 1 つ以上のリソースの設定を取得する。
4) 1つ以上のリソースの設定履歴を取得する。
5) リソースが作成、変更、または削除されるたびに通知を受け取る。
6) リソース間の関係を表示する(特定のセキュリティグループを使用するすべてのリソースを確認する場合など)。
■AWSコンフィグのベストプラクティス
1) すべてのアカウントとリージョンでAWS Configを有効にしましょう。

2) すべてのリソースタイプの設定変更を記録しましょう。
AWS Config に記録する必要があるリソースタイプとして [すべてのリソース]を選択してください。
3) 1 つのリージョンでのみグローバルリソース (IAM リソースなど) を記録しましょう。
4) 設定履歴とスナップショットファイルを収集す Amazon S3 バケットがあることを確認しましょう。
パブリックに読み取りまたは書き込み可能な設定はNGです。
5) 履歴ファイルとスナップショットを一元管理するために、別の (管理) アカウントから Amazon S3 バケットを指定しましょう。
※要件に応じて、別アカウントのバケットを指定します。

6) 別の (管理) アカウントから Amazon Simple Notification Service (Amazon SNS) トピックを指定して、設定とコンプライアンス通知を一元管理しましょう。

7)Amazon CloudWatch Events を使用して AWS Config 通知をフィルタリングし、アクションを実行しましょう。
8)AWS Config に割り当てられた IAM ロールに適切なアクセス許可を設定しましょう。
9)AWS Config の IAM ロールを自分で作成する場合は、AWS 管理ポリシー AWSConfigRole を使用して、IAM ロールにアタッチしましょう。
AWS は、AWS Config が AWS リソースタイプのサポートを追加するたびに、この IAM ポリシーを更新します。つまり、AWS Config には、ロールにこの管理ポリシーがアタッチされている限り、設定の詳細を取得するために必要なアクセス許可が付与されます。注意点としては、AWS マネジメントコンソールを使用してロールを作成または更新すると、AWS Config によって AWSConfigRole がアタッチされます。
10)SNS トピックのアクセス許可が、AWS Config によるメッセージの発行のみを許可するように制限されていることを確認しましょう。
※別のアカウントから既存のトピックを指定する場合、または API を使用して配信チャネルをセットアップする場合は、トピックに必ず正しいアクセス許可があるようにしてください。
11)1 日 1 回以上の頻度で定期的なスナップショットをオンにしましょう。
アカウント内のすべてのリソースの最新の設定状態が毎日バックアップされます。
12)AWS CloudTrail Lookup API アクションを使用して、設定変更が発生した時間枠に発生した API イベントを見つけましょう
AWS Config コンソールは、Lookup Events API アクションを使用して、AWS Config に設定の変更が記録された時間枠のあたりで AWS CloudTrail から API イベントを取得します。AWS Config データをプログラムで使用している場合は、この API アクションを使用して、AWS Config で検出された設定の変更を AWS CloudTrail の API イベントに関連付けます。
13)AWS Config でサポートされているリソースタイプの変更トリガーカスタムルールを作成しましょう。
カスタムルールを作成するときは、変更によってトリガーされるルールと定期的なルールを作成して、設定が変更されるたびにリソースのコンプライアンスが評価されるようにします。詳細については、「AWS でサポートされるリソースタイプとリソースの関係」を参照してください。
14)AWS Config でサポートされていないリソースタイプの定期的なルールを作成しましょう。
現在、AWS Config は限られた数のリソースの変更を追跡していますが、カスタムルールを使えば、AWS Config でまだサポートされていないリソースの設定を評価できます。
15)AWS Config Rule Development Kit (RDK) を使用して、カスタムルールを作成しましょう。
RDK はオーサリングエクスペリエンスを簡素化し、さまざまなリソースタイプのルールを検証します。
16)AWS Config カスタムルールのコミュニティベースのソースである AWS Config ルールリポジトリを使用しましょう。
この新しいリポジトリは、AWS リソースのセキュリティのベストプラクティスに対して評価とコンプライアンスを自動化する合理的な方法を提供します。
17)注釈を使用しましょう。
カスタムルールでは、put-evaluations を送信するときに、「注釈」を使用して、評価がコンプライアンスをどのように決定したかに関する補足情報を追加します。
18)適合パックを使用しましょう。
適合パックを使用して、Config ルールと修正アクションのパックをアカウントにすばやくデプロイします。マスターアカウントから AWS Organizations の組織全体にわたって一元的にパックをデプロイすることもできます。
19)データの集約機能を使用して、リソース設定とコンプライアンスデータを中央アカウントに集約しましょう。
20)組織ベースのアグリゲーターを作成して、組織全体から AWS Config データを集約しましょう。
これにより、セットアップが簡単になり、アカウントが組織に参加または組織から脱退したときにアグリゲーターが自動的に更新されます。
要件に応じて、組織全体として管理しましょう、ということですね。組織での管理が難しい場合、管理用の別のアカウントを準備した管理が望ましいですね。今更、アカウントを分けるのはちょっとと思う方もいると思いますが、管理の最適化という観点で見直してみるのもよさそうですね。
Sunny CloudはAWSのプロフェッショナル集団として、様々なAWSのソリューションを提供しています。
AWSのご相談は、ぜひSunny Cloudへ。どんなご相談でもお待ちしております。
▼「無料相談」受付中です
https://www.sunnycloud.jp/contact-us/
参考情報: https://aws.amazon.com/jp/blogs/news/aws-config-best-practices/

AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!