Condivisione di file di CloudTrail registro tra AWS account - AWS CloudTrail

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à.

Condivisione di file di CloudTrail registro tra AWS account

Questa sezione spiega come condividere i file di CloudTrail registro tra più AWS account. L'approccio utilizzato per condividere i log Account AWS dipende dalla configurazione del bucket S3. Di seguito sono riportate le opzioni di condivisione dei file di log:

  • Bucket owner applicato: S3 Object Ownership è un'impostazione a livello di bucket Amazon S3 che puoi usare per controllare la proprietà degli oggetti caricati nel tuo bucket e per disabilitare o abilitare le liste di controllo degli accessi (). ACLs Per impostazione predefinita, Object Ownership è impostata sull'impostazione Bucket owner enforced e tutte sono disabilitate. ACLs Quando ACLs sono disabilitati, il proprietario del bucket possiede tutti gli oggetti nel bucket e gestisce l'accesso ai dati esclusivamente utilizzando le politiche di gestione degli accessi. Quando l'opzione Proprietario del bucket applicato è impostata, l'accesso viene gestito tramite la policy del bucket, eliminando così la necessità per gli utenti di assumere un ruolo.

  • Assunzione di un ruolo per condividere i file di log: se non hai scelto l'impostazione Proprietario del bucket applicato, gli utenti dovranno assumere un ruolo per accedere ai file di log nel tuo bucket S3.

Condivisione di file di log tra account tramite l'assunzione di un ruolo

Nota

Questa sezione si applica solo ai bucket Amazon S3 che non utilizzano l'impostazione Proprietario del bucket applicato.

Questa sezione spiega come condividere i file di CloudTrail registro tra più persone Account AWS assumendo un ruolo e descrive gli scenari per la condivisione dei file di registro.

  • Scenario 1: concedi accesso in sola lettura agli account che hanno generato i file di log inseriti nel bucket Amazon S3.

  • Scenario 2: concedi l'accesso a tutti i file di log nel tuo bucket Amazon S3 a un account di terze parti in grado di analizzare i file di log per te.

Per concedere l'accesso in sola lettura ai file di log nel bucket Amazon S3
  1. Crea un IAM ruolo per ogni account con cui desideri condividere i file di registro. Devi essere un amministratore per poter concedere l'autorizzazione.

    Quando crei il ruolo, procedi nel seguente modo:

    • Scegli l'opzione Un altro Account AWS.

    • Inserisci l'ID a dodici cifre dell'account a cui concedere l'accesso.

    • Seleziona la MFA casella Richiedi se desideri che l'utente fornisca l'autenticazione a più fattori prima di assumere il ruolo.

    • Scegli la politica di AmazonS3 ReadOnlyAccess.

      Nota

      Per impostazione predefinita, la ReadOnlyAccess politica di AmazonS3 concede i diritti di recupero e di elenco per tutti i bucket Amazon S3 all'interno del tuo account.

    Per dettagli sulla gestione delle autorizzazioni per i ruoli, consulta i ruoli nella Guida per l'IAMutente. IAM IAM

  2. Crea una policy di accesso che conceda l'accesso in sola lettura all'account con cui vuoi condividere i file di log.

  3. Chiedi a ciascun account di assumere un ruolo per recuperare i file di log.

Per concedere l'accesso in sola lettura ai file di log con account di terze parti
  1. Crea un IAM ruolo per l'account di terze parti con cui desideri condividere i file di registro. Devi essere un amministratore per poter concedere l'autorizzazione.

    Quando crei il ruolo, procedi nel seguente modo:

    • Scegli l'opzione Un altro Account AWS.

    • Inserisci l'ID a dodici cifre dell'account a cui concedere l'accesso.

    • Inserire un ID esterno che fornisca ulteriore controllo sugli utenti che possono assumere quel ruolo. Per ulteriori informazioni, consulta Come utilizzare un ID esterno per concedere l'accesso alle proprie AWS risorse a terzi nella Guida per l'IAMutente.

    • Scegli la politica di AmazonS3 ReadOnlyAccess.

      Nota

      Per impostazione predefinita, la ReadOnlyAccess politica di AmazonS3 concede i diritti di recupero e di elenco per tutti i bucket Amazon S3 all'interno del tuo account.

  2. Crea una policy di accesso che conceda l'accesso in sola lettura all'account di terze parti con cui vuoi condividere i file di log.

  3. Chiedi all'account di terze parti di assumere un ruolo per recuperare i file di log.

