LoginSignup
0
0

More than 5 years have passed since last update.

AWS Lambda または crontab で Amazon Inspector によるEC2のセキュリティ脆弱性評価を定期的に自動実行する

Last updated at Posted at 2016-11-21

はじめに

Amazon InspectorによるEC2のセキュリティ脆弱性評価について、定期的に自動実行したいケースがあるかと思います。

AWS Lambdaファンクションは「Trigges」の「CloudWatch Events - Schedule」機能を利用する事で、指定したタイミングでAWS Lambdaファンクションを自動的に実行させる事が可能です。

AWS Lambdaファンクション(Node.js) または crontab で、Amazon InspectorによるEC2のセキュリティ脆弱性評価を定期的に実行する方法を以下に記します。

参考資料

本手順で脆弱性評価を実行するEC2インスタンス(Amazon Linux)、AWS Lambdaファンクションは以下の手順で作成したものを利用しております。

AWS Lambda で Amazon Inspector によるEC2のセキュリティ脆弱性評価を実行する
http://qiita.com/na0AaooQ/items/9cfd66ac0e83de651f98

crontabでEC2セキュリティ脆弱性評価を定期的に実行する

(1) Amazon InspectorによりEC2セキュリティ脆弱性評価を実行するバッチを作成します。

Amazon InspectorによりEC2セキュリティ脆弱性評価を実行するバッチを作成します。

[ec2-user@example-server ~]$ vi /home/ec2-user/start_amazon_inspector.sh
#!/bin/bash

date

/usr/bin/aws inspector start-assessment-run --region ap-northeast-1 --assessment-template-arn "arn:aws:inspector:ap-northeast-1:XXXXXXXXXXXX:target/0-XXXXXXXX/template/X-XXXXXXXX" --assessment-run-name "`/bin/hostname`-`/bin/date '+%Y%m%d-%H%M%S'`"

date
[ec2-user@example-server ~]$ cat /home/ec2-user/start_amazon_inspector.sh
#!/bin/bash

date

/usr/bin/aws inspector start-assessment-run --region ap-northeast-1 --assessment-template-arn "arn:aws:inspector:ap-northeast-1:XXXXXXXXXXXX:target/0-XXXXXXXX/template/X-XXXXXXXX" --assessment-run-name "`/bin/hostname`-`/bin/date '+%Y%m%d-%H%M%S'`"

date
[ec2-user@example-server ~]$ 

(2) 作成したバッチに構文エラーない事を確認します。

[ec2-user@example-server ~]$ sh -n /home/ec2-user/start_amazon_inspector.sh
[ec2-user@example-server ~]$ 

(3) 作成したバッチに実行権限を設定します。

[ec2-user@example-server ~]$ chmod 755 /home/ec2-user/start_amazon_inspector.sh
[ec2-user@example-server ~]$ 

(4) crontabにバッチを登録し、Amazon InspectorによるEC2セキュリティ脆弱性評価を定期的に実行します。

[ec2-user@example-server ~]$ crontab -l
MAILTO=example@example.com

## Amazon Inspectorによるセキュリティ脆弱性評価を自動実行する(毎日20:10に脆弱性評価を自動実行する)
10 20 * * * /home/ec2-user/start_amazon_inspector.sh > /tmp/AmazonInspector.log 2>&1
[ec2-user@example-server ~]$ 

(5) 指定した時間になったら、crontabでバッチが実行されて、Amazon InspectorによるEC2セキュリティ脆弱性評価が自動的に開始される事を確認します。

[ec2-user@example-server ~]$ cat /tmp/AmazonInspector.log
Mon Nov 21 20:06:00 JST 2016
{
    "assessmentRunArn": "arn:aws:inspector:ap-northeast-1:XXXXXXXXXXXX:target/0-XXXXXXXX/template/X-XXXXXXXX/run/0-XXXXXXXX"
}
Mon Nov 21 20:06:01 JST 2016
[ec2-user@example-server ~]$ 

