aws-samples / siem-on-amazon-opensearch-service

A solution for collecting, correlating and visualizing multiple types of logs to help investigate security incidents.
MIT No Attribution
566 stars 185 forks source link

Third-party product logs in Security Lake not ingested by OpenSearch Service #374

Closed ihsiek-s closed 1 year ago

ihsiek-s commented 1 year ago

Third-party product logs stored in the Amazon Security Lake are not being ingested by Amazon OpenSearch Service.

Thank you.


Amazon Security Lakeに保持しているサードパーティ製品のログがAmazon OpenSearch Serviceに取り込まれません。 以下の2点が原因であることは確認しておりますが、どういう対応が適切でしょうか?

nakajiak commented 1 year ago

Thanks so much. We will investigate it asap.

nakajiak commented 1 year ago

OCSFのJSONファイルを読み込んでテストしました。https://github.com/ocsf/examples

ihsiek-s commented 1 year ago

ご対応ありがとうございます。 動作確認しようとしている中で気になったポイントを2点確認させてください。

s3_keyの定義が一致しない場合の対応方法について

Security Lakeのカスタムリソースは 3バケットに securitylake というディレクトリを作成して、その配下に parquet ファイルを配置してください

S3バケットにsecuritylakeのディレクトリを作成すると同ディレクトリ以下が連携対象となることを確認いたしました。 こちらの実装ですが、Security Lakeのドキュメントで紹介されているベストプラクティスによると bucket-name/source-location/region=region/accountId=accountID/eventDay=YYYYMMDDのようなパスが想定されていることを確認しております。 @nakajiak さんの想定でも、bucket-name/securitylake/region=region/accountId=accountID/eventDay=YYYYMMDD/hoge.parquetのような階層を想定されていると理解しておりますが、私の手元でSecurity Lakeと連携している2つのセキュリティベンダーのログはいずれもaws-security-data-lake-<region>-<lake-uid>/<vendor-name>/region=<region>/accountId=<account-id>/eventDay=<YYYYMMDD>/hoge.parquet のような階層でファイルを出力することも確認しております。(セキュリティ上の理由で製品名は提示できず申し訳ございません) いずれのサードパーティ製品も第1階層のディレクトリ名を製品名で固定しているのですが、このようなケースでは、user.ini[securitylake]を追記し、s3_keyをカスタム定義することが好ましいとの理解でよろしいでしょうか。 ベンダー側のETLのソースに手を入れる選択肢もありますが、今後のメンテナンスを考慮すると極力避けたい選択肢となります。

developブランチのデプロイエラーについて

developブランチをpullしてcdk deployコマンドを実行したところ以下のエラーが発生し、デプロイに失敗しました。

Traceback (most recent call last):
  File "/home/ec2-user/siem-on-amazon-opensearch-service/source/cdk/app.py", line 24, in <module>
    MyAesSiemStack(app, "aes-siem",
  File "/home/ec2-user/siem-on-amazon-opensearch-service/.venv/lib64/python3.9/site-packages/jsii/_runtime.py", line 112, in __call__
    inst = super().__call__(*args, **kwargs)
  File "/home/ec2-user/siem-on-amazon-opensearch-service/source/cdk/mysiem/aes_siem_stack.py", line 1190, in __init__
    enrich.setup_ioc())
  File "/home/ec2-user/siem-on-amazon-opensearch-service/source/cdk/mysiem/enrichment.py", line 272, in setup_ioc
    aws_stepfunctions.DefinitionBody.from_chainable(definition)),
AttributeError: module 'aws_cdk.aws_stepfunctions' has no attribute 'DefinitionBody'

Subprocess exited with error 1

下記の修正箇所を元の実装に書き換えたところ動作するようになりましたが、何か追加のオプションが必要でしょうか? https://github.com/aws-samples/siem-on-amazon-opensearch-service/commit/cf87548ca18864cbc1c7fab7b4243dd0ec884c77#diff-8716cb9151c3f5cfd23594fd42e60385cd217c4ade6cae74d89352052b01da72L271

nakajiak commented 1 year ago

ご指摘の通りuser.iniでカバーをしてもらえればと思います。

user.iniの例

[securitylake]
s3_key = s3_key = [0-9a-f]{32}\.gz\.parquet|/<vendor-name>/

または

[securitylake]
s3_key = s3_key = [0-9a-f]{32}\.gz\.parquet|hoge.parquetの共通部分の正規表現

差分だけで大丈夫です。他は既存の設定が引き継がれます

CDKのエラーはバージョンが古いのではと推測しています。cdk --version で確認できるバージョンはいくつでしょうか?こちらの手順 https://github.com/aws-samples/siem-on-amazon-opensearch-service/blob/main/docs/deployment_ja.md#aws-cdk-によるアップデート にアップデート方法を記載してますが、特にこちらのコマンドは実行されましたか? chmod +x ./step2-setup-cdk-env.sh && ./step2-setup-cdk-env.sh

ihsiek-s commented 1 year ago

ご指摘の通りuser.iniでカバーをしてもらえればと思います。

こちら承知いたしました。 差分だけ記載すればよい点も補足ありがとうございます。把握いたしました。

CDKのエラーはバージョンが古いのではと推測しています。

cdk --versionは実行しそびれましたが、chmod +x ./step2-setup-cdk-env.sh && ./step2-setup-cdk-env.shのコマンドを再実行したことでデプロイできることを確認できました。初歩的なつまづきでお手数をおかけして申し訳ございません。

ihsiek-s commented 1 year ago

動作確認を行い、今回の修正でIssueの事象が解消したことを確認できました。 ご対応ありがとうございました。

nakajiak commented 1 year ago

ご要望やフィードバックがありましたら、またお知らせください