[レポート] SEC322: AWS Lambda をセキュリティチームとして利用 #reinvent

SEC322-R - [REPEAT] Using AWS Lambda as a Security Team

Operating a security practice on AWS brings many new challenges and opportunities that have not been addressed in data center environments. The dynamic nature of infrastructure, the relationship between development team members and their applications, and the architecture paradigms have all changed as a result of building software on top of AWS. In this session, learn how your security team can leverage AWS Lambda as a tool to monitor, audit, and enforce your security policies within an AWS environment.

セッション

  • Event Drivenな仕組みを使って通知させる
  • 通知させる仕組みの構成
    • CloudWatch -> Metric -> Alerms -> SNS -> AWS Lambda
    • SNSではなく、直接AWS Lambda
  • Logsのサブスクライブで連携させることのできるサービス群
    • Elasticsearch
    • Kinesis
    • AWS Lambda

Event Driven - Logs

以下がLogsでの構成例

  • AWS CloudTrail
    • AWS CloudTrail -> CloudWatch Logs -> AWS Lambda
  • VPC Flow Logs
    • VPC Flow Logs -> CloudWatch Logs -> AWS Lambda
  • Logからの利用用途としては
    • Alerting
    • Detecting

Event Driven - Metrics

以下がMetricsでの構成例

  • AWS WAF
    • AWS WAF -> CloudWatch Alarms -> SNS -> AWS Lambda
  • AWS Shield
    • AWS Shield -> CloudWatch Alarms -> SNS -> AWS Lambda
  • メトリクスからの利用用途としては
    • SQL Injection Alarm
      • Lambda 側の実装はログを吐き出すシンプルな構成

Event Driven - Events

  • Macie
    • Macie -> CloudWatch Events -> AWS Lambda
  • Amazon GuardDudy
    • Amazon GuardDudy -> CloudWatch Events -> AWS Lambda

Hands off

  • EC2インスタンスで起きる問題がおきるとしたら?
    • 非同期実行コマンド
    • SSH / RDPを必要としない
    • コマンドと出力ログ

Event Driven Security Architectures

Lambda for Cloud Security at Dow Jones

  • マルチアカウントでのセキュリティ
    • 自動化
    • 中央集権
    • 低リスク
    • 簡単に使える
    • フレキシブル
    • スケーラブル

Lambda Makes Redwood Dynamic

  • パッチの更新
  • 強制的に反応させる
  • 新しい開発アカウントの作成

CloudWatch LogsのLambdaのメトリクスで作成されたユーザーを可視化する

Multi-Account Security Patterns Using Lambda

Amazon CloudWatch Events Busを使ってマルチアカウントのイベントを検知する

AWS Config & Config Rules

Configでルールを作成し、次に AWS Config Aggregator を作成する

開始方法

CloudFormation StackSetsを使って、別リージョン、別アカウントに OrganizationCloudTrail を展開させる

Lambdaのコードは以下の処理を記載

  • boto3sts から assume_role で別アカウントから Assume Role
  • EC2 APIから decsribe しているEC2を取得し、そのインスタンスの状態を取得する

これを行うと、中央集権のアカウントで別アカウントのEC2の起動の様子を取得できる

まとめ

複数アカウントにまたがる状態の変更を、 AWS Config 、 AWS Config Aggregator を更生することで、EC2のインスタンスの状態変更など、セキュリティに関わる情報を AWS Lambda で取得させることで、セキュリティチームとして運用されている方法が話されていました。