RDSパブリックアクセス可能状態を修復するConfigの自動修復アクションを設定します。
基本的にRDSのパブリックアクセスを許可することはありませんが、万が一あるIAMユーザーが公開してしまった場合に自動修復できるように設定を行います。

今回の記事は、こちらを参考にハンズオンを行ったものです。
https://docs.aws.amazon.com/ja_jp/systems-manager-automation-runbooks/latest/userguide/automation-aws-disable-rds-instance-public-access.html

元の状態の確認

まず、修復前の元の状態は「パブリックアクセス可能 “あり”」となっていることが確認できます。

IAMロールの作成

まず、下記JSONのポリシーを作成します。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ssm:StartAutomationExecution",
"ssm:GetAutomationExecution",
"rds:DescribeDBInstances",
"rds:ModifyDBInstance"
],
"Resource": "*"
}
}

次に、上記ポリシーを使ってIAMロールを作成します。
手動で作成する場合、 信頼するサービスでSSMを選択できないので、EC2で作成したのち、赤枠部分をec2からssmに書き換えてください。

また、ここで作成したIAMロールのARNは修復アクションの設定で使用するのでコピーしておきましょう。

Configルールの作成

では、ここからConfigルールを作成していきます。
サービスでConfigを選択したのち、サイドバーの “ルール” から “ルールの追加” を押下します。
ルールは、マネージド型ルールの「rds-instance-public-access-check」を選択します。

次のページは、特に設定したい箇所がなければデフォルトのままで問題ありません。

作成後、しばらく待つとConfigルールが稼働します。
今回はパブリックなRDSインスタンスを1つ作成しているので、非準拠リソースとして1つ検知されていることを確認できます。

Configルールの自動修復アクションを設定

右上の “アクション” から修復の管理を押下します。

修復方法は、”自動修復”を選択し
修復アクションは「AWSConfigRemediation-DisablePublicAccessToRDSInstance」を選択します。

リソースID パラメータに “DbiResourceId”を選択します。
そして、パラメータの “AutomationAssumeRole” に最初に作成したIAMロールのARNを入力します。

これで修復アクションの設定が完了します。

実行結果の確認

修復アクションが実行されると、「パブリックアクセス可能 “なし”」に変更されました。

また、EventBridgeで通知を設定すると下記のような通知が届きます。
一度非準拠になったのち、準拠に変更されていることが確認できます。※slack通知です

最後に

今回は、Configの自動修復アクションを設定し、RDSをパブリックに設定することを修復するように設定しました。

Configは、検知だけでなく修復アクションを設定しておくことでセキュリティレベルを上げることができます。
また、Security Hubでも検知を行うことは可能ですが、Configで自動修復を設定しておけば、手動で直す手間がなくなるため非常に便利です。

是非皆さんもこちらの記事を参考に設定してみてください。
最後までお読みいただきありがとうございました。