Configurare l'accesso sensibile al contesto per i service account

Questa guida descrive come configurare l'accesso sensibile al contesto per contribuire a proteggere l'accesso dei service account alle API Google Cloud , in base ai livelli di accesso che definisci.

Limitazioni

Le seguenti limitazioni si applicano alle policy di accesso sensibile al contesto per i service account:

  • Non puoi utilizzare attributi basati sulla rete o sull'indirizzo IP per le associazioni dei service account se il account di servizio viene utilizzato per le esecuzioni del workflow e Cloud Scheduler.

  • Le policy di accesso sensibile al contesto non possono bloccare le connessioni ai cluster privati di Google Kubernetes Engine (GKE) utilizzando kubectl o a Cloud SQL utilizzando il proxy di autenticazione.

  • Se un livello di accesso che associ a un account di servizio contiene attributi non supportati, ad esempio attributi Device, l'accesso sensibile al contesto nega l'accesso all'API.

  • I livelli di accesso con ambito non sono supportati per i service account.

Se utilizzi Cloud Build e Cloud Run, ti consigliamo di utilizzare le seguenti funzionalità integrate di Virtual Private Cloud (VPC):

Prima di iniziare

  1. Assicurati di avere un'organizzazioneGoogle Cloud e almeno un progettoGoogle Cloud .
  2. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  3. Installa Google Cloud CLI.

  4. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  5. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  6. Crea o seleziona un progetto Google Cloud .

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Crea un progetto Google Cloud :

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

  7. Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .

  8. Abilita le API IAM, Gestore contesto accesso e API Resource Manager, se non sono già abilitate:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    gcloud services enable accesscontextmanager.googleapis.com cloudresourcemanager.googleapis.com iam.googleapis.com
  9. Installa Google Cloud CLI.

  10. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  11. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  12. Crea o seleziona un progetto Google Cloud .

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Crea un progetto Google Cloud :

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

  13. Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .

  14. Abilita le API IAM, Gestore contesto accesso e API Resource Manager, se non sono già abilitate:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    gcloud services enable accesscontextmanager.googleapis.com cloudresourcemanager.googleapis.com iam.googleapis.com
  15. Aggiorna i componenti di Google Cloud CLI:
    gcloud components update --quiet
  16. Crea un service account nel tuo progetto, se non ne hai già uno. Questo account di servizio è la destinazione della policy di accesso sensibile al contesto.

Ruoli obbligatori

Questa sezione descrive i ruoli Identity and Access Management (IAM) necessari per utilizzare l'accesso sensibile al contesto.

Ruoli a livello di progetto

Per ottenere l'autorizzazione necessaria a livello di progetto, chiedi all'amministratore di concederti il ruolo IAM Amministratore service account (roles/iam.serviceAccountAdmin) nell'account utente o nel account di servizio. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene l'autorizzazione the required permissions necessaria per a livello di progetto.

Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.

Ruoli a livello di organizzazione

Per ottenere l'autorizzazione necessaria a livello di organizzazione, chiedi all'amministratore di concederti i seguenti ruoli IAM nell'account utente o nel account di servizio:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene l'autorizzazione the required permissions, necessaria a livello di organizzazione.

Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.

Associa le policy di accesso sensibile al contesto a diversi livelli di risorse

Puoi associare le policy di accesso sensibile al contesto con la stessa modalità di applicazione forzata alle risorse che si trovano a livelli diversi della gerarchia delle risorse. Quando una risorsa tenta di accedere, l'accesso sensibile al contesto utilizza la policy associata a quella risorsa prima di tentare di utilizzare una policy associata a una risorsa di livello superiore.

Ad esempio, puoi associare una policy in modalità di applicazione forzata direttamente a un account di servizio e una policy in modalità di applicazione forzata diversa al progetto che contiene il account di servizio. Quando il account di servizio tenta di accedere alle risorse, l'accesso sensibile al contesto valuta la policy associata al account di servizio. Per gli altri service account del progetto a cui non sono associate policy, l'accesso sensibile al contesto valuta la policy in modalità di applicazione forzata associata al progetto. Lo stesso vale se la modalità di applicazione forzata è impostata su dry run sia per la policy a livello di progetto sia per la policy a livello di service account.

