Integrare AWS S3 con Google SecOps
Questo documento descrive come integrare AWS S3 con Google Security Operations.
Casi d'uso
- Gestire i bucket
- Scaricare file dai bucket
- Carica 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 all'integrazione, assicurati di completare le seguenti operazioni:
Verifica la visibilità diretta della rete tra Google SecOps e gli endpoint di servizio regionali di AWS S3.
Ottieni le credenziali API programmatiche AWS (un ID chiave di accesso e una chiave di accesso segreta) con le autorizzazioni IAM appropriate.
Configura e testa l'istanza di integrazione in Google SecOps.
Requisiti di rete
Google SecOps comunica direttamente con il servizio AWS S3 utilizzando
API REST HTTPS e l'SDK Python di AWS (boto3).
Assicurati che il tuo ambiente di rete soddisfi le seguenti regole di connettività:
Accesso HTTPS in uscita: attiva 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 la sezione 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 un 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 AWS.
Privilegio minimo: limita le autorizzazioni solo alle azioni e alle risorse bucket necessarie per i workflow automatizzati e ruota periodicamente le credenziali.
Per informazioni dettagliate sui consigli per la sicurezza, consulta Best practice per la sicurezza in IAM nella documentazione di AWS.
Configurare le autorizzazioni di azione
Concedi all'identità AWS IAM di autenticazione le autorizzazioni specifiche richieste per le azioni eseguite dai playbook 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 |
|---|---|---|---|
| Download File From 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>. |
| List Buckets | s3:ListAllMyBuckets |
— | Elenca tutti i bucket S3 di proprietà dell'account. Risorsa: *. |
| Ping | s3:ListAllMyBuckets |
— | Convalida la connettività dell'integrazione. Risorsa: *. |
| Imposta criteri del bucket | s3:PutBucketPolicy |
s3:ListAllMyBuckets |
Imposta o modifica una policy del bucket S3. Risorsa:
arn:aws:s3:::<bucket-name>. |
| Carica 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
Criterio IAM di esempio (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 l'allegato di 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 AWS predefinita | 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 Configurare le integrazioni.
Se necessario, potrai 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 ulteriori informazioni sulle azioni, vedi Rispondere alle azioni in attesa dalla tua scrivania e Eseguire un'azione manuale.
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. |
Run On
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome risultato script | Opzioni di 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 non riuscire 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 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 deve non riuscire e interrompere l'esecuzione di un playbook: Se si verifica un errore irreversibile, ad esempio credenziali errate, nessuna connessione al server, errori SDK, altro: "Errore durante l'esecuzione dell'azione "Scarica file dal bucket". Motivo: {0}''.format(error.Stacktrace) |
Generale |
Ottieni criterio 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 sulle policy. |
Run On
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome risultato script | Opzioni di 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 non riuscire 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 altro codice di stato (is_success=false): "L'azione non è riuscita a restituire informazioni sulla policy del bucket "{0}" in AWS S3".format(bucket_name) L'azione deve 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 "Ottieni policy bucket". Motivo: {0}''.format(error.Stacktrace) |
Generale |
Elenco degli oggetti bucket
Consente all'utente di disattivare un account utente. Il corpo della richiesta contiene l'utente da disattivare. La proprietà dell'account abilitato 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. |
Run On
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome risultato script | Opzioni di 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 non riuscire né interrompere l'esecuzione di un playbook: If status code == 200 (is_success = true) "Successfully returned objects of the "{0}" bucket in AWS S3".format(bucket_name) Se il codice di stato è diverso (is_success=false): "L'azione non è riuscita a restituire oggetti del bucket "{0}" in AWS S3".format(bucket_name) L'azione deve non riuscire e interrompere l'esecuzione di un playbook: Se si verifica un errore irreversibile, ad esempio credenziali errate, nessuna connessione al server, altro: "Errore durante l'esecuzione dell'azione "Elenca oggetti bucket". Motivo: {0}''.format(error.Stacktrace) |
Generale |
| Tabella della bacheca casi | Nome tabella: oggetti bucket "{0}" Colonne:
|
Generale |
Elenco bucket
Recupera un elenco di bucket da AWS S3.
Run On
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome risultato script | Opzioni di 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 non riuscire né interrompere l'esecuzione di un playbook: If status code == 200 (is_success = true) "Successfully listed available buckets in AWS S3". Se altro codice di stato (is_success=false): "L'azione non è riuscita a elencare i bucket disponibili in AWS S3. L'azione deve 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". Motivo: {0}''.format(error.Stacktrace) |
Generale |
Dindin
Verifica la connettività ad AWS S3 con i parametri forniti nella pagina di configurazione dell'integrazione nella scheda Google Security Operations Marketplace.
Casi d'uso
Testa la connettività.
Run On
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome risultato script | Opzioni di valore | Esempio |
|---|---|---|
| is_success | Vero/Falso | is_success:False |
Bacheca casi
| Tipo di risultato | Valore / Descrizione | Tipo |
|---|---|---|
| Messaggio di output* | L'azione non deve non riuscire né interrompere l'esecuzione di un playbook: Se l'operazione va a buon fine: "Connessione al server AWS S3 riuscita con i parametri di connessione forniti." L'azione deve non riuscire e interrompere l'esecuzione di un playbook: Se l'operazione non va a buon fine: "Impossibile connettersi al server AWS S3. Error is {0}".format(exception.stacktrace) |
Generale |
Imposta criterio bucket
Imposta un criterio 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 delle policy | Stringa | N/D | Sì | Specifica l'oggetto JSON del criterio che vuoi impostare per il bucket. Esempi sono disponibili qui: https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html. |
Run On
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome risultato script | Opzioni di 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 non riuscire 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 è presente 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 deve 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 "Imposta policy del bucket". Motivo: {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 |
Run On
Questa azione non viene eseguita sulle entità.
Risultati dell'azione
Risultato script
| Nome risultato script | Opzioni di 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 non riuscire 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 deve non riuscire e interrompere l'esecuzione di un playbook: Se si verifica un errore irreversibile, ad esempio credenziali errate, nessuna connessione al server, errori SDK, altro: "Errore durante l'esecuzione dell'azione "Carica file nel bucket". Motivo: {0}''.format(error.Stacktrace) |
Generale |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.