Le seguenti sezioni forniscono maggiori dettagli su questi passaggi.

Creazione di una policy di accesso per concedere l'accesso ad account di proprietà

In qualità di proprietario del bucket Amazon S3, hai il pieno controllo sul bucket Amazon S3 su cui CloudTrail scrive i file di log per gli altri account. Potresti voler condividere i file di log di ogni unità aziendale con l'unità aziendale che li ha creati. Tuttavia, non vuoi che una business unit sia in grado di leggere i file di log di tutte le altre.

Ad esempio, per condividere i file di registro dell'account B con l'account B ma non con l'account C, devi creare un nuovo IAM ruolo nell'account che specifichi che l'account B è un account affidabile. Questa policy di attendibilità del ruolo specifica che l'account B può essere considerato attendibile per l'assunzione del ruolo creato dall'account A. La policy dovrebbe essere simile all'esempio seguente. La policy di attendibilità viene creata automaticamente se crei il ruolo utilizzando la console. Se si utilizza il SDK per creare il ruolo, è necessario fornire la politica di fiducia come parametro per. CreateRole API Se si utilizza il CLI per creare il ruolo, è necessario specificare la politica di fiducia nel create-role CLI comando.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-B-id:root" }, "Action": "sts:AssumeRole" } ] }

Devi inoltre creare una policy di accesso per specificare che l'account B può leggere solo dalla posizione in cui l'account B scrive i propri file di log. La policy di accesso sarà simile all'esempio seguente. Tieni presente che la Risorsa ARN include l'ID dell'account a dodici cifre per l'account B e l'eventuale prefisso che hai specificato quando hai attivato l'account B durante il processo di CloudTrail aggregazione. Per ulteriori informazioni sulla specifica di un prefisso, consulta Creazione di percorsi in account aggiuntivi.

Importante

È necessario assicurarsi che il prefisso nella politica di accesso sia esattamente lo stesso prefisso specificato all'attivazione dell'account B. In caso contrario, è necessario modificare la politica di accesso al IAM ruolo nel proprio account CloudTrail per incorporare il prefisso effettivo per l'account B. Se il prefisso nella politica di accesso al ruolo non è esattamente lo stesso del prefisso specificato all'attivazione dell'account B, l'account B non sarà CloudTrail in grado di accedere ai relativi file di registro.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/prefix/AWSLogs/account-B-id/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }

Utilizza il processo precedente anche per gli eventuali account aggiuntivi.

Dopo aver creato i ruoli per ogni account e specificato i criteri di fiducia e accesso appropriati e dopo che IAM l'amministratore di quell'account ha concesso l'accesso a un utente di ciascun account, un IAM utente degli account B o C può assumere il ruolo a livello di codice.

Per ulteriori informazioni, consulta Assunzione di un ruolo.

Creazione di una policy di accesso per concedere l'accesso a una terza parte

È necessario creare un IAM ruolo separato per un account di terze parti. Quando crei il ruolo, AWS crea automaticamente la relazioni di attendibilità, che specifica che l'account di terze parti è attendibile per l'assunzione del ruolo. La policy di accesso per il ruolo specifica le operazioni che tale account può eseguire. Per ulteriori informazioni sulla creazione di ruoli, consulta Creare un IAM ruolo.

Ad esempio, la relazione di fiducia creata da AWS specifica che l'account di terze parti (in questo esempio l'account Z) è affidabile per assumere il ruolo che hai creato. Di seguito è illustrato un esempio di policy di attendibilità:

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::account-Z-id:root"}, "Action": "sts:AssumeRole" }] }

