こんにちは!ファインディでSREチームをしている安達(@adachin0817)です。 この記事はFindy Advent Calendar 2024 13日目の記事です。12月といえば、私が飼っているフレンチブルドッグのBull氏が2歳を迎えました。この二年間、仕事しつつ、犬の面倒も見れたことを誇りに思います。

はじめに

さて、本題に入りますが、AWSでセキュリティ関連のログ(CloudTrailやWAFなど)を可視化して分析する際、独自実装では工数がかかってしまいます。SaaSモニタリングツールにログを転送して運用する方法もありますが、コストが高くなりやすい傾向があります。今回は、セキュリティログを簡単に一元管理できるAmazon Security Lakeを試してみました。導入の手軽さや運用性について、実際の使用感をブログします。


Amazon Security Lakeとは

https://aws.amazon.com/jp/security-lake/

https://pages.awscloud.com/rs/112-TZM-766/images/20230126_26th_ISV_DiveDeepSeminar_Amazon_Security_Lake.pdf

フルマネージド型のセキュリティデータレイクサービスで、AWSから収集したセキュリティデータ(ログやイベントデータ)を専用のデータレイクに自動で一元管理ができます。また、Open Cybersecurity Schema Framework (OCSF)、Apache Parquetに基づいてデータを標準化しているため、さまざまな分析ツールやセキュリティアプリケーションとの互換性が向上し、内部監査のニーズにも対応しやすくなります。基本、S3にログが格納され、GlueとAthenaを利用してGrafanaで分析するのがベストだと思うので、まずはTerraform化していきましょう。

  • 対象サービス
    • VPC Flow Log
    • CloudTrail 管理イベントとデータイベント (S3、Lambda)
    • Route 53 Resolver クエリログ
    • EKS 監査ログ
    • Security Hub 調査結果

Terraform(Amazon Security Lake)

  • 構成図

  • ※前提条件

AWS Organizationsの有効化にする必要があります。管理アカウントから委任管理アカウントに対して、Amazon Security Lakeを有効化にします。その後、委任管理アカウントでSecurity Lakeの設定をする流れとなります。

  • securitylake.tf

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/securitylake_data_lake

まず、AWS Security Lakeのメタデータを管理するために必要なIAMロールを作成します。このロールはデータ加工でAWS Lambdaがこのロールを引き受けられるように設定されています。さらに、このロールにはAWSが提供する「AmazonSecurityLakeMetastoreManager」ポリシーをアタッチすることで、Security Lakeのメタストア管理機能を利用可能にしています。

次に、Security Lakeのデータレイクを設定します。このデータレイクは、指定されたAWSリージョンごとに構築され、それぞれがIAMロール「meta_store_manager_role」を使用します。データの暗号化には、S3の管理キー(S3_MANAGED_KEY)を採用し、データのライフサイクル管理も行います。具体的には、データを31日後に低コストのストレージクラスであるSTANDARD_IAに移行する設定にしました。

  • locals.tf

AWSアカウントからセキュリティログを収集するために、複数のアカウントと全リージョンを対象に、CloudTrailやVPC Flow Logなどのセキュリティ関連ログを収集するように指定しました。この設定ではlocals.tfの内容を基に、ログソースごとの収集範囲を柔軟に指定できるようにしました。

ちなみにリソース等すべて削除する場合は、GlueのDBとS3バケットを削除しないとTerraform側でエラーが止まらないので気をつけましょう。試しにAthenaでWAFのテーブルをクエリ叩くと以下のように値が出てくれば完了です。

  • 動作確認

疑問点

実装していて、いくつか疑問点が浮かびましたので、AWSサポートに聞いてみました!

  • VPC Flow LogやWAFのログを個別に有効化していないにもかかわらず、なぜ取得できているのか?

AWS内部でログを取得するためのストリームがあり、そこからデータを取り込んでいるとのことでした。

  • これらのログを個別に有効化した場合に料金が二重に発生するのではないのか?

そのようなことはありませんでした。

  • Terraformとの相性について

マネージドということもあって、AWS Security Lakeが内部的に多くのリソースを自動的に作成するため、これらをTerraformで管理する場合、terraform import を用いて個別にインポートする必要があり、管理が煩雑になる点が挙げられます。そのため、これらのリソースはTerraformで直接管理せず、AWSの管理に任せるほうが運用上適していると思われます。

  • CloudTrail
    • CreateServiceLinkedChannel
  • Lambda
    • CreateEventSourceMapping20150331
    • CreateFunction20150331
    • AddPermission20150331v2
  • EventBridge (Events)
    • PutRule
    • PutTargets
  • S3
    • PutBucketNotification
    • PutBucketEncryption
    • PutBucketPublicAccessBlock
    • PutBucketPolicy
    • CreateBucket
  • SQS
    • SetQueueAttributes
    • CreateQueue
  • Glue
    • CreateTable
    • CreateDatabase
  • Lake Formation
    • GrantPermissions
    • PutDataLakeSettings
  • KMS
    • CreateGrant
  • Athenaのコストについて(パーティション)

パーティションの設定が適切でないと不要なコストがかかるのではないかと心配していました。しかし、DESCRIBE コマンドでテーブルを確認したところ、日付ごとに管理されたParquetファイルを参照しており、自動的に適切なパーティションが行われていることが分かりました。


Terraform(AWS Managed Grafana)

https://aws.amazon.com/jp/grafana/

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/grafana_workspace

  • grafana.tf

  • コスト
    • $9
      • ダッシュボードとアラートの作成と管理
      • およびデータソースにアクセスするためのアクセス許可の割り当てのための管理者権限
    • $5
      • ダッシュボード、アラート、およびクエリデータソースを表示
      • ワークスペースで他のアクションを実行することは不可

BIツールは、自前で運用すると荷が重いため、閲覧者であれば$5であるAWS Managed Grafanaを利用してAthenaやCloudWatchからのデータを取得し、ダッシュボードを作成できる環境にしました。セキュリティ強化のため、AWS SSOを利用した認証にしました。ちなみにGrafanaからDatabaseを参照できない場合は、以下LakeFormationのGrant Permissionを追加しないといけないため、ここもあとでTerraform化しないといけなさそうです。

  • 動作確認


まとめ

Amazon Security Lakeはセキュリティデータの収集、分析を効率化し、統合的なセキュリティ基盤を実現するための強力なサービスであるのと、導入もシンプルであるなと感じました。セキュリティログ基盤の運用負担を軽減しつつ、コスト効率も両立できそうです。また、Grafanaでユーザーごとにテーブルの制限なども設計しなければならないので、追々ブログしていきます!

読んでいただきありがとうございました!明日の14日は@hyuta555さんです!


adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください