

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

# Security Lake のカスタムソースからデータを収集する
<a name="custom-sources"></a>

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`](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSecurityLakePermissionsBoundary)。
+ ソースが Security Lake に書き込むオブジェクトを整理する AWS Lake Formation テーブルを作成します。
+ ソースデータをパーティション化するための AWS Glue クローラを設定します。クローラは、 AWS Glue Data Catalog に テーブルを入力します。また、新しいソースデータを自動的に検出し、スキーマ定義を抽出します。

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

Security Lake にカスタムソースを追加するには、次の要件を満たしている必要があります。これらの要件を満たさないと、パフォーマンスに影響が及び、クエリなどの分析のユースケースに影響する可能性があります。
+ **送信先** — カスタムソースは、ソースに割り当てられたプレフィックスの下に S3 オブジェクトのセットとしてデータを Security Lake に書き込むことができる必要があります。複数のカテゴリのデータを含むソースの場合は、それぞれ固有の [Open Cybersecurity Schema Framework (OCSF) イベントクラス](https://schema.ocsf.io/classes?extensions=)を個別のソースとして配信する必要があります。Security Lake は、カスタムソースが S3 バケット内の指定された場所に書き込むことを許可する IAM ロールを作成します。
+ **フォーマット** — カスタムソースから収集された各 S3 オブジェクトは、Apache Parquet ファイルとしてフォーマットする必要があります。
+ **スキーマ** — 同じ OCSF イベントクラスを Parquet 形式のオブジェクト内の各レコードに適用する必要があります。セキュリティレイクは Parquet のバージョン 1.x と 2.x をサポートします。データページのサイズは 1 MB (非圧縮) に制限する必要があります。行グループのサイズは 256 MB (圧縮) 以下でなければなりません。Parquet オブジェクト内の圧縮には、zstandard が推奨されます。
+ **パーティション化** – オブジェクトは region、 AWS account、eventDay でパーティション化する必要があります。オブジェクトには というプレフィックスを付ける必要があります`{{source location}}/region={{region}}/accountId={{accountID}}/eventDay={{yyyyMMdd}}/`。
+ **オブジェクトのサイズとレート** – Security Lake に送信されるファイルは、5 分から 1 イベント日の間で増分で送信する必要があります。ファイルのサイズが 256MB を超える場合、お客様は 5 分以上ファイルを送信できます。オブジェクトとサイズの要件は、クエリパフォーマンスのために Security Lake を最適化することです。カスタムソース要件に従わない場合、Security Lake のパフォーマンスに影響する可能性があります。
+ **ソート** – 各 Parquet 形式のオブジェクト内では、データのクエリコストを削減するためにレコードを時間順に並べる必要があります。

**注記**  
[OCSF 検証ツールを使用して](https://github.com/aws-samples/amazon-security-lake-ocsf-validation)、カスタムソースが と互換性があるかどうかを確認します`OCSF Schema`。カスタムソースの場合、Security Lake は OCSF バージョン 1.3 以前をサポートしています。

## Security Lake でカスタムソースを取り込むためのパーティション要件
<a name="custom-sources-best-practices"></a>

効率的なデータ処理とクエリを容易にするには、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`。この命名規則を採用することで、他の ID 管理システムによって維持されているアカウント IDs または外部 AWS アカウント IDs と競合しないように、外部アカウント IDsに名前を付ける際のあいまいさを回避できます。
+ `eventDay` – レコードの UTC タイムスタンプ。8 文字の文字列 () 形式の時間に変換されます`YYYYMMDD`。レコードでイベントタイムスタンプに別のタイムゾーンが指定されている場合は、このパーティションキーのタイムスタンプを UTC に変換する必要があります。

## Security Lake でカスタムソースを追加するための前提条件
<a name="iam-roles-custom-sources"></a>

カスタムソースを追加すると、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`](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSecurityLakePermissionsBoundary)。

**Topics**
+ [アクセス許可の確認](#add-custom-sources-permissions)
+ [Security Lake バケットの場所への書き込みアクセスを許可する IAM ロールを作成する (API および AWS CLI専用ステップ)](#iam-roles-glue-crawler)

### アクセス許可の確認
<a name="add-custom-sources-permissions"></a>

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

権限を確認するには、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 でのカスタムソースの追加](adding-custom-sources.md)。Security Lake コンソールでは、必要なすべての IAM ロールを作成したり、ユーザーに代わって既存のロールを使用したりできるため、使い始めるためのプロセスが簡略化されています。  
Security Lake API または を使用してカスタムソース AWS CLI を追加する場合は、次のステップに進み、Security Lake バケットの場所への書き込みアクセスを許可する IAM ロールを作成します。

### Security Lake バケットの場所への書き込みアクセスを許可する IAM ロールを作成する (API および AWS CLI専用ステップ)
<a name="iam-roles-glue-crawler"></a>

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 クローラー できるように、ロールに次のインラインポリシーを作成して埋め込む必要があります。

------
#### [ JSON ]

****  

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

------

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

------
#### [ JSON ]

****  

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