Se quando hai creato il ruolo per l'account di terze parti hai specificato un ID esterno, la policy di accesso contiene un altro elemento Condition che verifica l'ID univoco assegnato da tale account. La verifica viene eseguita quando si assume il ruolo. La policy di accesso di esempio seguente contiene un elemento Condition.

Per ulteriori informazioni, consulta Come utilizzare un ID esterno per concedere l'accesso alle proprie AWS risorse a terzi nella Guida per l'IAMutente.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::account-Z-id:root"}, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"sts:ExternalId": "external-ID-issued-by-account-Z"}} }] }

Devi inoltre creare una policy di accesso per il tuo account per specificare che l'account di terze parti può leggere tutti i log nel bucket Amazon S3. La policy di accesso dovrebbe essere simile all'esempio seguente. Il carattere jolly (*) dopo il valore Resource indica che l'account di terze parti può accedere a qualsiasi file di log nel bucket S3 per il quale dispone dell'accesso.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" }, { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" } ] }

Dopo aver creato un ruolo per l'account di terze parti e aver specificato la relazione di fiducia e la politica di accesso appropriate, un IAM utente dell'account di terze parti deve assumere il ruolo a livello di codice per poter leggere i file di registro dal bucket. Per ulteriori informazioni, consulta Assunzione di un ruolo.

Assunzione di un ruolo

È necessario designare un IAM utente separato che assuma ogni ruolo creato in ciascun account. È quindi necessario assicurarsi che ogni IAM utente disponga delle autorizzazioni appropriate.

IAMutenti e ruoli

Dopo aver creato i ruoli e le politiche necessari, è necessario designare un IAM utente in ogni account con cui si desidera condividere i file. Ogni IAM utente assume a livello di codice il ruolo appropriato per accedere ai file di registro. Quando un utente assume un ruolo, AWS restituisce credenziali di sicurezza temporanee a tale utente. Possono quindi effettuare richieste per elencare, recuperare, copiare o eliminare i file di log a seconda delle autorizzazioni concesse dalla policy di accesso associata al ruolo.

Per ulteriori informazioni sull'utilizzo IAM delle identità, vedere IAMIdentità (utenti, gruppi di utenti e ruoli).

La differenza principale nella politica di accesso creata per ogni IAM ruolo in ogni scenario.

Creazione delle policy di autorizzazione per gli utenti IAM

Per eseguire le azioni consentite da un ruolo, l'IAMutente deve disporre del permesso di chiamare il AWS STS AssumeRoleAPI. Devi modificare la policy per ogni utente in modo da concedere le autorizzazioni appropriate. A tale scopo, impostate un elemento Resource nella policy che allegate all'IAMutente. L'esempio seguente mostra una politica per un IAM utente di un altro account che consente a quell'utente di assumere un ruolo denominato Test creato in precedenza dall'Account A.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": "arn:aws:iam::account-A-id:role/Test" } ] }
Per modificare una policy gestita dal cliente (console)
  1. Accedi a AWS Management Console e apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel riquadro di navigazione, seleziona Policy.

  3. Nell'elenco delle policy, selezionare il nome della policy da modificare. Puoi utilizzare la casella di ricerca per filtrare l'elenco di policy.

  4. Seleziona la scheda Autorizzazioni e scegli Modifica.

  5. Esegui una di queste operazioni:

    • Scegli l'opzione Visual per modificare la tua politica senza comprendere la JSON sintassi. Puoi modificare servizi, operazioni, risorse o condizioni opzionali per ogni blocco di autorizzazione della policy. Inoltre, puoi importare una policy per aggiungere ulteriori autorizzazioni nella parte finale. Al termine, seleziona Successivo per continuare.

    • Scegli l'JSONopzione per modificare la tua politica digitando o incollando il testo nella casella di testo. JSON Inoltre, puoi importare una policy per aggiungere ulteriori autorizzazioni nella parte finale. Risolvi eventuali avvisi di sicurezza, errori o avvisi generali generati durante la convalida delle policy, quindi scegli Next (Successivo).

      Nota

      Puoi passare dall'opzione Visual a quella dell'JSONeditor in qualsiasi momento. Tuttavia, se apporti modifiche o scegli Avanti nell'editor visuale, IAM potresti ristrutturare la tua politica per ottimizzarla per l'editor visuale. Per ulteriori informazioni, consulta la sezione Ristrutturazione delle politiche nella Guida per l'IAMutente.

  6. Nella pagina Verifica e salva, esamina il campo Autorizzazioni definite in questa policy, quindi scegli Salva modifiche per salvare il lavoro.

  7. Se esistono già un massimo di cinque versioni della policy gestita, seleziona Salva per visualizzare una finestra di dialogo. Per salvare la nuova versione, la versione non predefinita più vecchia della policy viene rimossa e sostituita con la nuova. Facoltativamente, puoi impostare la nuova versione come versione predefinita della policy.

    Scegli Salva modifiche per salvare la nuova versione della policy.

