本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 Security Lake 中的自訂來源收集資料
Amazon Security Lake 可以從第三方自訂來源收集日誌和事件。Security Lake 自訂來源是一種第三方服務,可將安全日誌和事件傳送至 Amazon Security Lake。傳送資料之前,自訂來源必須將日誌和事件轉換為開放網路安全結構描述架構 (OCSF),並符合 Security Lake 的來源需求,包括分割區、parquet 檔案格式和物件大小和速率需求。
針對每個自訂來源,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,必須符合下列要求。未能滿足這些要求可能會影響效能,並可能影響 分析使用案例,例如查詢。
-
目的地 – 自訂來源必須能夠將資料寫入 Security Lake,做為指派給來源的字首下方的一組 S3 物件。對於包含多個資料類別的來源,您應該將每個唯一的開放網路安全結構描述架構 (OCSF) 事件類別
交付為單獨的來源。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 驗證工具OCSF Schema
。對於自訂來源,Security Lake 支援 OCSF 1.3 版和更早版本。
在 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時模棱兩可,以免與其他身分管理系統維護 AWS 的帳戶 IDs 或外部帳戶 IDs 衝突。 -
eventDay
– 記錄的 UTC 時間戳記,截斷為小時,格式為八個字元字串 (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:CreateGrant
、 kms:DescribeKey
和 的許可kms:GenerateDataKey
。
重要
如果您計劃使用 Security Lake 主控台來新增自訂來源,您可以略過下一個步驟並繼續 在 Security Lake 中新增自訂來源。Security Lake 主控台提供簡化的入門程序,並建立所有必要的 IAM 角色,或代表您使用現有的角色。
如果您打算使用 Security Lake API AWS CLI 或新增自訂來源,請繼續下一個步驟以建立 IAM 角色,以允許對 Security Lake 儲存貯體位置進行寫入存取。
建立 IAM 角色以允許對 Security Lake 儲存貯體位置的寫入存取權 (API AWS CLI和僅限步驟)
如果您使用 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 中建立/更新資料表。
{ "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}}" ] }