Raccolta di dati da fonti personalizzate - Amazon Security Lake

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Raccolta di dati da fonti personalizzate

Amazon Security Lake può raccogliere log ed eventi da fonti personalizzate di terze parti. Per ogni fonte personalizzata, Security Lake gestisce quanto segue:

  • Fornisce un prefisso univoco per l'origine nel bucket Amazon S3.

  • Crea un ruolo in AWS Identity and Access Management (IAM) che consente a una fonte personalizzata di scrivere dati nel data lake. Il limite delle autorizzazioni per questo ruolo è impostato da una politica AWS gestita chiamata. AmazonSecurityLakePermissionsBoundary

  • Crea una AWS Lake Formation tabella per organizzare gli oggetti che l'origine scrive su Security Lake.

  • Imposta un AWS Glue crawler per partizionare i dati di origine. Il crawler compila il file con la tabella. AWS Glue Data Catalog Inoltre, rileva automaticamente i nuovi dati di origine ed estrae le definizioni degli schemi.

Per aggiungere una fonte personalizzata a Security Lake, deve soddisfare i seguenti requisiti:

  1. Destinazione: l'origine personalizzata deve essere in grado di scrivere dati su Security Lake come set di oggetti S3 sotto il prefisso assegnato all'origine. Per le fonti che contengono più categorie di dati, è necessario fornire ogni classe di eventi Open Cybersecurity Schema Framework (OCSF) unica come fonte separata. Security Lake crea un ruolo IAM che consente all'origine personalizzata di scrivere nella posizione specificata nel bucket S3.

    Nota

    Utilizza lo strumento di convalida OCSF per verificare se la fonte personalizzata è compatibile con. OCSF Schema 1.1

  2. Formato: ogni oggetto S3 raccolto dall'origine personalizzata deve essere formattato come file Apache Parquet.

  3. Schema: la stessa classe di eventi OCSF deve essere applicata a ogni record all'interno di un oggetto in formato Parquet.

Le migliori pratiche per l'acquisizione di fonti personalizzate

Per facilitare l'elaborazione e l'interrogazione efficienti dei dati, consigliamo di seguire queste best practice quando si aggiunge una fonte personalizzata a Security Lake:

Partizionamento

Gli oggetti devono essere partizionati per posizione di origine, Regione AWS, Account AWS e data. Il percorso dei dati della partizione è formattato come. bucket-name/source-location/region=region/accountId=accountID/eventDay=YYYYMMDD

Una partizione di esempio è. aws-security-data-lake-us-west-2-lake-uid/source-location/region=us-west-2/accountId=123456789012/eventDay=20230428/

  • bucket-name— Il nome del bucket Amazon S3 in cui Security Lake archivia i dati di origine personalizzati.

  • source-location— Prefisso per l'origine personalizzata nel tuo bucket S3. Security Lake archivia tutti gli oggetti S3 per una determinata fonte con questo prefisso e il prefisso è unico per quella determinata fonte.

  • region— Regione AWS su cui vengono scritti i dati.

  • accountId— Account AWS ID a cui appartengono i record nella partizione di origine.

  • eventDay— Data in cui si è verificato l'evento, formattata come una stringa di otto caratteri (). YYYYMMDD

Dimensioni e frequenza dell'oggetto

Gli oggetti scritti su Security Lake devono memorizzare i record nel buffer per 5 minuti. Se il periodo di buffer include troppi dati per essere interrogati in modo efficiente, le fonti personalizzate possono scrivere più record nella finestra di 5 minuti, purché la dimensione media di tali file rimanga inferiore a 256 MB. Le fonti personalizzate con velocità effettiva ridotta possono scrivere oggetti più piccoli ogni 5 minuti per mantenere una latenza di inserimento di 5 minuti e memorizzare i record nel buffer per periodi più lunghi.

Impostazioni del parquet

Security Lake supporta le versioni 1.x e 2.x di Parquet. La dimensione della pagina dati deve essere limitata a 1 MB (non compressa). La dimensione del gruppo di righe non deve superare i 256 MB (compressi). Per la compressione all'interno dell'oggetto Parquet, è preferibile zstandard.

Ordinamento

All'interno di ogni oggetto in formato Parquet, i record devono essere ordinati per tempo per ridurre il costo dell'interrogazione dei dati.

Prerequisiti per aggiungere una fonte personalizzata

