AWS Configで非準拠ルールを自動修復

UH
2023-10-06
2023-10-06
目次

AWS Config 非準拠リソースの自動修復

AWS Configではルールに準拠してないリソースに対して、設定した修復アクションを実行することでリソースの自動修復ができます。

修復の自動化にはAWS Systems ManagerのAutomation機能が使用され、Configルールの準拠性をトリガーに、自動的に修復アクションが実行されます。

今回は、AWS Configの非準拠ルールを自動修復できるようにルール、修復アクションの設定、自動修復の適用確認を実施します。

ConfigのセットアップやConfigルールの準拠状況の確認、構成管理と変更履歴の確認については前回の記事をご参照ください。

AWS Configで対象リソースの構成管理や変更履歴を可視化する

Configルールの対象、自動修復用のロール作成

今回は対象のタグが付いていないEC2インスタンスを非準拠とするConfigルールを設定し、自動修復するために修復アクションとして非準拠のEC2インスタンスを停止するという処理を設定する。

まずは対象のタグを付けたEC2インスタンスを作成する。

対象のタグとして「キー:rule」、「値:config-rule-ok」を設定したtest-ec2インスタンスを作成し、このタグが付いていないインスタンスを停止できるようにする。

ec2-tag

次に、自動修復で必要なSSMに関連したロールを作成する。

IAM→ロール→ロールの作成

画像のようにSystems Managerを選択、許可ポリシーでは「AmazonSSMAutomationRole」を選択、

iam-role1

iam-role2

ロール名config-role-automationで作成、信頼ポリシーを確認するとssm.amazonaws.comがAllowとなっていることがわかる。

iam-role3

作成されたロールを確認する。次の手順で修復アクション設定時にロールのARNを設定する。

iam-role4

Configルールの作成

コントロールパネルからConfigを検索、ルール→ルールの追加からルールを設定していく。

設定は画像の通り

ルールのタイプ:AWSによって管理されるルールの追加

AWSマネージド型ルール:required-tags選択

config-rule1

ルールの設定でリソースからEC2インスタンスを選択

config-rule2

ルールのパラメータで対象のタグの値を記載する。

config-rule3

確認画面で問題なければ作成。

Configルールが作成され、停止しているインスタンスに対してもルールの準拠状況が確認されるので、インスタンス一覧の対象のタグが付いたtest-ec2以外のインスタンスは非準拠となっていることがわかる。

ec2-condition2

ec2-condition

この段階ではまだConfigルールによる判定しか行っていないため、非準拠ルールに対して修復アクションを設定し、自動修復(今回はEC2インスタンスの停止)できるようにする。

作成されたルールを選択し、アクション→修復の管理から修復の設定をする。

config-rule5

修復アクションの設定を行う。

今回は対象のタグが付いていないEC2インスタンスを停止する修復処理がしたいので、修復アクションを選択から「AWS-StopEC2Instance」を選択する。

config-rule6

リソースにはInstanceId、パラメータでは作成したIAMロールのARNを記載。

config-rule7-3

変更を保存を押すと、修復アクションの設定内容で自動修復が実行される。

非準拠ルールの自動修復

上記設定により自動修復が実行され、タグが付いてないEC2インスタンスがすぐに停止されたことが確認できる。

ec2-condition3

Config→リソースから各リソースの状況を確認

config-last1

停止したEC2インスタンスを選択し、リソースのタイムラインから変更履歴を確認すると、オートメーションのロールによりEC2インスタンスが停止したことが確認できる。

config-last3

Configルールの削除

自動修復の確認が完了したので、今回作成したルールを削除する。

コンソール画面から作成したConfigルールを削除しようとするとエラーとなり削除できない。

config-last4-2

修復アクションが定義されたConfigルールはコンソール画面から削除できないという手間がかかる仕様になっているので、CloudShellからConfigルールに紐づけられた修復アクションを削除し、その上でConfigルールを削除する。

CloudShellのサービスからコマンドを実行して紐づけられた修復アクションを削除する。

Configルールに紐づけられた修復アクションを下記コマンドで確認する。

aws configservice describe-remediation-configurations --config-rule-names {ルール名}

ルール名に修復アクションが紐づけられていることが確認できたので、紐づけられた修復アクションを下記コマンドで削除する。

aws configservice delete-remediation-configurations --config-rule-names {ルール名}

削除コマンド実行後、再度確認コマンドを実行すると紐づけられた修復アクションが削除されたことがわかる。

config-last7

この状態になると、Configルールをコンソール画面から削除できる。

さいごに

今回確認したように簡単な設定でルールの準拠状況の確認から自動修復まで実施できます。

マネージドルールとして準備されている修復アクションも豊富なうえ、独自のルールも加えられ、自動化・管理がとてもシンプルで楽になるので、ぜひAWS Configと合わせて自動修復を活用してみてください。