スクリーンショット 2016-11-21 20.12.31.png

AWS LambdaでEC2セキュリティ脆弱性評価を定期的に実行する

(6)「AWSマネジメントコンソール」で「Lambda」を表示します。

スクリーンショット 2016-11-21 20.21.21.png

(7) Amazon InspectorによりEC2セキュリティ脆弱性評価を実行するLambdaファンクションを表示します。

「AWSマネジメントコンソール」->「Lambda」->「Functions」をクリックします。
Amazon InspectorによりEC2セキュリティ脆弱性評価を実行するLambdaファンクションを選択します。

スクリーンショット 2016-11-21 20.21.49.png

(8) Lambdaファンクションの内容が表示されます。「Code」タブをクリックして、以下のようなコードになっている事を確認します。

example-lambda-amazon-inspector-assessment.js
'use strict';

// http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Inspector.html#startAssessmentRun-property
var AWS = require('aws-sdk')
  , inspector = new AWS.Inspector({ apiVersion: '2016-02-16' })
  ;

exports.handler = (event, context) => {

  console.log('Start Amazon Inspector AssessmentRun');

  // Add timedate to description
  var date = new Date();
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  var day = date.getDate();
  var hour = date.getHours();
  var minutes = date.getMinutes();
  if ( day < 10 ) {
    day = '0' + day;
  }
  // UTC to JST
  hour += 9;
  if ( hour < 10 ) {
    hour = '0' + hour;
  }
  if ( minutes < 10 ) {
    minutes = '0' + minutes;
  }
  var assessmentRunDate = '-' + year.toString() + month.toString() + day.toString() + '-' + hour.toString() + minutes.toString();

  var params = {
    assessmentTemplateArn: 'arn:aws:inspector:ap-northeast-1:XXXXXXXXXXXX:target/0-XXXXXXXX/template/X-XXXXXXXX',
    assessmentRunName: 'example-server' + assessmentRunDate
  };

  inspector.startAssessmentRun(params, function(err, data) {
    if (err) context.done(err, err.stack);
    else context.done(null, data);
  });

};

(9)「Triggers」タブをクリックします。

スクリーンショット 2016-11-21 20.23.52.png

(10)「Triggers」タブの「Add trigger」をクリックします。

スクリーンショット 2016-11-21 20.24.49.png

(11)「Add trigger」画面が表示されます。白抜き点線ボックスをクリックします。

スクリーンショット 2016-11-21 20.25.39.png

(12)「CloudWatch Events - Schedule」をクリックします。

スクリーンショット 2016-11-21 20.26.36.png

(13)「Add trigger」画面が表示されます。Lambdaファンクションを定期的に実行する為にトリガーを作成します。作成するトリガー設定を入力して「Submit」をクリックします。

スクリーンショット 2016-11-21 20.28.05.png

設定項目 設定例 備考
Rule name example-lambda-amazon-inspector-assessment
Rule description example-lambda-amazon-inspector-assessment
Schedule expression cron(35 11 ? * MON-FRI *) Lambdaファンクション実行時間はUTCで指定します。JST 20:35にLambdaファンクションを実行させたい場合、左記のように指定します。

「Enable trigger」にはチェックをつけて「Submit」をクリックします。これにより、Lambdaファンクションを定期的に実行する設定が登録されます。

スクリーンショット 2016-11-21 20.32.45.png

スクリーンショット 2016-11-21 20.33.47.png

(14) 指定した時間になったら、AWS Lambdaファンクションが実行されて、Amazon InspectorによるEC2セキュリティ脆弱性評価が自動的に開始される事を確認します。

スクリーンショット 2016-11-21 20.38.59.png


AWS Lambdaやcrontabを利用する事で、Amazon InspectorによるEC2のセキュリティ脆弱性評価を定期的に実行する事が出来るので便利ですね。

以上になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0