Integra AWS S3 con Google SecOps
Questo documento descrive come integrare AWS S3 con Google Security Operations.
Casi d'uso
- Gestisci i bucket
- Scarica i file dai bucket
- Carica i file nei bucket
Prima di iniziare
Prima di configurare l'integrazione di AWS S3 in Google SecOps, verifica che l'ambiente di rete e le credenziali AWS soddisfino tutti i prerequisiti operativi.
Per preparare l'ambiente per l'integrazione, assicurati di completare i seguenti passaggi:
Verifica la visibilità della rete tra Google SecOps e gli endpoint di servizio regionali di AWS S3.
Ottieni le credenziali API programmatiche di AWS (un ID chiave di accesso e una chiave di accesso segreta) con le autorizzazioni IAM appropriate.
Configura e testa l'istanza di integrazione all'interno di Google SecOps.
Requisiti di rete
Google SecOps comunica direttamente con il servizio AWS S3 utilizzando le API REST HTTPS e l'SDK AWS Python (boto3).
Assicurati che l'ambiente di rete soddisfi le seguenti regole di connettività:
Accesso HTTPS in uscita: abilita la comunicazione HTTPS in uscita dalla tua istanza Google SecOps o dall'agente remoto all'endpoint regionale AWS S3 (
s3.<region>.amazonaws.comos3.amazonaws.com) sulla porta443/TCP.Per saperne di più, consulta Endpoint di servizio AWS nella documentazione di AWS.
Configurazione del proxy: se la tua organizzazione instrada il traffico in uscita tramite un proxy HTTP/HTTPS, configura le variabili proxy dell'ambiente standard (
HTTP_PROXY,HTTPS_PROXY,NO_PROXY) sul server Google SecOps o sull'host dell'agente remoto.
Autenticazione e credenziali
L'integrazione di AWS S3 richiede credenziali API programmatiche per autenticare le richieste utilizzando la versione 4 della firma di AWS.
Assicurati che il tuo ambiente AWS soddisfi i seguenti requisiti di autenticazione:
Credenziali programmatiche: ottieni un ID chiave di accesso AWS e una chiave segreta AWS validi associati a un utente o ruolo AWS IAM.
Per informazioni sulla creazione di identità IAM e sulla generazione di credenziali, consulta Gestione delle chiavi di accesso per gli utenti IAM e Identità IAM nella documentazione di AWS.
Privilegio minimo: limita le autorizzazioni solo alle azioni e alle risorse dei bucket necessarie per i tuoi workflow automatizzati e ruota periodicamente le credenziali.
Per informazioni dettagliate sui suggerimenti per la sicurezza, consulta Best practice per la sicurezza in IAM nella documentazione di AWS.
Configura le autorizzazioni per le azioni
Concedi all'identità AWS IAM di autenticazione le autorizzazioni specifiche richieste per le azioni eseguite dai playbook di Google SecOps.
Consulta le autorizzazioni minime per le azioni AWS S3 nella tabella seguente:
| Nome azione | Autorizzazione AWS IAM richiesta
(ActionName:Permission) |
Autorizzazione prerequisito | Descrizione/Ambito risorsa |
|---|---|---|---|
| Scarica il file dal bucket | s3:GetObject |
s3:ListAllMyBuckets |
Scarica un oggetto da un bucket S3. Risorsa:
arn:aws:s3:::<bucket-name>/*. |
| Get Bucket Policy | s3:GetBucketPolicy |
s3:ListAllMyBuckets |
Recupera la policy di accesso al bucket. Risorsa:
arn:aws:s3:::<bucket-name>. |
| Elenca oggetti bucket | s3:ListBucket |
s3:ListAllMyBuckets |
Elenca gli oggetti all'interno di un bucket S3. Risorsa:
arn:aws:s3:::<bucket-name>. |
| Elenca i bucket | s3:ListAllMyBuckets |
— | Elenca tutti i bucket S3 di proprietà dell'account. Risorsa: *. |
| Ping | s3:ListAllMyBuckets |
— | Convalida la connettività dell'integrazione. Risorsa: *. |
| Imposta policy del bucket | s3:PutBucketPolicy |
s3:ListAllMyBuckets |
Imposta o modifica una policy del bucket S3. Risorsa:
arn:aws:s3:::<bucket-name>. |
| Carica il file nel bucket | s3:PutObject |
s3:ListAllMyBuckets |
Carica un oggetto in un bucket S3. Risorsa:
arn:aws:s3:::<bucket-name>/*. |
Riferimento rapido (ActionName:Permission)
Utilizza il seguente riferimento rapido per esaminare le autorizzazioni richieste per ogni azione:
Ping: s3:ListAllMyBuckets
Download File From Bucket: s3:GetObject, s3:ListAllMyBuckets
Get Bucket Policy: s3:GetBucketPolicy, s3:ListAllMyBuckets
List Bucket Objects: s3:ListBucket, s3:ListAllMyBuckets
List Buckets: s3:ListAllMyBuckets
Set Bucket Policy: s3:PutBucketPolicy, s3:ListAllMyBuckets
Upload File To Bucket: s3:PutObject, s3:ListAllMyBuckets
Esempio di policy IAM (privilegio minimo)
La seguente policy di esempio mostra le autorizzazioni necessarie per eseguire tutte le azioni AWS S3 in Google SecOps.
Per istruzioni sulla creazione e sul collegamento delle policy IAM, consulta Creazione di policy IAM nella documentazione di AWS.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SecOpsS3Discovery",
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Sid": "SecOpsS3BucketOperations",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketPolicy",
"s3:PutBucketPolicy"
],
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "SecOpsS3ObjectOperations",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::*/*"
}
]
}
Parametri di integrazione
Utilizza i seguenti parametri per configurare l'integrazione:
| Nome visualizzato del parametro | Tipo | Valore predefinito | Obbligatorio | Descrizione |
|---|---|---|---|---|
| ID chiave di accesso AWS | Stringa | N/D | Sì | ID chiave di accesso AWS da utilizzare nell'integrazione. |
| Chiave segreta AWS | Password | N/D | Sì | Chiave segreta AWS da utilizzare nell'integrazione. |
| Regione predefinita AWS | Stringa | N/D | Sì | Regione AWS predefinita da utilizzare nell'integrazione, ad esempio us-west-2. |
| Esegui da remoto | Casella di controllo | Deselezionata | No | Seleziona il campo per eseguire l'integrazione configurata da remoto. Una volta selezionata, viene visualizzata l'opzione per selezionare l'utente remoto (agente). |
Per istruzioni su come configurare un'integrazione in Google SecOps, consulta Configura le integrazioni.
Se necessario, puoi apportare modifiche in un secondo momento. Dopo aver configurato un'istanza di integrazione, puoi utilizzarla nei playbook. Per saperne di più su come configurare e supportare più istanze, consulta Supporto di più istanze.
Azioni
Per saperne di più sulle azioni, consulta Rispondi alle azioni in attesa dalla scrivania di lavoro ed Esegui un'azione manuale nel tuo caso.
Scarica file dal bucket
Scarica il file dal bucket in AWS S3.
Parametri
| Nome visualizzato del parametro | Tipo | Valore predefinito | Obbligatorio | Descrizione |
|---|---|---|---|---|
| Percorso file bucket | Stringa | s3://{bucket_name}/{file_name} | Sì | Specifica il percorso del file nel bucket. Esempio: s3://siemplify/syslog/log.txt |
| Percorso di download | Stringa | N/D | Sì | Specifica il percorso in cui scaricare il file. |
Esegui il
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato JSON
{
"bucket_file_path": "s3://testsiemplify/test/123.txt"
"download_path": "/usr/bin/share/download.txt"
}
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve avere esito negativo né interrompere l'esecuzione di un playbook: If status code == 200 (is_success = true) "Successfully downloaded '{0}' from AWS S3".format(bucket_file_path) Se viene restituito un altro codice di stato (is_success=false): "L'azione non è riuscita a scaricare '{0}' da AWS S3. Motivo: esiste già un file con questo percorso di download." L'azione dovrebbe non riuscire e interrompere l'esecuzione di un playbook: In caso di errore irreversibile, ad esempio credenziali errate, nessuna connessione al server, errori dell'SDK e altro: "Errore durante l'esecuzione dell'azione "Scarica file dal bucket". Reason: {0}''.format(error.Stacktrace) |
Generale |
Ottieni policy del bucket
Recupera le informazioni sulla policy del bucket da AWS S3.
Parametri
| Nome visualizzato del parametro | Tipo | Valore predefinito | Obbligatorio | Descrizione |
|---|---|---|---|---|
| Nome bucket | Stringa | N/D | Sì | Specifica il nome del bucket da cui recuperare le informazioni sulla policy. |
Esegui il
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato JSON
{
"Policy": {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::testsiemplify/*"
}
]
}
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve avere esito negativo né interrompere l'esecuzione di un playbook: If status code == 200 (is_success = true) "Successfully retrieved information about the policy of the "{0}" bucket in AWS S3".format(bucket_name) Se viene restituito un altro codice di stato (is_success=false): "Action wasn't able to return information about the policy of the '{0}' bucket in AWS S3".format(bucket_name) L'azione dovrebbe non riuscire e interrompere l'esecuzione di un playbook: Se si verifica un errore irreversibile, ad esempio credenziali errate, nessuna connessione al server o altro: "Errore durante l'esecuzione dell'azione "Recupera policy del bucket". Reason: {0}''.format(error.Stacktrace) |
Generale |
Elenca gli oggetti del bucket
Consente all'utente di disattivare un account utente. Il corpo della richiesta contiene l'utente da disattivare. La proprietà account_enabled dell'account deve essere impostata su false.
Parametri
| Nome visualizzato del parametro | Tipo | Valore predefinito | Obbligatorio | Descrizione |
|---|---|---|---|---|
| Nome bucket | Stringa | N/D | Sì | Specifica il nome del bucket da cui recuperare gli oggetti. |
| Numero massimo di oggetti da restituire | Numero intero | N/D | No | Specifica il numero di oggetti da restituire. |
Esegui il
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato JSON
"Contents": [
{
"Key": "text.txt",
"LastModified": %Y-%m-%dT%H:%M:%S,
"ETag": "d41d8cd98f00b204e9800998ecf8427e",
"Size": 0,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "lab_aws",
"ID": "935dc3fed0e1d2c5b12242cf9927370824f2438681a2d3c0523f254dbde41aba"
}
},
{
"Key": "text_1.txt",
"LastModified": %Y-%m-%dT%H:%M:%S,
"ETag": "d41d8cd98f00b204e9800998ecf8427e",
"Size": 0,
"StorageClass": "STANDARD",
"Owner": {
"DisplayName": "lab_aws",
"ID": "935dc3fed0e1d2c5b12242cf9927370824f2438681a2d3c0523f254dbde41aba"
}
}
]
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve avere esito negativo né interrompere l'esecuzione di un playbook: Se il codice di stato == 200 (is_success = true) "Restituzione riuscita degli oggetti del bucket "{0}" in AWS S3".format(bucket_name) Se viene restituito un altro codice di stato (is_success=false): "Action wasn't able to return objects of the '{0}' bucket in AWS S3".format(bucket_name) L'azione dovrebbe non riuscire e interrompere l'esecuzione di un playbook: Se si verifica un errore irreversibile, ad esempio credenziali errate, nessuna connessione al server o altro: "Errore durante l'esecuzione dell'azione "Elenca oggetti bucket". Reason: {0}''.format(error.Stacktrace) |
Generale |
| Tabella della bacheca casi | Nome tabella: Oggetti bucket "{0}" Colonne:
|
Generale |
Elenca bucket
Recupera un elenco di bucket da AWS S3.
Esegui il
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato JSON
{
"Buckets": [
{
"CreationDate": %Y-%m-%dT%H:%M:%S,
"Name": "testsiemplify"
}
],
"Owner": {
"DisplayName": "lab_aws",
"ID": "935dc3fed0e1d2c5b12242cf9927370824f2438681a2d3c0523f254dbde41aba"
},
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve avere esito negativo né interrompere l'esecuzione di un playbook: Se il codice di stato è 200 (is_success = true) "Bucket disponibili elencati correttamente in AWS S3". Se viene restituito un altro codice di stato (is_success=false): "Action wasn't able to list available buckets in AWS S3. L'azione dovrebbe non riuscire e interrompere l'esecuzione di un playbook: Se si verifica un errore irreversibile, ad esempio credenziali errate, nessuna connessione al server o altro: "Errore durante l'esecuzione dell'azione "Elenca bucket". Reason: {0}''.format(error.Stacktrace) |
Generale |
Dindin
Testa la connettività ad AWS S3 con i parametri forniti nella pagina di configurazione dell'integrazione nella pagina Google SecOps Content Hub.
Casi d'uso
Testa la connettività.
Esegui il
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve avere esito negativo né interrompere l'esecuzione di un playbook: Se l'operazione ha esito positivo: "Connessione al server AWS S3 riuscita con i parametri di connessione forniti." L'azione dovrebbe non riuscire e interrompere l'esecuzione di un playbook: In caso contrario: "Impossibile connettersi al server AWS S3. Error is {0}".format(exception.stacktrace) |
Generale |
Imposta policy del bucket
Imposta una policy nel bucket da AWS S3.
Parametri
| Nome visualizzato del parametro | Tipo | Valore predefinito | Obbligatorio | Descrizione |
|---|---|---|---|---|
| Nome bucket | Stringa | N/D | Sì | Specifica il nome del bucket su cui vuoi aggiornare la policy. |
| Oggetto JSON della policy | Stringa | N/D | Sì | Specifica l'oggetto JSON della policy che vuoi impostare per il bucket. Puoi trovare alcuni esempi qui: https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html. |
Esegui il
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato JSON
bucket_policy = {
'Version': '2012-10-17',
'Statement': [{
'Sid': 'AddPerm',
'Effect': 'Allow',
'Principal': '*',
'Action': ['s3:GetObject'],
'Resource': f'arn:aws:s3:::{bucket_name}/*'
}]
}
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve avere esito negativo né interrompere l'esecuzione di un playbook: If status code == 204 (is_success = true) "Successfully updated policy of the "{0}" bucket in AWS S3".format(bucket_name) Se viene restituito un altro codice di stato (is_success=false): "Action wasn't able to update the policy of the '{0}' bucket in AWS S3".format(bucket_name) L'azione dovrebbe non riuscire e interrompere l'esecuzione di un playbook: In caso di errore irreversibile, ad esempio credenziali errate, nessuna connessione al server, altro: "Errore durante l'esecuzione dell'azione "Imposta policy del bucket". Reason: {0}''.format(error.Stacktrace) |
Carica file nel bucket
Carica il file nel bucket in AWS S3.
Parametri
| Nome visualizzato del parametro | Tipo | Valore predefinito | Obbligatorio | Descrizione |
|---|---|---|---|---|
| Percorso file | Stringa | N/D | Sì | Specifica il percorso del file da caricare. |
| Percorso di caricamento del bucket | Stringa | s3://{bucket_name}/{file_name} | Sì | Specifica il percorso nel bucket in cui deve essere caricato il percorso. Esempio: s3://siemplify/syslog/log.txt |
Esegui il
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome del risultato dello script | Opzioni del valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Risultato JSON
{
"bucket_upload_path": "s3://testsiemplify/test/123.txt"
"file_path": "/usr/bin/share/download.txt"
}
Bacheca casi
| Tipo di risultato | Valore/Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve avere esito negativo né interrompere l'esecuzione di un playbook: If status code == 200 (is_success = true) "Successfully uploaded '{0}' to AWS S3 {1} bucket".format(file_path, bucket name aka first string after s3://) Se il file non esiste (is_success = false) "L'azione non è riuscita a caricare '{0}' su AWS S3. Motivo: il file con questo percorso di caricamento non esiste." L'azione dovrebbe non riuscire e interrompere l'esecuzione di un playbook: In caso di errore irreversibile, ad esempio credenziali errate, nessuna connessione al server, errori dell'SDK, altro: "Errore durante l'esecuzione dell'azione "Carica file nel bucket". Reason: {0}''.format(error.Stacktrace) |
Generale |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.