カスタムソースからのデータ収集 - Amazon 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. スキーマ — 同じ OCSF イベントクラスを Parquet 形式のオブジェクト内の各レコードに適用する必要があります。

カスタムソースの取り込みのベストプラクティス

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

パーティション

オブジェクトは、ソースの場所、 AWS リージョン、 AWS アカウント日付でパーティション化する必要があります。パーティションデータパスはという形式です。bucket-name/source-location/region=region/accountId=accountID/eventDay=YYYYMMDD

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

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

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

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

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

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

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

Security Lake に書き込まれたオブジェクトは、レコードを 5 分間バッファリングする必要があります。バッファ期間に含まれるデータが多すぎて効率的にクエリできない場合、ファイルの平均サイズが 256 MB 未満であれば、カスタムソースは 5 分間のウィンドウに複数のレコードを書き込むことができます。スループットの低いカスタムソースは、5 分間の取り込み待ち時間を維持するために 5 分ごとに小さなオブジェクトを書き込むことができ、レコードを長期間バッファリングできます。

Parquetの設定

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

ソート

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

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

カスタムソースを追加すると、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:CreateGrant、、kms:DescribeKeyおよび のアクセス許可も必要ですkms:GenerateDataKey

重要

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}}/*" ] } ] }

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

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

カスタムソースの追加

AWS Glue クローラーを呼び出す IAM ロールを作成したら、以下の手順に従って Security Lake にカスタムソースを追加します。

Console
  1. Security Lake コンソール https://console.aws.amazon.com/securitylake/ を開きます。

  2. ページの右上隅にある AWS リージョン セレクターを使用して、カスタムソースを作成するリージョンを選択します。

  3. ナビゲーションペインで [カスタムソース] を選択してから、[カスタムソースの作成] を選択します。

  4. カスタムソースの詳細」セクションに、カスタムソースのグローバルに一意の名前を入力します。次に、カスタムソースが Security Lake に送信するデータの種類を説明する OCSF イベントクラスを選択します。

  5. データの書き込み権限を持つAWS アカウント の場合、データ レイクにログとイベントを書き込むカスタム ソースの AWS アカウント ID外部 ID を入力します。

  6. サービス アクセスの場合は、新しいサービス ロールを作成して使用するか、Security Lake に AWS Glueを呼び出すアクセス許可を付与する既存のサービス ロールを使用します。

  7. [Create] (作成) を選択します。

API

プログラムでカスタムソースを追加するには、Security Lake API の CreateCustomLogSourceオペレーションを使用します。カスタムソースを作成する AWS リージョン で オペレーションを使用します。 AWS Command Line Interface (AWS CLI) を使用している場合は、create-custom-log-source コマンドを実行します。

リクエストでは、サポートされているパラメータを使用してカスタムソースの構成設定を指定します。

  • sourceName – ソースの名前を指定します。名前は地域一意である必要があります。

  • eventClasses — ソースが Security Lake に送信するデータのタイプを記述する 1 つ以上の OCSF イベントクラスを指定します。Security Lake でソースとしてサポートされている OCSF イベントクラスのリストについては、「Open Cybersecurity Schema Framework (OCSF)」を参照してください。

  • sourceVersion – オプションで、ログ収集を特定のバージョンのカスタムソースデータに制限する値を指定します。

  • crawlerConfiguration – クローラーを呼び出す AWS Glue ために作成した IAM ロールの Amazon リソースネーム (ARN) を指定します。IAM ロールを作成する詳細な手順については、「カスタムソースを追加するための前提条件」を参照してください。

  • providerIdentity – ソースがデータレイクへのログとイベントの書き込みに使用する AWS ID と外部 ID を指定します。

次の例では、カスタムソースを、指定されたリージョンの指定されたログプロバイダーアカウントにログソースとして追加します。この例は Linux、macOS、または Unix 用にフォーマットされており、読みやすさを向上させるためにバックスラッシュ (\) の行継続文字を使用しています。

$ aws securitylake create-custom-log-source \ --source-name EXAMPLE_CUSTOM_SOURCE \ --event-classes '["DNS_ACTIVITY", "NETWORK_ACTIVITY"]' \ --configuration crawlerConfiguration={"roleArn=arn:aws:iam::XXX:role/service-role/RoleName"},providerIdentity={"externalId=ExternalId,principal=principal"} \ --region=[“ap-southeast-2”]

でカスタムソースデータを更新する AWS Glue

Security Lake にカスタムソースを追加すると、Security Lake は AWS Glue クローラを作成します。クローラーはカスタムソースに接続し、データ構造を決定し、 AWS Glue データカタログにテーブルを入力します。

カスタムソーススキーマを最新の状態に保ち、Athena やその他のクエリサービスのクエリ機能を維持するために、クローラーを手動で実行することをお勧めします。特に、カスタムソースの入力データセットに以下のいずれかの変更が生じた場合は、クローラーを実行する必要があります。

  • このデータセットには、1 つ以上の新しい最上位列があります。

  • データセットには、structデータ型の列に 1 つ以上の新しいフィールドがあります。

クローラーの実行手順については、「 デベロAWS Glue ッパーガイド」の AWS Glue 「クローラーのスケジュール」を参照してください。

Security Lake では、アカウント内の既存のクローラーを削除または更新することはできません。カスタムソースを削除した場合、future 同じ名前のカスタムソースを作成する予定がある場合は、関連するクローラーを削除することをお勧めします。

カスタムソースの削除

カスタムソースを削除して、ソースから Security Lake へのデータ送信を停止します。

Console
  1. Security Lake コンソール https://console.aws.amazon.com/securitylake/ を開きます。

  2. ページの右上隅にある AWS リージョン セレクターを使用して、カスタムソースを削除するリージョンを選択します。

  3. ナビゲーションペインで、[Custom source] (カスタムソース) を選択します。

  4. 削除する カスタムソース を選択します。

  5. [カスタムソースの登録解除] を選択し、[削除] を選択してアクションを確定します。

API

カスタムソースをプログラムで削除するには、Security Lake API の DeleteCustomLogSourceオペレーションを使用します。 AWS Command Line Interface (AWS CLI) を使用している場合は、delete-custom-log-source コマンドを実行します。カスタム ソースを削除する AWS リージョン 内の操作を使用します。

リクエストでは、sourceNameパラメータを使用して削除するカスタムソースの名前を指定します。または、カスタムソースの名前を指定し、sourceVersionパラメーターを使用して削除の範囲をカスタムソースの特定のバージョンのデータのみに制限します。

次の例では、Security Lake からカスタムログソースを削除します。

この例は Linux、macOS、または Unix 用にフォーマットされており、読みやすさを向上させるためにバックスラッシュ (\) の行継続文字を使用しています。

$ aws securitylake delete-custom-log-source \ --source-name EXAMPLE_CUSTOM_SOURCE