從自訂來源收集資料 - Amazon Security Lake

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

從自訂來源收集資料

Amazon 安全湖可以從第三方自訂來源收集日誌和事件。對於每個自訂來源,安全湖都會處理下列事項:

  • 為 Amazon S3 儲存貯體中的來源提供唯一的前置詞。

  • 在 AWS Identity and Access Management (IAM) 中建立角色,以允許自訂來源將資料寫入資料湖。此角色的權限界限是由名為的 AWS 受管理策略所設定AmazonSecurityLakePermissionsBoundary

  • 建立 AWS Lake Formation 表格以組織來源寫入安全湖的物件。

  • 設定 AWS Glue 爬行者程式來分割來源資料。爬行者程式會 AWS Glue Data Catalog 以表格填入。它還會自動發現新的源數據並提取模式定義。

若要將自訂來源新增至安全湖泊,它必須符合下列需求:

  1. 目標 — 自訂來源必須能夠將資料寫入 Security Lake,做為指派給來源的前置詞下方的一組 S3 物件。對於包含多種資料類別的來源,您應該將每個唯一的開放網路安全架構架構 (OCSF) 事件類別提供為單獨的來源。Security Lake 會建立 IAM 角色,允許自訂來源寫入 S3 儲存貯體中的指定位置。

    注意

    使用 OCSF 驗證工具來驗證自訂來源是否與OCSF Schema 1.1相容。

  2. 格式 — 從自訂來源收集的每個 S3 物件都應該格式化為 Apache 實體檔案。

  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 帳戶 來源磁碟分割中的記錄與之相關的識別碼。

  • eventDay— 事件發生的日期,格式為八個字元字串 (YYYYMMDD)。

物體大小和速率

寫入安全湖的物件應該緩衝記錄 5 分鐘。如果緩衝區期間包含太多資料而無法有效查詢,只要這些檔案的平均大小維持在 256 MB 以下,自訂來源就可以在 5 分鐘的視窗中寫入多筆記錄。輸送量低的自訂來源可以每 5 分鐘寫入較小的物件,以維持 5 分鐘的擷取延遲,並可長時間緩衝記錄。

鑲木地板

安全湖支持的版本 1.x 和 2. x 的鑲木地板。資料頁面大小應限制為 1 MB (未壓縮)。資料列群組大小不得超過 256 MB (壓縮)。對於在實木地板對象中進行壓縮,zstandard 是首選。

排序

在每個 Parquet 格式的對象中,記錄應按時間進行排序,以減少查詢數據的成本。

新增自訂來源的先決條件

新增自訂來源時,Security Lake 會建立 IAM 角色,以允許來源將資料寫入資料湖中的正確位置。角色的名稱遵循格式AmazonSecurityLake-Provider-{name of the custom source}-{region},其 AWS 區域 中region是您要新增自訂來源的格式。Security Lake 會將原則附加至允許存取資料湖的角色。如果您已使用客戶管理的 AWS KMS 金鑰加密資料湖,Security Lake 也會將原則與kms:Decryptkms: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 主控台提供簡化的入門程序,並建立所有必要的 IAM 角色,或代表您使用現有的角色。

如果您打算使用 Security Lake API 或 AWS CLI 新增自訂來源,請繼續下一步建立 IAM 角色,以允許對 Security Lake 值區位置的寫入存取權。

建立 IAM 角色以允許寫入安全湖值區位置 (API 和 AWS CLI唯一步驟)

如果您使用 Security Lake API 或 AWS CLI 新增自訂來源,請新增此 IAM 角色以授 AWS Glue 予檢索自訂來源資料和識別資料中分割區的權限。這些分割區是組織資料以及在「資料目錄」中建立和更新表格所必需的。

建立此 IAM 角色後,您需要角色的 Amazon 資源名稱 (ARN) 才能新增自訂來源。

您必須附加受arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole AWS 管理的策略。

