「AWS Configルール」と「AWS Systems Manager」の「Automation」を利用したリスクあるリソースの自動検知、自動修復AWSチートシート

AWS活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS Configルール」と「AWS Systems Manager」の「Automation」を利用したリスクあるリソースの自動検知、自動修復を紹介する。

» 2021年02月15日 05時00分 公開
[天野盛介東京ITスクール]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS Configルール」と「AWS Systems Manager」の「Automation」を利用して、あらかじめ設定したルールに違反する設定を自動で検知、修復する方法を紹介します。

 AWSにおけるインシデント対応では、想定されるリスクが発現することを事前に予防する「予防的統制」と、想定外のリスクの発現を検知して即座に対応する「発見的統制」の2つの考えが存在します。今回紹介するAWS Configルールを利用した非準拠リソースの自動修復は後者の発見的統制に当たるものです。

 どれだけ対策してもインシデントの発生を100%防ぐことは困難なので、「インシデントは発生するもの」としてインシデントが発生した際の対策を事前に施しておくことも重要になります。AWS Configルールの活用は、そういった対策の一つになるので本稿を通して利用方法を確認しておきましょう。

AWS Configルールの概要

 AWS Configルール(以下、Configルール)は、AWSリソースの設定履歴を保存するサービス「AWS Config」の一機能です。Configルールを利用することで、AWSリソースの設定がルールに準拠しているかどうかをチェックできます。

 このConfigルールには、AWSによって提供されている「マネージドルール」と「AWS Lambda」の関数を利用して実装できる「カスタマールール」があります。マネージドルールはコンピューティングやネットワーク、データベース、ストレージ、セキュリティといった多くのサービスを対象とするルールが存在していて、その数は2021年2月時点で165となっています。

 全てのマネージドルールについては公式レファレンスを確認してもらえればと思いますが、主なルールを一部抜粋して紹介するので参考にしてください。

表1 AWS Configマネージドルールから一部抜粋
ルール名 チェック内容
access-key-roatated 「AWS Identity and Access Management」(IAM)アクセスキーをローテーションしているかどうか
ec2-instance-no-public-ip 「Amazon EC2」インスタンスにパブリックIPアドレスが関連付けされていないかどうか
encrypted-volumes 「Amazon Elastic Block Store」(EBS)ボリュームが暗号化されているかどうか
root-account-mfa-enabled ルートアカウントのMFA(Multi-Factor Authentication:多要素認証)が有効になっているかどうか
s3-bucket-public-read-prohibited 「Amazon S3」のパブリック読み込みが禁止されているかどうか

Configルールを利用した非準拠リソースの自動修復方法

 ここからは、セキュリティグループにおいてSSHが全開放された場合の自動修復設定を例にConfigルールを利用した非準拠リソースの自動修復方法を説明します。

 構成の概要としては、まずConfigマネージドルールの「restricted-ssh」を利用してSSHが全開放されたことを検知できるように設定します。その上で、SSHの全開放を検知した場合の自動修復には「AWS Systems Manager」を利用します。

Configルールを利用した非準拠リソースの自動修復方法の概要

 以前の記事『「Amazon EC2」インスタンスの設定ミスを防ぐ「AWS Systems Manager」によるリモートコマンド実行』ではAWS Systems Managerの「Run Command」を紹介しましたが、今回はAWS Systems Managerの「Automation」を利用してルール違反時の自動修復を行います。Automation機能には、特定の設定を自動実行する手順をテンプレート化したオートメーションドキュメントがAWSによって提供されています。

表2 AWS Systems Managerオートメーションドキュメントから一部抜粋
ドキュメント名 概要
AWS-ResizeInstance EC2のインスタンスサイズを変更
AWS-ReleaseElasticIP 指定された「Elastic IP アドレス」を開放
AWS-DisableS3BucketPublicReadWrite S3のパブリック公開を無効化
AWS-CreateDynamoDBBackup 「Amazon DynamoDB」テーブルのバックアップを作成
AWS-EnableCloudTrail 「AWS CloudTrail」を有効化

 今回は「AWS-DisablePublicAccessForSecurityGroup」を利用してSSHへのパブリックアクセスを自動で無効化します。

※注意

こちらのドキュメントは、以下の条件を両方とも満たす場合はエラーとなってしまって修復できないので、気を付けてください。

  • 条件1:セキュリティグループがデフォルト以外のAmazon Virtual Private Cloud(VPC)に配置されている
  • 条件2:セキュリティグループのインバウンドルールで、次の4つのパターンを全て使用するオープンポートが指定されていない
    • 0.0.0.0/0
    • ::/0
    • SSH or RDP port + 0.0.0.0/0
    • SSH or RDP port + ::/0

Configルールを利用した自動修復設定の実装

 以下のステップに沿ってConfigルールを利用した自動修復を設定していきます。

  1. Systems Manager用IAMロールの作成
  2. SSH全開放を検知するConfigルールの作成
  3. 違反検知時の自動修復設定
  4. 自動修復の確認

【ステップ1】Systems Manager用IAMロールの作成

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。