Chiamata AssumeRole

Un utente può assumere un ruolo creando un'applicazione che chiama AWS STS AssumeRoleAPIe trasmette il nome della sessione del ruolo, l'Amazon Resource Number (ARN) del ruolo da assumere e un ID esterno opzionale. Il nome della sessione del ruolo viene definito dall'account che ha creato il ruolo da assumere. L'eventuale ID esterno viene definito dall'account di terze parti e passato all'account proprietario per essere incluso durante la creazione del ruolo. Per ulteriori informazioni, consulta Come utilizzare un ID esterno per concedere l'accesso alle tue AWS risorse a terzi nella Guida per l'IAMutente. Puoi recuperarlo ARN dall'Account A aprendo la IAM console.

Per trovare il ARN valore nell'account A con la console IAM
  1. Selezionare Roles (Ruoli).

  2. Scegliere il ruolo da esaminare.

  3. Cerca il ruolo ARN nella sezione Riepilogo.

AssumeRole APIRestituisce le credenziali temporanee da utilizzare per accedere alle risorse dell'account proprietario. In questo esempio, le risorse a cui desideri accedere sono il bucket Amazon S3 e i file di log al suo interno. Le credenziali temporanee dispongono delle autorizzazioni definite nella policy di accesso del ruolo.

Il seguente esempio Python (che utilizza AWS SDK for Python (Boto)) mostra come chiamare AssumeRole e come utilizzare le credenziali di sicurezza temporanee restituite per elencare tutti i bucket Amazon S3 controllati dall'account A.

def list_buckets_from_assumed_role(user_key, assume_role_arn, session_name): """ Assumes a role that grants permission to list the Amazon S3 buckets in the account. Uses the temporary credentials from the role to list the buckets that are owned by the assumed role's account. :param user_key: The access key of a user that has permission to assume the role. :param assume_role_arn: The Amazon Resource Name (ARN) of the role that grants access to list the other account's buckets. :param session_name: The name of the STS session. """ sts_client = boto3.client( "sts", aws_access_key_id=user_key.id, aws_secret_access_key=user_key.secret ) try: response = sts_client.assume_role( RoleArn=assume_role_arn, RoleSessionName=session_name ) temp_credentials = response["Credentials"] print(f"Assumed role {assume_role_arn} and got temporary credentials.") except ClientError as error: print( f"Couldn't assume role {assume_role_arn}. Here's why: " f"{error.response['Error']['Message']}" ) raise # Create an S3 resource that can access the account with the temporary credentials. s3_resource = boto3.resource( "s3", aws_access_key_id=temp_credentials["AccessKeyId"], aws_secret_access_key=temp_credentials["SecretAccessKey"], aws_session_token=temp_credentials["SessionToken"], ) print(f"Listing buckets for the assumed role's account:") try: for bucket in s3_resource.buckets.all(): print(bucket.name) except ClientError as error: print( f"Couldn't list buckets for the account. Here's why: " f"{error.response['Error']['Message']}" ) raise

Interrompi la condivisione dei file di CloudTrail registro tra account AWS

Per interrompere la condivisione dei file di registro con un altro Account AWS, elimina il ruolo che hai creato per quell'account. Per informazioni sull'eliminazione di un ruolo, consulta Eliminazione di ruoli o profili delle istanze.