

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從 Security Lake 中的自訂來源收集資料
<a name="custom-sources"></a>

Amazon Security Lake 可以從第三方自訂來源收集日誌和事件。Security Lake 自訂來源是一種第三方服務，可將安全日誌和事件傳送至 Amazon Security Lake。傳送資料之前，自訂來源必須將日誌和事件轉換為開放網路安全結構描述架構 (OCSF)，並符合 Security Lake 的來源需求，包括分割、parquet 檔案格式和物件大小和速率需求。

對於每個自訂來源，Security Lake 會處理下列項目：
+ 為 Amazon S3 儲存貯體中的來源提供唯一的字首。
+ 在 AWS Identity and Access Management (IAM) 中建立角色，允許自訂來源將資料寫入資料湖。此角色的許可界限是由名為 的 AWS 受管政策所設定[`AmazonSecurityLakePermissionsBoundary`](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSecurityLakePermissionsBoundary)。
+ 建立 AWS Lake Formation 資料表來組織來源寫入 Security Lake 的物件。
+ 設定 AWS Glue 爬蟲程式來分割來源資料。爬蟲程式 AWS Glue Data Catalog 會將資料表填入 。它也會自動探索新的來源資料並擷取結構描述定義。

**注意**  
您最多可以在 帳戶中新增 50 個自訂日誌來源。