Quando si aggiunge un'origine personalizzata, Security Lake crea un ruolo IAM che consente alla fonte di scrivere i dati nella posizione corretta nel data lake. Il nome del ruolo segue il formatoAmazonSecurityLake-Provider-{name of the custom source}-{region}, region dov'è il formato Regione AWS in cui stai aggiungendo l'origine personalizzata. Security Lake attribuisce una policy al ruolo che consente l'accesso al data lake. Se hai crittografato il data lake con una AWS KMS chiave gestita dal cliente, Security Lake allega anche una policy kms:Decrypt e kms:GenerateDataKey autorizzazioni al ruolo. Il limite delle autorizzazioni per questo ruolo è impostato da una AWS politica gestita chiamata. AmazonSecurityLakePermissionsBoundary

Verificare le autorizzazioni

Prima di aggiungere una fonte personalizzata, verifica di disporre delle autorizzazioni necessarie per eseguire le seguenti azioni.

Per verificare le tue autorizzazioni, usa IAM per esaminare le policy IAM allegate alla tua identità IAM. Quindi, confronta le informazioni contenute in tali policy con il seguente elenco di azioni che devi essere autorizzato a eseguire per aggiungere una fonte personalizzata.

  • glue:CreateCrawler

  • glue:StopCrawler

  • glue:CreateDatabase

  • glue:CreateTable

  • glue:StartCrawlerSchedule

  • glue:StopCrawlerSchedule

  • iam:GetRole

  • iam:PutRolePolicy

  • iam:DeleteRolePolicy

  • iam:PassRole

  • lakeformation:RegisterResource

  • lakeformation:GrantPermissions

  • s3:ListBucket

  • s3:PutObject

Queste azioni consentono di raccogliere log ed eventi da un'origine personalizzata, inviarli al AWS Glue database e alla tabella corretti e archiviarli in Amazon S3.

Se utilizzi una AWS KMS chiave per la crittografia lato server del tuo data lake, hai bisogno anche dell'autorizzazione perkms:CreateGrant, e. kms:DescribeKey kms:GenerateDataKey

Importante

Se prevedi di utilizzare la console Security Lake per aggiungere un abbonato, puoi saltare il passaggio successivo e procedere con. Aggiungere una fonte personalizzata La console Security Lake offre un processo semplificato per iniziare e crea tutti i ruoli IAM necessari o utilizza i ruoli esistenti per tuo conto.

Se prevedi di utilizzare l'API Security Lake o di AWS CLI aggiungere un abbonato, continua con il passaggio successivo per creare un ruolo IAM per consentire l'accesso in scrittura alla posizione del bucket di Security Lake.

Crea un ruolo IAM per consentire l'accesso in scrittura alla posizione del bucket di Security Lake (API e AWS CLI passaggio solo)

Se utilizzi l'API Security Lake o vuoi AWS CLI aggiungere una fonte personalizzata, aggiungi questo ruolo IAM per concedere l' AWS Glue autorizzazione alla scansione dei dati di origine personalizzati e identificare le partizioni nei dati. Queste partizioni sono necessarie per organizzare i dati e creare e aggiornare tabelle nel Data Catalog.

Dopo aver creato questo ruolo IAM, avrai bisogno dell'Amazon Resource Name (ARN) del ruolo per aggiungere una fonte personalizzata.

È necessario allegare la policy arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole AWS gestita.

Per concedere le autorizzazioni necessarie, devi anche creare e incorporare la seguente politica in linea nel tuo ruolo per consentire Crawler di AWS Glue la lettura dei file di dati dall'origine personalizzata e la creazione/aggiornamento delle tabelle in Data Catalog. AWS Glue

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

Allega la seguente politica di fiducia per consentire e Account AWS utilizzando la quale può assumere il ruolo in base all'ID esterno:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Se il bucket S3 nella regione in cui stai aggiungendo la fonte personalizzata è crittografato con un file gestito dal cliente AWS KMS key, devi inoltre allegare la seguente politica al ruolo e alla tua politica chiave 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}}" ] }

Aggiungere una fonte personalizzata

Dopo aver creato il ruolo IAM per richiamare il AWS Glue crawler, segui questi passaggi per aggiungere una fonte personalizzata in Security Lake.

Console
  1. Apri la console Security Lake all'indirizzo https://console.aws.amazon.com/securitylake/.

  2. Utilizzando il Regione AWS selettore nell'angolo superiore destro della pagina, selezionate la regione in cui desiderate creare l'origine personalizzata.

  3. Scegli Origini personalizzate nel riquadro di navigazione, quindi scegli Crea fonte personalizzata.

  4. Nella sezione Dettagli della fonte personalizzata, inserisci un nome univoco a livello globale per la tua fonte personalizzata. Quindi, selezionate una classe di eventi OCSF che descriva il tipo di dati che l'origine personalizzata invierà a Security Lake.

  5. Se Account AWS sei autorizzato a scrivere dati, inserisci l'Account AWS ID e l'ID esterno dell'origine personalizzata che scriverà i log e gli eventi nel data lake.

  6. Per Service Access, create e utilizzate un nuovo ruolo di servizio o utilizzate un ruolo di servizio esistente che autorizzi Security Lake a richiamare AWS Glue.

  7. Scegli Crea.

