AWS活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS Configルール」と「AWS Systems Manager」の「Automation」を利用したリスクあるリソースの自動検知、自動修復を紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
「Amazon Web Services」(AWS)活用における便利な小技を簡潔に紹介する連載「AWSチートシート」。今回は、「AWS Configルール」と「AWS Systems Manager」の「Automation」を利用して、あらかじめ設定したルールに違反する設定を自動で検知、修復する方法を紹介します。
AWSにおけるインシデント対応では、想定されるリスクが発現することを事前に予防する「予防的統制」と、想定外のリスクの発現を検知して即座に対応する「発見的統制」の2つの考えが存在します。今回紹介するAWS Configルールを利用した非準拠リソースの自動修復は後者の発見的統制に当たるものです。
どれだけ対策してもインシデントの発生を100%防ぐことは困難なので、「インシデントは発生するもの」としてインシデントが発生した際の対策を事前に施しておくことも重要になります。AWS Configルールの活用は、そういった対策の一つになるので本稿を通して利用方法を確認しておきましょう。
AWS Configルール(以下、Configルール)は、AWSリソースの設定履歴を保存するサービス「AWS Config」の一機能です。Configルールを利用することで、AWSリソースの設定がルールに準拠しているかどうかをチェックできます。
このConfigルールには、AWSによって提供されている「マネージドルール」と「AWS Lambda」の関数を利用して実装できる「カスタマールール」があります。マネージドルールはコンピューティングやネットワーク、データベース、ストレージ、セキュリティといった多くのサービスを対象とするルールが存在していて、その数は2021年2月時点で165となっています。
全てのマネージドルールについては公式レファレンスを確認してもらえればと思いますが、主なルールを一部抜粋して紹介するので参考にしてください。
ルール名 | チェック内容 |
---|---|
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」のパブリック読み込みが禁止されているかどうか |
ここからは、セキュリティグループにおいてSSHが全開放された場合の自動修復設定を例にConfigルールを利用した非準拠リソースの自動修復方法を説明します。
構成の概要としては、まずConfigマネージドルールの「restricted-ssh」を利用してSSHが全開放されたことを検知できるように設定します。その上で、SSHの全開放を検知した場合の自動修復には「AWS Systems Manager」を利用します。
以前の記事『「Amazon EC2」インスタンスの設定ミスを防ぐ「AWS Systems Manager」によるリモートコマンド実行』ではAWS Systems Managerの「Run Command」を紹介しましたが、今回はAWS Systems Managerの「Automation」を利用してルール違反時の自動修復を行います。Automation機能には、特定の設定を自動実行する手順をテンプレート化したオートメーションドキュメントがAWSによって提供されています。
ドキュメント名 | 概要 |
---|---|
AWS-ResizeInstance | EC2のインスタンスサイズを変更 |
AWS-ReleaseElasticIP | 指定された「Elastic IP アドレス」を開放 |
AWS-DisableS3BucketPublicReadWrite | S3のパブリック公開を無効化 |
AWS-CreateDynamoDBBackup | 「Amazon DynamoDB」テーブルのバックアップを作成 |
AWS-EnableCloudTrail | 「AWS CloudTrail」を有効化 |
今回は「AWS-DisablePublicAccessForSecurityGroup」を利用してSSHへのパブリックアクセスを自動で無効化します。
こちらのドキュメントは、以下の条件を両方とも満たす場合はエラーとなってしまって修復できないので、気を付けてください。
以下のステップに沿ってConfigルールを利用した自動修復を設定していきます。
Copyright © ITmedia, Inc. All Rights Reserved.