Config ルール・自動修復を使ってS3全バケットのデフォルト暗号化を自動的に有効化する
AWS Config は AWSリソースの構成を記録、管理するためのサービスです。 EC2インスタンスやセキュリティグループなど、AWSリソースが「いつ、どのような変更がされたか」 の履歴を記録してくれます。
また、 AWS Config ルール を利用して AWSリソースの構成の評価ができます。 AWSリソースのあるべき構成を条件としています。条件に違反しているリソースが検出されると 「非準拠」フラグが付けられます。
さらに、この「非準拠」リソースを 修復 することもできます。 "AWS Systems Manager オートメーション(SSM オートメーション)" という自動化を行うためのワークフローと連携して、 「非準拠」リソースが見つかれば SSMオートメーションを使ってあるべき構成へ自動修復する、便利な自動化が実現できます。
本記事では S3の全バケットのデフォルト暗号化を自動的に有効化する ための Configルール/自動修復を 構築してみます。
目次
やってみる(ルールの作成)
まずは、「デフォルト暗号化が有効になっていないバケットを非準拠とする」Configルールを作成します。 ※Configを有効化していることは前提です。
「AWS Config > ルール」の画面から「ルールを追加」を選択します。
AWS管理のルール s3-bucket-server-side-encryption-enabled
を選択します。
デフォルト設定で追加します。 (ここで修復アクションを指定して自動修復設定もできますが、まず非準拠リソースの列挙のみ行ってみます)
作成したルールがあること、準拠/非準拠リソースが見れることを確認しましょう。
私の検証環境で 8個、非準拠なバケットが検出されました。
やってみる(IAMロールの作成)
後述の自動修復を行うための IAMロールを先に作っておきます。 マネジメントコンソールからIAMロールの作成画面に行きましょう。 「信頼されたエンティティの種類」として「SSM Automation Service Role」を選択します。
ほかは特に設定せず、適当にロール名(例えば ssm-automation-role-for-s3-encryption
)
を決めてロールを作成します。
作成したロールの画面に行き、「インラインポリシーを追加」を選択します。
JSONで以下のようなポリシーを追加しましょう。S3のデフォルト暗号化を有効化するためのポリシーです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutEncryptionConfiguration", "Resource": "*" } ] }
適当なポリシー名(例えば Ssm-Automation-Policy-PutEncryptionConfiguration
)を付けて作成します。これでIAMロール作成作業は完了です。
やってみる(自動修復設定)
作成していた Configルールの画面に行き、「編集」を選択しましょう。
「修復アクションを選択」の下記パラメータを埋めて 「保存」しましょう。
- 修復アクション :: AWS管理のアクション
AWS-EnableS3BucketEncryption
。 - 自動修復 ::
はい
とします。再試行の設定はデフォルト。 - リソースIDパラメータ ::
BucketName
を選択。 - パラメータ > AutomationAssumeRole :: 前述で作成した IAMロールの ARNを指定。
- パラメータ > SSEAlgorithm ::
AES256
を指定。
確認
今回は、すぐに結果を確認したいため Config ルールの画面「再評価」を実行してみます。
▼しばらくすると以下のような画面になり
▼すべて「アクションが正常に実行されました」になりました!
▼もう一度「再評価」を実行します。非準拠リソース一覧は無くなり、このルールが「準拠」となりました
CloudFormation テンプレート
今回の作業の CFnテンプレート版です。以下リソース作成します。
- IAMロール :: ロール名
ssm-automation-role-for-s3-encryption
- Configルール :: ルール名
s3-bucket-server-side-encryption-enabled
- Config 修復設定 :: 実行ドキュメント
AWS-EnableS3BucketEncryption
おわりに
Configルール・自動修復を使った S3バケット自動暗号化設定でした。
スクリプト書くこと無く、このような自動化を実装できる Configルールはとても便利だと感じました。 他のルール・自動修復も AWSセキュリティの運用に活用していきたいですね。
少しでもどなたかのお役に立てば幸いです。
参考
▼ CloudFormation 関連