API

Per aggiungere una fonte personalizzata a livello di codice, utilizza il CreateCustomLogSourcefunzionamento dell'API Security Lake. Usa l'operazione nel Regione AWS punto in cui desideri creare l'origine personalizzata. Se stai usando il AWS Command Line Interface (AWS CLI), esegui il create-custom-log-sourcecomando.

Nella tua richiesta, usa i parametri supportati per specificare le impostazioni di configurazione per l'origine personalizzata:

  • sourceName— Specificate un nome per la fonte. Il nome deve essere un valore unico a livello regionale.

  • eventClasses— Specificare una o più classi di eventi OCSF per descrivere il tipo di dati che la fonte invierà a Security Lake. Per un elenco delle classi di eventi OCSF supportate come origine in Security Lake, vedere Open Cybersecurity Schema Framework (OCSF).

  • sourceVersion— Facoltativamente, specificare un valore per limitare la raccolta dei log a una versione specifica dei dati di origine personalizzati.

  • crawlerConfiguration— Specificate l'Amazon Resource Name (ARN) del ruolo IAM che avete creato per richiamare il crawler. AWS Glue Per i passaggi dettagliati per creare un ruolo IAM, consulta Prerequisiti per aggiungere una fonte personalizzata

  • providerIdentity— Specificare l' AWS identità e l'ID esterno che l'origine utilizzerà per scrivere log ed eventi nel data lake.

L'esempio seguente aggiunge un'origine personalizzata come origine di registro nell'account del provider di log designato nelle regioni designate. Questo esempio è formattato per Linux, macOS o Unix e utilizza il carattere di continuazione di barra rovesciata (\) per migliorare la leggibilità.

$ 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”]

Mantenere aggiornati i dati di origine personalizzati in AWS Glue

Dopo aver aggiunto una fonte personalizzata in Security Lake, Security Lake crea un AWS Glue crawler. Il crawler si connette all'origine personalizzata, determina le strutture dei dati e popola il AWS Glue Data Catalog con tabelle.

Ti consigliamo di eseguire manualmente il crawler per mantenere aggiornato lo schema sorgente personalizzato e mantenere la funzionalità di interrogazione in Athena e in altri servizi di interrogazione. In particolare, è consigliabile eseguire il crawler se si verifica una delle seguenti modifiche nel set di dati di input per un'origine personalizzata:

  • Il set di dati ha una o più nuove colonne di primo livello.

  • Il set di dati contiene uno o più nuovi campi in una colonna con un tipo di struct dati.

Per istruzioni sull'esecuzione di un crawler, consulta Scheduling an AWS Glue crawler nella Developer Guide.AWS Glue

Security Lake non può eliminare o aggiornare i crawler esistenti nel tuo account. Se elimini un'origine personalizzata, ti consigliamo di eliminare il crawler associato se prevedi di creare un'origine personalizzata con lo stesso nome in futuro.

Eliminazione di una fonte personalizzata

Eliminare una fonte personalizzata per interrompere l'invio di dati dalla sorgente a Security Lake.

Console
  1. Aprire la console Security Lake all'indirizzo https://console.aws.amazon.com/securitylake/.

  2. Utilizzando il Regione AWS selettore nell'angolo superiore destro della pagina, selezionate la regione da cui desiderate rimuovere la fonte personalizzata.

  3. Nel riquadro di navigazione, scegli Fonti personalizzate.

  4. Seleziona la fonte personalizzata che desideri rimuovere.

  5. Scegli Annulla registrazione della fonte personalizzata, quindi scegli Elimina per confermare l'azione.

API

Per eliminare una fonte personalizzata a livello di codice, utilizza il DeleteCustomLogSourcefunzionamento dell'API Security Lake. Se stai usando il AWS Command Line Interface (AWS CLI), esegui il delete-custom-log-sourcecomando. Utilizzate l'operazione nel Regione AWS punto in cui desiderate eliminare la fonte personalizzata.

Nella richiesta, utilizzate il sourceName parametro per specificare il nome dell'origine personalizzata da eliminare. Oppure specifica il nome dell'origine personalizzata e utilizza il sourceVersion parametro per limitare l'ambito dell'eliminazione solo a una versione specifica dei dati dell'origine personalizzata.

L'esempio seguente elimina un'origine di registro personalizzata da Security Lake.

Questo esempio è formattato per Linux, macOS o Unix e utilizza il carattere di continuazione di barra rovesciata (\) per migliorare la leggibilità.

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