Security Lake のカスタムソースからデータを収集する - Amazon Security Lake

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Security Lake のカスタムソースからデータを収集する

Amazon Security Lake はサードパーティのカスタムソースからログとイベントを収集できます。Security Lake はカスタムソースごとに以下を処理します。

  • Amazon S3 バケットのソースに一意プレフィックスが付けられます。

  • AWS Identity and Access Management (IAM) にロールを作成し、カスタムソースがデータレイクにデータを書き込むことができるようにします。このロールのアクセス許可の境界は、 という AWS マネージドポリシーによって設定されますAmazonSecurityLakePermissionsBoundary

  • ソースが Security Lake に書き込むオブジェクトを整理する AWS Lake Formation テーブルを作成します。

  • ソースデータをパーティション化する AWS Glue クローラーを設定します。クローラは AWS Glue Data Catalog にテーブルを入力します。また、新しいソースデータを自動的に検出し、スキーマ定義を抽出します。

Security Lake にカスタムソースを追加するには、次の要件を満たしている必要があります。

  1. 送信先 — カスタムソースは、ソースに割り当てられたプレフィックスの下に S3 オブジェクトのセットとしてデータを Security Lake に書き込むことができる必要があります。複数のカテゴリのデータを含むソースの場合、一意の Open Cybersecurity Schema Framework (OCSF) イベントクラスを個別のソースとして配信する必要があります。Security Lake は、カスタムソースが S3 バケット内の指定された場所に書き込むことを許可するIAMロールを作成します。

    注記

    OCSF 検証ツールを使用して、カスタムソースが と互換性があるかどうかを確認しますOCSF Schema 1.1

  2. フォーマット — カスタムソースから収集された各 S3 オブジェクトは、Apache Parquet ファイルとしてフォーマットする必要があります。

  3. スキーマ – Parquet 形式のオブジェクト内の各レコードには、同じOCSFイベントクラスを適用する必要があります。

Security Lake でカスタムソースを取り込むためのベストプラクティス

効率的なデータ処理とクエリを容易にするために、Security Lake にカスタムソースを追加するときは以下のベストプラクティスに従うことをお勧めします。

パーティション

オブジェクトは、ソースの場所、 AWS リージョン、 AWS アカウントおよび日付でパーティション化する必要があります。

  • パーティションデータパスの形式は です。

    bucket-name/ext/custom-source-name/region=region/accountId=accountID/eventDay=YYYYMMDD.

    サンプルパーティションはです。aws-security-data-lake-us-west-2-lake-uid/ext/custom-source-name/region=us-west-2/accountId=123456789012/eventDay=20230428/

  • ソースバージョンをカスタムソースに追加した場合、パーティションデータパスは の形式になります。

    bucket-name/ext/custom-source-name/custom-source-version/region=us-west-2/accountId=123456789012/eventDay=20230428/

    ソースバージョンを含むサンプルパーティションは ですaws-security-data-lake-us-west-2-lake-uid/ext/custom-source-name/2.0/region=us-west-2/accountId=123456789012/eventDay=20230428/

次のリストは、パーティションで使用されるパラメータを示しています。

  • bucket-name— セキュリティレイクがカスタムソースデータを保存する Amazon S3 バケットの名前。

  • source-location— S3 バケットのカスタムソースのプレフィックス。Security Lake は、特定のソースのすべての S3 オブジェクトをこのプレフィックスの下に格納します。プレフィックスは特定のソースに固有のものです。

  • source-version – カスタムソースのソースバージョン。

  • region – データが書き込まれる AWS リージョン 宛先。

  • accountId – ソースパーティション内のレコードが関連する AWS アカウント ID。

  • eventDay— 8 文字の文字列 () YYYYMMDD としてフォーマットされた、イベントが発生した日付。

オブジェクトのサイズとレート

Security Lake に送信されるファイルは、5 分から 1 イベント日の間を増分して送信する必要があります。ファイルのサイズが 256MB を超える場合、お客様は 5 分以上ファイルを送信できます。オブジェクトとサイズの要件は、Security Lake for Query Performance を最適化することです。カスタムソース要件に従わない場合、Security Lake のパフォーマンスに影響する可能性があります。

Parquetの設定