若要授與必要的權限,您還必須在角色中建立並內嵌下列內嵌原則,以允許 AWS Glue 編目程式 從自訂來源讀取資料檔案,並在「資 AWS Glue 料目錄」中建立/更新表格。

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

新增自訂來源

建立 IAM 角色以呼叫 AWS Glue 爬行者程式之後,請依照下列步驟在 Security Lake 中新增自訂來源。

Console
  1. 開啟安全湖主控台,網址為 https://console.aws.amazon.com/securitylake/

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

  3. 在導覽窗格中選擇 [自訂來源],然後選擇 [建立自訂來源]。

  4. 在「自訂來源詳細資料」區段中,輸入自訂來源的全域唯一名稱。然後,選取描述自訂來源將傳送至安全湖的資料類型的 OCSF 事件類別。

  5. 對於AWS 帳戶 具有寫入資料的權限,請輸入將記錄和事件寫入資料湖的自訂來源的 ID 和外部 ID。AWS 帳戶

  6. 對於服務存取,請建立並使用新的服務角色,或使用現有的服務角色,以授予 Security Lake 呼叫權限 AWS Glue。

  7. 選擇建立

API

若要以程式設計方式新增自訂來源,請使用安全湖 API 的CreateCustomLogSource作業。使用您要在 AWS 區域 其中建立自訂來源的作業。如果您使用的是 AWS Command Line Interface (AWS CLI),請運行創建自定義日誌源命令。

在您的請求中,使用支援的參數來指定自訂來源的組態設定:

  • sourceName— 指定來源的名稱。名稱必須是區域唯一的值。

  • eventClasses— 指定一或多個 OCSF 事件類別,以描述來源將傳送至安全湖的資料類型。如需安全性湖中作為來源支援的 OCSF 事件類別清單,請參閱開放網路安全結構描述架構 (OCSF)。

  • sourceVersion— 選擇性地指定一個值,將記錄收集限制為特定版本的自訂來源資料。

  • crawlerConfiguration— 指定您建立用來呼叫 AWS Glue 爬行者程式之 IAM 角色的 Amazon 資源名稱 (ARN)。如需建立 IAM 角色的詳細步驟,請參閱新增自訂來源的先決條件

  • providerIdentity— 指定來源將用來將記錄檔和事件寫入資料湖的 AWS 身分識別和外部 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

在安全湖中新增自訂來源之後,安全湖會建立 AWS Glue 爬行者程式。爬行者程式會連線至您的自訂來源、決定資料結構,然後將 AWS Glue 資料目錄填入表格。

我們建議您手動執行爬蟲程式,讓您的自訂來源結構描述保持在最新狀態,並在 Athena 和其他查詢服務中維護查詢功能。具體而言,如果自訂來源的輸入資料集中發生下列任一變更,您應該執行爬行者程式:

  • 資料集具有一或多個新的頂層欄。

  • 資料集在具有資料struct類型的資料行中有一個或多個新欄位。

如需執行爬行者程式的指示,請參閱AWS Glue 開發人員指南中的排程 AWS Glue 爬蟲 (Crawler)。

安全湖無法刪除或更新您帳戶中現有的檢索器。如果您刪除自訂來源,建議您在 future 建立具有相同名稱的自訂來源時刪除關聯的爬行者程式。

刪除自訂來源

刪除自訂來源以停止將資料從來源傳送至安全湖。

Console
  1. 開啟安全湖主控台,網址為 https://console.aws.amazon.com/securitylake/

  2. 使用頁面右上角的選取 AWS 區域 器,選取您要從中移除自訂來源的「區域」。

  3. 在導覽窗格中,選擇 [自訂來源]。

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

  5. 選擇「取消註冊自訂來源」,然後選擇「刪除」以確認動作。

API

若要以程式設計方式刪除自訂來源,請使用安全湖 API 的DeleteCustomLogSource作業。如果您使用的是 AWS Command Line Interface (AWS CLI),請運行刪除自定義日誌源命令。使用您 AWS 區域 要刪除自訂來源的作業。

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

下列範例會從安全性湖泊刪除自訂記錄來源。

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

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