Integra AWS S3 con Google SecOps

Questo documento descrive come integrare AWS S3 con Google Security Operations.

Casi d'uso

  1. Gestisci i bucket
  2. Scarica i file dai bucket
  3. 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:

  1. Verifica la visibilità della rete tra Google SecOps e gli endpoint di servizio regionali di AWS S3.

  2. Ottieni le credenziali API programmatiche di AWS (un ID chiave di accesso e una chiave di accesso segreta) con le autorizzazioni IAM appropriate.

  3. 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.com o s3.amazonaws.com) sulla porta 443/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:

  • Chiave (mappata come chiave)
  • Ultima modifica (mappato come LastModified)
  • Size (Bytes) (Dimensioni [byte]) (mappato come Size [Dimensioni])
  • Proprietario (mappato come Owner/DisplayName)
  • Classe di archiviazione (mappata come classe di archiviazione)
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.