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

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

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

Amazon Security Lake はサードパーティのカスタムソースからログとイベントを収集できます。Security Lake カスタムソースは、セキュリティログとイベントを Amazon Security Lake に送信するサードパーティーサービスです。データを送信する前に、カスタムソースはログとイベントを Open Cybersecurity Schema Framework (OCSF) に変換し、パーティショニング、parquet ファイル形式、オブジェクトのサイズとレートの要件など、Security Lake のソース要件を満たしている必要があります。

Security Lake はカスタムソースごとに以下を処理します。

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

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

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

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

注記

アカウントには最大 50 個のカスタムログソースを追加できます。

Security Lake にカスタムソースを追加するには、次の要件を満たす必要があります。これらの要件を満たさないと、パフォーマンスに影響が及び、クエリなどの分析のユースケースに影響する可能性があります。

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

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

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

  • パーティショニング – オブジェクトは、リージョン、 AWS アカウント、 でパーティション化する必要がありますeventDay。オブジェクトには というプレフィックスを付ける必要がありますsource location/region=region/accountId=accountID/eventDay=yyyyMMdd/

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

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

注記

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

Security Lake でカスタムソースを取り込むためのパーティション要件

データ処理とクエリを効率的に行うには、Security Lake にカスタムソースを追加するときに、パーティショニングとオブジェクトとサイズの要件を満たす必要があります。

パーティション

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

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

    /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/

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

  • Security Lake がカスタムソースデータを保存する Amazon S3 バケットの名前。

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

  • region – データのアップロード AWS リージョン 先。たとえば、 US East (N. Virginia)を使用して、米国東部 (バージニア北部) リージョンの Security Lake バケットにデータをアップロードする必要があります。

  • accountId –ソースパーティションのレコードが関連する AWS アカウント ID。の外部のアカウントに関連するレコードの場合は AWS、 externalや などの文字列を使用することをお勧めしますexternal_externalAccountId。この命名規則を採用することで、外部アカウントの命名があいまいになるのを回避IDsし、他の ID 管理システムによってIDs維持されている AWS アカウントIDsや外部アカウントと競合しないようにすることができます。

  • eventDay - レコードのUTCタイムスタンプ。8 文字の文字列 () 形式の 1 時間に切り捨てられますYYYYMMDD。レコードがイベントタイムスタンプで別のタイムゾーンを指定する場合は、このパーティションキーUTCのタイムスタンプを に変換する必要があります。

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アイデンティティにアタッチされている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 クローラー がカスタムソースからデータファイルを読み取って AWS Glue Data Catalog のテーブルを作成/更新できるようにする必要があります。

{ "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}}" ] }