Puoi utilizzare più policy per eseguirne il deployment in modo incrementale e selettivo, ad esempio:

  1. Associa una policy in modalità dry run a livello di progetto e assicurati che funzioni come previsto controllando gli eventi di accesso negato in Cloud Audit Logs.
  2. Associa la policy in modalità di applicazione forzata solo a service account specifici.
  3. Associa la policy in modalità di applicazione forzata a livello di progetto e associa una policy meno restrittiva in modalità di applicazione forzata a service account specifici, in base alle esigenze.

L'accesso sensibile al contesto valuta le policy in modalità di applicazione forzata e in modalità dry run in modo indipendente nella gerarchia delle risorse. L'associazione di una policy in modalità dry run a un account di servizio non esegue l'override di una policy in modalità di applicazione forzata associata al progetto. Per esentare un account di servizio specifico da una policy in modalità di applicazione forzata a livello di progetto e valutare una policy in modalità dry run per quel service account, associa al account di servizio un livello di accesso personalizzato in modalità di applicazione forzata che restituisce sempre true insieme a un livello di accesso in modalità dry run. Per istruzioni, consulta Utilizza la modalità dry run per un account di servizio in un progetto con una policy in modalità di applicazione forzata.

Attributi del livello di accesso per i service account

Questa sezione elenca gli attributi del livello di accesso supportati per i service account.

Per i service account sono supportati i seguenti attributi:

  • Subnet IP, basate sull'indirizzo IP pubblico.
  • Reti VPC, basate sull'indirizzo IP privato.
  • Geolocalizzazione, basata sull'indirizzo IP pubblico.

    Quando il account di servizio effettua una richiesta alle API Google Cloud, l'accesso sensibile al contesto valuta la richiesta e confronta l'indirizzo IP della richiesta con gli indirizzi IP specificati nella policy di accesso sensibile al contesto. Se gli indirizzi IP corrispondono, l'accesso sensibile al contesto consente la chiamata API. Se gli indirizzi IP non corrispondono, l'accesso sensibile al contesto nega la chiamata API.

  • Un livello di accesso personalizzato con un'espressione Common Expression Language (CEL). L'espressione deve restituire true per consentire l'accesso e false per negarlo.

    La seguente espressione CEL è utile per limitare l'accesso da parte dei service account.

    L'espressione restituisce true se la richiesta proviene da uno o più numeri di progetto specificati:

        expression: "originatesFromProjects(origin, ['projects/PROJECT_NUMBER'])"
        

    originatesFromProjects controlla se la richiesta proviene da una rete associata al progetto specificato e se proviene da un indirizzo IP privato.

  • Ora del giorno, che si basa sull'ora e sulla data della richiesta in un fuso orario specificato.

    Per saperne di più, consulta Configurazione delle condizioni di accesso per ora e giorno.

Crea un livello di accesso

Questa sezione descrive come creare un livello di accesso all'interno della tua organizzazione. I livelli di accesso definiscono le condizioni in base alle quali è consentito l'accesso.

  1. Segui le istruzioni per creare un livello di accesso di base o creare un livello di accesso personalizzato.

  2. Prendi nota del nome completo del livello di accesso, che ha il seguente formato: accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.

Crea un'associazione di accesso

Associa il livello di accesso al account di servizio selezionato. In questo modo vengono applicate le condizioni definite nel livello di accesso. Puoi associare il livello di accesso a un singolo account di servizio o a tutti i service account di un progetto.

Associa il livello di accesso a un account di servizio specifico

Questa sezione descrive come associare il livello di accesso a un service account specifico.

gcloud

Associa il livello di accesso a un account di servizio utilizzando gcloud CLI.

gcloud access-context-manager cloud-bindings create \
    --organization=ORGANIZATION_ID \
    --service-account=SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
    --level=accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME

Sostituisci quanto segue:

  • ORGANIZATION_ID: il tuo ID organizzazione Google Cloud.
  • SERVICE_ACCOUNT_NAME: l'ID del service account di destinazione (la parte dell'indirizzo email prima del simbolo @).
  • SERVICE_ACCOUNT_PROJECT_ID: l'ID del progetto che contiene il account di servizio di destinazione.
  • POLICY_ID: l'ID della policy di accesso di Gestore contesto accesso.
  • ACCESS_LEVEL_NAME: il nome del livello di accesso che hai creato.

    Per utilizzare l'accesso sensibile al contesto senza applicare il livello di accesso e non consentire l'accesso, puoi associare il livello di accesso in modalità dry run.

API REST

Per associare il livello di accesso a un account di servizio specifico utilizzando l'API REST, esegui questo comando:

  1. Crea un file request.json con i seguenti contenuti:

    {
      "principal": {
        "serviceAccount": "SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com"
      },
      "accessLevels": ["accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME"]
    }
    

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_NAME: l'ID del account di servizio di destinazione (la parte dell'indirizzo email prima del simbolo @).

    • SERVICE_ACCOUNT_PROJECT_ID: l'ID del progetto che contiene il account di servizio di destinazione.

    • POLICY_ID: l'ID della policy di accesso di Gestore contesto accesso.

    • ACCESS_LEVEL_NAME: il nome del livello di accesso che hai creato.

  2. Esegui questo comando:

    curl -H "X-Goog-User-Project: PROJECT_ID" -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto che utilizzi per effettuare le chiamate API.

    • ORGANIZATION_ID: il tuo ID organizzazione Google Cloud.

Associa il livello di accesso a tutti i service account di un progetto

Questa sezione descrive come associare il livello di accesso a tutti i service account di un progetto.

gcloud

Per associare il livello di accesso a tutti i service account di un progetto utilizzando gcloud CLI, esegui questo comando:

gcloud access-context-manager cloud-bindings create \
  --organization=ORGANIZATION_ID \
  --service-account-project-number=PROJECT_NUMBER \
  --level=accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME

Sostituisci quanto segue:

  • ORGANIZATION_ID: il tuo ID organizzazione Google Cloud.
  • PROJECT_NUMBER: il numero di progetto che contiene tutti i service account a cui vuoi associare l'accesso.
  • POLICY_ID: l'ID della policy di accesso di Gestore contesto accesso.
  • ACCESS_LEVEL_NAME: il nome del livello di accesso che hai creato.

API REST

Per associare il livello di accesso a tutti i service account di un progetto utilizzando l'API REST, segui questi passaggi:

  1. Crea un file request.json con i seguenti contenuti:

    {
      "principal": {
        "serviceAccountProjectNumber": "PROJECT_NUMBER"
      },
      "accessLevels": ["accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME"]
    }
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero di progetto che contiene tutti i service account a cui vuoi associare l'accesso.
    • POLICY_ID: l'ID della policy di accesso di Gestore contesto accesso.
    • ACCESS_LEVEL_NAME: il nome del livello di accesso che hai creato.
  2. Esegui questo comando:

    curl -H "X-Goog-User-Project: PROJECT_ID" -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto che utilizzi per effettuare le chiamate API.
    • ORGANIZATION_ID: il tuo ID organizzazione Google Cloud.

Per utilizzare l'accesso sensibile al contesto senza applicare il livello di accesso e negare l'accesso, puoi associare il livello di accesso in modalità dry run.

La risposta dell'API per l'operazione di creazione del binding include il nome del binding, che contiene l'ID binding univoco.

Utilizza la modalità dry run

Puoi associare il livello di accesso in modalità dry run. Quando utilizzi la modalità dry run, i tuoi service account possono continuare ad accedere alle risorse senza applicazione. Tuttavia, se i tuoi service account tentano un accesso che viola il livello di accesso, l'accesso sensibile al contesto registra la violazione in Cloud Audit Logs.