若要將自訂來源新增至 Security Lake，必須符合下列要求。不滿足這些要求可能會影響效能，並可能影響分析使用案例，例如查詢。
+ **目的地** – 自訂來源必須能夠將資料寫入 Security Lake，做為指派給來源的字首下方的一組 S3 物件。對於包含多個資料類別的來源，您應該將每個唯一的[開放網路安全結構描述架構 (OCSF) 事件類別](https://schema.ocsf.io/classes?extensions=)作為單獨的來源交付。Security Lake 會建立 IAM 角色，允許自訂來源寫入 S3 儲存貯體中的指定位置。
+ **格式** – 從自訂來源收集的每個 S3 物件都應格式化為 Apache Parquet 檔案。
+ **結構描述** – 相同的 OCSF 事件類別應套用至 Parquet 格式物件中的每個記錄。Security Lake 支援 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 分鐘。物件和大小需求是最佳化 Security Lake for Query Performance。未遵循自訂來源需求可能會影響 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`。透過採用此命名對流，您可以避免在命名外部帳戶 IDs 時模棱兩可，使其不會與其他身分管理系統維護 AWS 的帳戶 IDs 或外部帳戶 IDs 衝突。
+ `eventDay` – 記錄的 UTC 時間戳記，截斷為小時，格式為八個字元字串 (`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)
+ [建立 IAM 角色以允許對 Security Lake 儲存貯體位置的寫入存取權 (API AWS CLI和僅限步驟）](#iam-roles-glue-crawler)

### 驗證許可
<a name="add-custom-sources-permissions"></a>

新增自訂來源之前，請確認您具有執行下列動作的許可。

若要驗證您的許可，請使用 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:CreateGrant`、 `kms:DescribeKey`和 的許可`kms:GenerateDataKey`。

**重要**  
如果您打算使用 Security Lake 主控台新增自訂來源，您可以略過下一個步驟並繼續 [在 Security Lake 中新增自訂來源](adding-custom-sources.md)。Security Lake 主控台提供簡化的入門程序，並建立所有必要的 IAM 角色，或代表您使用現有的角色。  
如果您打算使用 Security Lake API AWS CLI 或新增自訂來源，請繼續下一個步驟來建立 IAM 角色，以允許 Security Lake 儲存貯體位置的寫入存取權。

### 建立 IAM 角色以允許對 Security Lake 儲存貯體位置的寫入存取權 (API AWS CLI和僅限步驟）
<a name="iam-roles-glue-crawler"></a>

如果您使用 Security Lake API 或 AWS CLI 來新增自訂來源，請新增此 IAM 角色來授予許可 AWS Glue ，以抓取自訂來源資料並識別資料中的分割區。這些分割區是組織資料以及在 Data Catalog 中建立和更新資料表的必要分割區。

建立此 IAM 角色之後，您將需要角色的 Amazon Resource Name (ARN)，才能新增自訂來源。

您必須連接 `arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole` AWS 受管政策。

若要授予必要的許可，您還必須在角色中建立和嵌入下列內嵌政策，以允許 從自訂來源 AWS Glue 編目程式 讀取資料檔案，並在 AWS Glue Data Catalog 中建立/更新資料表。

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

****  

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

------

連接下列信任政策， AWS 帳戶 以允許 使用 ，它可以根據外部 ID 擔任角色：

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

# 在 Security Lake 中新增自訂來源
<a name="adding-custom-sources"></a>

建立 IAM 角色以叫用 AWS Glue 爬蟲程式後，請依照下列步驟在 Security Lake 中新增自訂來源。

------
#### [ Console ]

1. 在 https：//[https://console.aws.amazon.com/securitylake/](https://console.aws.amazon.com/securitylake/) 開啟 Security Lake 主控台。

1. 使用頁面右上角的 AWS 區域 選取器，選取您要建立自訂來源的區域。

1. 在導覽窗格中選擇**自訂來源**，然後選擇**建立自訂來源**。

1. 在**自訂來源詳細資訊**區段中，輸入自訂來源的全域唯一名稱。然後，選取描述自訂來源將傳送至 Security Lake 之資料類型的 OCSF 事件類別。

1. 對於**AWS 帳戶 具有寫入資料許可的** ，請輸入將日誌和事件寫入資料湖之自訂來源的 **AWS 帳戶 ID** 和**外部 ID**。

1. 對於**服務存取**，請建立並使用新的服務角色，或使用提供 Security Lake 調用許可的現有服務角色 AWS Glue。

1. 選擇**建立**。

------
#### [ API ]

若要以程式設計方式新增自訂來源，請使用 Security Lake API 的 [CreateCustomLogSource](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_CreateCustomLogSource.html) 操作。在 AWS 區域 您要建立自訂來源的 中使用 操作。如果您使用的是 AWS Command Line Interface (AWS CLI)，請執行 [create-custom-log-source](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/create-custom-log-source.html) 命令。

在您的請求中，使用支援的參數來指定自訂來源的組態設定：
+ `sourceName` – 指定來源的名稱。名稱必須是區域唯一值。
+ `eventClasses` – 指定一或多個 OCSF 事件類別，描述來源將傳送至 Security Lake 的資料類型。如需 Security Lake 中支援做為來源的 OCSF 事件類別清單，請參閱[開放式網路安全結構描述架構 (OCSF)](https://schema.ocsf.io/classes?extensions)。
+ `sourceVersion` – 選擇性地指定值，將日誌收集限制為特定版本的自訂來源資料。
+ `crawlerConfiguration` – 指定您建立用來叫用爬蟲程式之 IAM 角色的 AWS Glue Amazon Resource Name (ARN)。如需建立 IAM 角色的詳細步驟，請參閱[新增自訂來源的先決條件](https://docs.aws.amazon.com//security-lake/latest/userguide/custom-sources.html#iam-roles-glue-crawler)
+ `providerIdentity` – 指定來源將用來將日誌和事件寫入資料湖的 AWS 身分和外部 ID。

下列範例會將自訂來源新增為指定區域中指定日誌提供者帳戶中的日誌來源。此範例已針對 Linux、macOS 或 Unix 格式化，並使用反斜線 (\$1) 行接續字元來改善可讀性。

```
$ 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
<a name="maintain-glue-schema"></a>

在 Security Lake 中新增自訂來源後，Security Lake 會建立 AWS Glue 爬蟲程式。爬蟲程式會連線至您的自訂來源、決定資料結構，並使用資料表填入 AWS Glue 資料目錄。

我們建議手動執行爬蟲程式，讓您的自訂來源結構描述保持在最新狀態，並維護 Athena 和其他查詢服務的查詢功能。具體而言，如果自訂來源的輸入資料集發生下列任一變更，您應該執行爬蟲程式：
+ 資料集有一或多個新的最上層資料欄。
+ 資料集在具有`struct`資料類型的欄中有一或多個新欄位。

如需執行爬蟲程式的指示，請參閱《 *AWS Glue 開發人員指南*》中的[排程 AWS Glue 爬蟲程式](https://docs.aws.amazon.com/glue/latest/dg/schedule-crawler.html)。

Security Lake 無法刪除或更新您帳戶中現有的爬蟲程式。如果您刪除自訂來源，如果您計劃在未來建立具有相同名稱的自訂來源，建議您刪除相關聯的爬蟲程式。

## 支援的 OCSF 事件類別
<a name="ocsf-eventclass"></a>

Open Cybersecurity Schema Framework (OCSF) 事件類別說明自訂來源將傳送至 Security Lake 的資料類型。支援的事件類別清單如下：

```
public enum OcsfEventClass {
    ACCOUNT_CHANGE,
    API_ACTIVITY,
    APPLICATION_LIFECYCLE,
    AUTHENTICATION,
    AUTHORIZE_SESSION,
    COMPLIANCE_FINDING,
    DATASTORE_ACTIVITY,
    DEVICE_CONFIG_STATE,
    DEVICE_CONFIG_STATE_CHANGE,
    DEVICE_INVENTORY_INFO,
    DHCP_ACTIVITY,
    DNS_ACTIVITY,
    DETECTION_FINDING,
    EMAIL_ACTIVITY,
    EMAIL_FILE_ACTIVITY,
    EMAIL_URL_ACTIVITY,
    ENTITY_MANAGEMENT,
    FILE_HOSTING_ACTIVITY,
    FILE_SYSTEM_ACTIVITY,
    FTP_ACTIVITY,
    GROUP_MANAGEMENT,
    HTTP_ACTIVITY,
    INCIDENT_FINDING,
    KERNEL_ACTIVITY,
    KERNEL_EXTENSION,
    MEMORY_ACTIVITY,
    MODULE_ACTIVITY,
    NETWORK_ACTIVITY,
    NETWORK_FILE_ACTIVITY,
    NTP_ACTIVITY,
    PATCH_STATE,
    PROCESS_ACTIVITY,
    RDP_ACTIVITY,
    REGISTRY_KEY_ACTIVITY,
    REGISTRY_VALUE_ACTIVITY,
    SCHEDULED_JOB_ACTIVITY,
    SCAN_ACTIVITY,
    SECURITY_FINDING,
    SMB_ACTIVITY,
    SSH_ACTIVITY,
    USER_ACCESS,
    USER_INVENTORY,
    VULNERABILITY_FINDING,
    WEB_RESOURCE_ACCESS_ACTIVITY,
    WEB_RESOURCES_ACTIVITY,
    WINDOWS_RESOURCE_ACTIVITY,
    // 1.3 OCSF event classes
    ADMIN_GROUP_QUERY,
    DATA_SECURITY_FINDING,
    EVENT_LOG_ACTIVITY,
    FILE_QUERY,
    FILE_REMEDIATION_ACTIVITY,
    FOLDER_QUERY,
    JOB_QUERY,
    KERNEL_OBJECT_QUERY,
    MODULE_QUERY,
    NETWORK_CONNECTION_QUERY,
    NETWORK_REMEDIATION_ACTIVITY,
    NETWORKS_QUERY,
    PERIPHERAL_DEVICE_QUERY,
    PROCESS_QUERY,
    PROCESS_REMEDIATION_ACTIVITY,
    REMEDIATION_ACTIVITY,
    SERVICE_QUERY,
    SOFTWARE_INVENTORY_INFO,
    TUNNEL_ACTIVITY,
    USER_QUERY,
    USER_SESSION_QUERY,
    // 1.3 OCSF event classes (Win extension)
    PREFETCH_QUERY,
    REGISTRY_KEY_QUERY,
    REGISTRY_VALUE_QUERY,
    WINDOWS_SERVICE_ACTIVITY
}
```

# 從 Security Lake 刪除自訂來源
<a name="delete-custom-source"></a>

刪除自訂來源以停止將資料從來源傳送至 Security Lake。當您移除來源時，Security Lake 會停止從指定區域和帳戶中的來源收集資料，而且訂閱者無法再從來源取用新資料。不過，訂閱者仍然可以使用 Security Lake 在移除之前從來源收集的資料。您只能使用這些指示來移除自訂來源。如需移除原生支援的資訊 AWS 服務，請參閱 [在 Security Lake AWS 服務 中從 收集資料](custom-sources.md)。

在 Security Lake 中刪除自訂來源時，您必須使用來源停用 Security Lake 主控台外部的每個來源。未停用整合可能會導致來源整合繼續將日誌傳送至 Amazon S3。

------
#### [ Console ]

1. 在 https：//[https://console.aws.amazon.com/securitylake/](https://console.aws.amazon.com/securitylake/) 開啟 Security Lake 主控台。

1. 使用頁面右上角的 AWS 區域 選取器，選取要從中移除自訂來源的區域。

1. 在導覽窗格中，選擇**自訂來源**。

1. 選取您要移除的自訂來源。

1. 選擇**取消註冊自訂來源**，然後選擇**刪除**以確認動作。

------
#### [ API ]

若要以程式設計方式刪除自訂來源，請使用 Security Lake API 的 [DeleteCustomLogSource](https://docs.aws.amazon.com/security-lake/latest/APIReference/API_DeleteCustomLogSource.html) 操作。如果您使用的是 AWS Command Line Interface (AWS CLI)，請執行 [delete-custom-log-source](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/securitylake/delete-custom-log-source.html) 命令。在 AWS 區域 您想要刪除自訂來源的 中使用 操作。

在您的請求中，使用 `sourceName` 參數來指定要刪除的自訂來源名稱。或者指定自訂來源的名稱，並使用 `sourceVersion` 參數將刪除範圍限制為僅來自自訂來源的特定資料版本。

下列範例會從 Security Lake 刪除自訂日誌來源。

此範例已針對 Linux、macOS 或 Unix 格式化，並使用反斜線 (\$1) 行接續字元來改善可讀性。

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

------