セキュリティレイクは Parquet のバージョン 1.x と 2.x をサポートします。データページのサイズは 1 MB (非圧縮) に制限する必要があります。行グループのサイズは 256 MB (圧縮) 以下でなければなりません。Parquet オブジェクト内の圧縮には、zstandard が推奨されます。

ソート

Parquet 形式の各オブジェクト内では、データのクエリにかかるコストを削減するために、レコードを時間順に並べる必要があります。

Security Lake にカスタムソースを追加するための前提条件

カスタムソースを追加すると、Security Lake はソースがデータレイク内の正しい場所にデータを書き込むことを可能にするIAMロールを作成します。ロールの名前は の形式に従います。ここでAmazonSecurityLake-Provider-{name of the custom source}-{region}region はカスタムソースを追加する AWS リージョン です。Security Lake は、データレイクへのアクセスを許可するポリシーをロールにアタッチします。カスタマーマネージド AWS KMS キーでデータレイクを暗号化した場合、Security Lake は kms:Decryptおよび アクセスkms:GenerateDataKey許可を持つポリシーをロールにアタッチします。このロールのアクセス許可の境界は、 という AWS マネージドポリシーによって設定されますAmazonSecurityLakePermissionsBoundary

アクセス許可の確認

カスタムソースを追加する前に、次のアクションを実行するアクセス許可があることを確認してください。

アクセス許可を確認するには、 IAMを使用して IAM ID にアタッチされているIAMポリシーを確認します。次に、これらのポリシーの情報を、カスタム ソースを追加するために実行を許可する必要がある次のアクションのリストと比較します。

  • glue:CreateCrawler

  • glue:CreateDatabase

  • glue:CreateTable

  • glue:StopCrawlerSchedule

  • iam:GetRole

  • iam:PutRolePolicy

  • iam:DeleteRolePolicy

  • iam:PassRole

  • lakeformation:RegisterResource

  • lakeformation:GrantPermissions

  • s3:ListBucket

  • s3:PutObject

これらのアクションを使用すると、カスタムソースからログとイベントを収集し、正しい AWS Glue データベースとテーブルに送信して、Amazon S3 に保存できます。

データレイクのサーバー側の暗号化に AWS KMS キーを使用する場合は、kms:CreateGrantkms:DescribeKey、および のアクセス許可も必要ですkms:GenerateDataKey

重要

Security Lake コンソールを使用してカスタムソースを追加する場合は、次のステップをスキップして に進みますSecurity Lake でのカスタムソースの追加。Security Lake コンソールは、開始するための合理化されたプロセスを提供し、必要なすべてのIAMロールを作成するか、ユーザーに代わって既存のロールを使用します。

Security Lake APIまたは を使用してカスタムソース AWS CLI を追加する場合は、次のステップに進み、Security Lake バケットの場所への書き込みアクセスを許可するIAMロールを作成します。

Security Lake バケットの場所への書き込みアクセスを許可するIAMロールを作成する (API および AWS CLIのみのステップ)

Security Lake APIまたは を使用してカスタムソース AWS CLI を追加する場合は、このIAMロールを追加して、カスタムソースデータをクロールし、データ内のパーティションを識別する AWS Glue アクセス許可を付与します。これらのパーティションは、データを整理し、Data Catalog 内のテーブルを作成および更新するために必要です。

このIAMロールを作成したら、カスタムソースを追加するには、ロールの Amazon リソースネーム (ARN) が必要です。

arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole AWS マネージドポリシーをアタッチする必要があります。

必要なアクセス許可を付与するには、ロールに次のインラインポリシーを作成して埋め込み、 がカスタムソースからデータファイルを読み取って AWS Glue Data Catalog のテーブルを作成/更新 AWS Glue クローラー できるようにする必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3WriteRead", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::{{bucketName}}/*" ] } ] }

次の信頼ポリシーをアタッチして、外部 ID に基づいてロールを引き受けることができる AWS アカウント を許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

カスタムソースを追加するリージョンの S3 バケットがカスタマーマネージド で暗号化されている場合は AWS KMS key、次のポリシーをロールとKMSキーポリシーにアタッチする必要があります。

{ "Effect": "Allow", "Action": [ "kms:GenerateDataKey" "kms:Decrypt" ], "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::{{name of S3 bucket created by Security Lake}" ] } }, "Resource": [ "{{ARN of customer managed key}}" ] }