Associa il livello di accesso in modalità dry run

gcloud

Per associare il livello di accesso in modalità dry run, sostituisci il parametro --level con --dry-run-level, formattato come segue:

--dry-run-level=accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME

API REST

Per associare il livello di accesso in modalità dry run, crea il file request.json con i seguenti contenuti:

{
"principal": {
  "serviceAccountProjectNumber": "TARGET_PROJECT_NUMBER"
},
"dryRunAccessLevels": ["accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME"]
}

Sostituisci quanto segue:

  • TARGET_PROJECT_NUMBER: il numero del progetto di destinazione.
  • POLICY_ID: l'ID della policy di accesso di Gestore contesto accesso.
  • ACCESS_LEVEL_NAME: il nome del livello di accesso.

Utilizza la modalità dry run per un account di servizio in un progetto con una policy in modalità di applicazione forzata

Poiché l'accesso sensibile al contesto valuta le policy in modalità di applicazione forzata e le policy in modalità dry run in modo indipendente nella gerarchia delle risorse, l'associazione di un livello di accesso in modalità dry run a un account di servizio non esegue l'override di una policy in modalità di applicazione forzata associata al progetto.

Per esentare un account di servizio specifico da una policy in modalità di applicazione forzata a livello di progetto e valutare un livello di accesso in modalità dry run per quel account di servizio, crea un livello di accesso personalizzato che restituisca sempre true, quindi associa il livello di accesso personalizzato in modalità di applicazione forzata insieme al livello di accesso in modalità dry run al account di servizio:

gcloud

  1. Crea un file always_allow.yaml con un'espressione CEL che restituisce sempre true:

    expression: "true"
    
  2. Crea il livello di accesso personalizzato:

    gcloud access-context-manager levels create ALWAYS_ALLOW_LEVEL_NAME \
      --title="TITLE" \
      --custom-level-spec=always_allow.yaml \
      --policy=POLICY_ID
    

    Sostituisci quanto segue:

    • ALWAYS_ALLOW_LEVEL_NAME: un nome univoco per il livello di accesso personalizzato che consente sempre l'accesso

    • TITLE: un titolo breve e leggibile per il livello di accesso

    • POLICY_ID: l'ID della policy di accesso di Gestore contesto accesso

  3. Associa il livello di accesso personalizzato in modalità di applicazione forzata (--level) e il livello di accesso di destinazione in modalità dry run (--dry-run-level) al service account:

    gcloud access-context-manager cloud-bindings create \
      --organization=ORGANIZATION_ID \
      --service-account=SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
      --level=accessPolicies/POLICY_ID/accessLevels/ALWAYS_ALLOW_LEVEL_NAME \
      --dry-run-level=accessPolicies/POLICY_ID/accessLevels/DRY_RUN_ACCESS_LEVEL_NAME
    

    Sostituisci quanto segue:

    • ORGANIZATION_ID: il tuo ID organizzazione Google Cloud

    • SERVICE_ACCOUNT_NAME: il nome del account di servizio di destinazione, che è diverso dall'indirizzo email del account di servizio

    • SERVICE_ACCOUNT_PROJECT_ID: l'ID del progetto che contiene il account di servizio di destinazione

    • POLICY_ID: l'ID della policy di accesso di Gestore contesto accesso

    • ALWAYS_ALLOW_LEVEL_NAME: il nome del livello di accesso personalizzato che restituisce sempre true

    • DRY_RUN_ACCESS_LEVEL_NAME: il nome del livello di accesso che vuoi valutare in modalità dry run

    Se hai già associato la policy in modalità dry run a livello di progetto o se vuoi solo esentare il account di servizio dalla policy in modalità di applicazione forzata a livello di progetto, puoi omettere --dry-run-level.

API REST

  1. Crea un livello di accesso personalizzato con l'espressione CEL "expression": "true".

  2. Crea un file request.json che associa il livello di accesso personalizzato in accessLevels e il livello di accesso dry run di destinazione in dryRunAccessLevels per il account di servizio:

    {
    "principal": {
      "serviceAccount": "SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com"
    },
    "accessLevels": ["accessPolicies/POLICY_ID/accessLevels/ALWAYS_ALLOW_LEVEL_NAME"],
    "dryRunAccessLevels": ["accessPolicies/POLICY_ID/accessLevels/DRY_RUN_ACCESS_LEVEL_NAME"]
    }
    

    Sostituisci quanto segue:

    • SERVICE_ACCOUNT_NAME: il nome del account di servizio di destinazione, che è diverso dall'indirizzo email del account di servizio

    • SERVICE_ACCOUNT_PROJECT_ID: l'ID del progetto che contiene il account di servizio di destinazione

    • POLICY_ID: l'ID della policy di accesso di Gestore contesto accesso

    • ALWAYS_ALLOW_LEVEL_NAME: il nome del livello di accesso personalizzato che restituisce sempre true

    • DRY_RUN_ACCESS_LEVEL_NAME: il nome del livello di accesso che vuoi valutare in modalità dry run

    Se hai già associato la policy in modalità dry run a livello di progetto o se vuoi solo esentare il account di servizio dalla policy in modalità di applicazione forzata a livello di progetto, puoi omettere dryRunAccessLevels.

  3. Esegui questo comando:

    curl -H "X-Goog-User-Project: PROJECT_ID" -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://accesscontextmanager.googleapis.com/v1/organizations/ORGANIZATION_ID/gcpUserAccessBindings"
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto che utilizzi per effettuare le chiamate API

    • ORGANIZATION_ID: il tuo ID organizzazione Google Cloud

Controlla Cloud Audit Logs

Questa sezione descrive come controllare in Cloud Audit Logs i rifiuti di accesso in modalità dry run per il tuo account di servizio. Per saperne di più sulla ricerca di voci in modalità dry run in Cloud Audit Logs, consulta Visualizza i log della modalità dry run.

Console

Per visualizzare i rifiuti di accesso ai account di servizio in modalità dry run di Cloud Audit Logs utilizzando la console Google Cloud , segui questi passaggi:

Nella console Google Cloud , vai alla pagina Esplora log:

Vai a Esplora log

Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

  1. Nella console Google Cloud , seleziona il progetto o l'organizzazione.

  2. Nel campo Query di log, inserisci la seguente query:

    protoPayload.serviceName="contextawareaccess.googleapis.com"
    protoPayload.metadata.dryRunEvaluationResult:DENIED
    SEARCH("SERVICE_ACCOUNT_NAME")
    
  3. Nel selettore dell'intervallo di tempo, scegli un intervallo di tempo relativo predefinito, ad esempio Ultimi 30 minuti, Ultima ora o Ultime 24 ore, oppure specifica un intervallo personalizzato.

gcloud

Per visualizzare i rifiuti di accesso dei account di servizio in modalità dry run di Cloud Audit Logs utilizzando gcloud CLI, segui questi passaggi:

gcloud logging read \
'protoPayload.serviceName="contextawareaccess.googleapis.com" AND
 protoPayload.metadata.dryRunEvaluationResult:DENIED AND
 SEARCH("SERVICE_ACCOUNT_NAME")' \
  --organization=ORGANIZATION_ID

Sostituisci quanto segue:

  • ORGANIZATION_ID: l'ID dell'organizzazione.
  • SERVICE_ACCOUNT_NAME: l'ID del service account (la parte dell'indirizzo email prima del simbolo @).

Il comando gcloud logging read supporta il flag --freshness per visualizzare le informazioni di logging in periodi di tempo relativi. Ad esempio, aggiungendo --freshness=3h al comando, puoi visualizzare le voci di log della modalità dry run delle ultime 3 ore.

Passaggi successivi