Regole per il traffico in entrata e in uscita

Questa pagina illustra le regole di traffico in entrata e in uscita per i Controlli di servizio VPC. I Controlli di servizio VPC utilizzano le regole di traffico in entrata e in uscita per consentire l'accesso da e verso le risorse e i client protetti dai perimetri di servizio.

I blocchi di regole in entrata e in uscita specificano la direzione dell'accesso consentito da e verso diverse identità e risorse. Le regole di traffico in entrata e in uscita possono sostituire e semplificare i casi d'uso che in precedenza richiedevano uno o più ponti di perimetro.

Per informazioni su come applicare i criteri in entrata e in uscita al perimetro di servizio, consulta Configurazione dei criteri in entrata e in uscita.

Per un elenco di casi d'uso ed esempi di Secure Exchange, vedi Secure Data Exchange con regole in entrata e in uscita.

Per un elenco di casi d'uso ed esempi di accesso sensibile al contesto, vedi Accesso sensibile al contesto con regole in entrata.

Vantaggi delle regole in entrata e in uscita

  1. Le regole di traffico in entrata e in uscita consentono di scambiare dati in modo privato ed efficiente all'interno e tra le organizzazioni tramite le API del servizio Google Cloud.
  2. Le regole di traffico in entrata e in uscita consentono di concedere l'accesso alle risorse Google Cloud in un perimetro in base al contesto della richiesta API:
    1. Limita i tipi di identità o le identità che possono essere utilizzati in base a una rete di origine, un indirizzo IP o un dispositivo.
    2. Limita le API e i metodi di Google Cloud a cui è possibile accedere in base alla rete, all'indirizzo IP, al dispositivo e al tipo di identità di origine.
  3. Riduci al minimo il rischio di esfiltrazione limitando il servizio, i metodi, i progetti Google Cloud e le identità esatti utilizzati per eseguire lo scambio di dati.
  4. Concedi l'accesso in sola lettura a set di dati e immagini esterni che non sono gestiti da te.
  5. Assicurati che i client nei segmenti con privilegi inferiori non abbiano accesso alle risorse di Google Cloud in segmenti con privilegi più elevati, consentendo l'accesso nella direzione opposta.
  6. Semplifica le configurazioni che in precedenza richiedevano uno o più perimetri.

Definizione di traffico in entrata e in uscita

  • Ingress: si riferisce a qualsiasi accesso effettuato da un client API dall'esterno del perimetro di servizio alle risorse all'interno di un perimetro di servizio. Esempio:

    • Un client Cloud Storage all'esterno di un perimetro di servizio che chiama le operazioni di lettura, scrittura o copia di Cloud Storage su una risorsa Cloud Storage all'interno del perimetro.
  • In uscita si riferisce a qualsiasi accesso che prevede un client API o risorse all'interno del perimetro di servizio e risorse esterne al perimetro di servizio. Esempi:

    • Un client Compute Engine all'interno di un perimetro di servizio che chiama un'operazione di createCompute Engine in cui la risorsa immagine è all'esterno del perimetro.
    • Un client Cloud Storage, all'interno o all'esterno del perimetro, che chiama un comando copy in cui un bucket si trova all'interno e all'esterno del perimetro.

Modello dei criteri

Una regola di traffico in entrata o in uscita è composta da blocchi from e to in cui:

  • from fa riferimento agli attributi del client API.
  • to fa riferimento agli attributi dei servizi e delle risorse Google Cloud.

A un perimetro di servizio possono essere associate più regole di traffico in entrata e in uscita. Una chiamata di servizio Google Cloud è consentita o negata in base alla seguente semantica:

  • È consentita una richiesta da un client all'esterno del perimetro a una risorsa Google Cloud all'interno del perimetro se sono soddisfatte le condizioni della regola in entrata necessaria.
  • È consentita una richiesta da un client all'interno del perimetro a una risorsa Google Cloud all'esterno del perimetro se sono soddisfatte le condizioni della regola in uscita necessaria.
  • Una chiamata API che coinvolge una risorsa Google Cloud all'interno del perimetro e una risorsa Google Cloud all'esterno del perimetro è consentita se esiste una regola in entrata che il client soddisfa (se il client non è compreso nel perimetro) e una regola in uscita soddisfatta dalla risorsa esterna.

Esempi di richieste API consentite dalle regole in entrata

  • Un client Cloud Storage all'esterno del perimetro che scarica gli oggetti da un bucket Cloud Storage all'interno del perimetro della macchina locale (ad esempio utilizzando il comando gsutil cp).
  • Un client BigQuery all'esterno del perimetro che utilizza un job BigQuery in un progetto all'interno del perimetro per eseguire una query su un set di dati BigQuery all'interno del perimetro (ad esempio utilizzando il comando bq query).

Esempi di richieste API consentite dalle regole in uscita

  • Un client Cloud Storage all'interno del perimetro che copia gli oggetti tra un bucket Cloud Storage all'esterno del perimetro e un bucket all'interno del perimetro (ad esempio utilizzando il comando gsutil cp).
  • Un client BigQuery all'interno del perimetro che utilizza un job BigQuery in un progetto esterno al perimetro per eseguire una query su un set di dati BigQuery all'interno del perimetro (ad esempio, utilizzando il comando bq query).

Esempi di richieste API consentite da una combinazione di regole in entrata e in uscita

  • Un client Cloud Storage all'esterno del perimetro che copia gli oggetti tra un bucket Cloud Storage all'esterno del perimetro e un bucket all'interno del perimetro (ad esempio, utilizzando il comando gsutil cp).
  • Un client BigQuery esterno al perimetro che utilizza un job BigQuery in un progetto esterno al perimetro per eseguire query su un set di dati BigQuery all'interno del perimetro (ad esempio utilizzando il comando bq query).

Richieste API che coinvolgono più perimetri di servizio

Quando le risorse di accesso e/o il client API appartengono a perimetri di servizio diversi, i criteri di tutti i perimetri coinvolti devono consentire la richiesta API. Esempio:

  • Per consentire a un client Cloud Storage all'interno del perimetro A di copiare oggetti tra un bucket Cloud Storage a all'interno del perimetro A e un bucket Cloud Storage b all'interno del perimetro B, sono richieste le seguenti regole in entrata/in uscita:

    • una regola in uscita nel perimetro A per consentire l'accesso al bucket Cloud Storage b,
    • una regola in uscita nel perimetro B per consentire l'accesso al bucket Cloud Storage a,
    • una regola in entrata nel perimetro B per consentire l'accesso al client Cloud Storage esterno al perimetro B.

Riferimento alle regole Ingress

Le regole di traffico in entrata possono essere configurate utilizzando Google Cloud Console, un file JSON o un file YAML. L'esempio seguente utilizza il formato .yaml:

- ingressFrom:
    identityType: ANY_IDENTITY
    *OR*
    identities:
    - serviceAccount:service-account
    sources:
    - resource: projects/project
      *OR*
    - accessLevel: access-level
  ingressTo:
    operations:
    - serviceName: service
      methodSelectors:
      - method: method
      *OR*
      - permission: permission
    resources:
    - projects/project
  • - ingressFrom:: (obbligatorio) avvia il blocco from che elenca le origini e le identità consentite all'esterno del perimetro.

  • identityType: - (Devi utilizzare questo attributo o l'attributo identities) Questo attributo definisce i tipi di identità che possono essere utilizzati dall'elemento sources specificato (origine rete). Valori accettabili: ANY_IDENTITY, ANY_USER_ACCOUNT, ANY_SERVICE_ACCOUNT. ANY_IDENTITY consente tutte le identità. ANY_USER_ACCOUNT consente tutti gli utenti. ANY_SERVICE_ACCOUNT consente tutti gli account di servizio.

  • identities: - (Devi utilizzare questo attributo o l'attributo identityType) Questo attributo crea un elenco di account di servizio che possono accedere alle risorse all'interno del perimetro.

  • serviceAccount: un account di servizio a cui viene concesso l'accesso alle risorse nel perimetro.

  • sources:: (obbligatorio) questo attributo si riferisce a un elenco di origini di rete. Ogni valore nell'elenco è un livello di accesso o un progetto Google Cloud. Se imposti l'attributo accessLevel su \"*\", il criterio in entrata consente l'accesso da qualsiasi origine di rete.

  • - resource: - (Devi utilizzare questo attributo o l'attributo accessLevel) Specifica il progetto dall'esterno del perimetro a cui viene concesso l'accesso.

  • - accessLevel:: deve essere utilizzato questo attributo o l'attributo resource. Specifica il livello di accesso dall'esterno del perimetro a cui viene concesso l'accesso. Se imposti l'attributo accessLevel su \"*\", il criterio in entrata consente l'accesso da qualsiasi origine di rete.

  • ingressTo:: (obbligatorio) avvia il blocco to che elenca le operazioni di servizio consentite su risorse Google Cloud specificate all'interno del perimetro.

  • operations: - (Obbligatorio) Contrassegna l'inizio dell'elenco di servizi e azioni/metodi accessibili.

  • - serviceName: - (Obbligatorio) Questo campo può essere un nome di servizio valido o essere impostato su \"*\" per consentire l'accesso a tutti i servizi. Ad esempio, bigquery.googleapis.com è un serviceName valido. Per un elenco dei servizi disponibili, vedi Prodotti supportati.

  • methodSelectors:: (obbligatorio) l'inizio di un elenco di metodi a cui un client che soddisfa le condizioni di blocco from può accedere. Per un elenco delle autorizzazioni e dei metodi limitati per i servizi, consulta la sezione Limitazioni dei metodi di servizio supportati.

  • - method: - (Devi utilizzare questo attributo o l'attributo permission) Questo campo può essere un metodo di servizio valido o può essere impostato su \"*\" per consentire l'accesso a tutti i metodi del servizio specificato.

  • - permission: - (Devi utilizzare questo attributo o l'attributo method) Questo campo deve essere un'autorizzazione di servizio valida. L'accesso alle risorse all'interno del perimetro è consentito per le operazioni che richiedono l'autorizzazione.

  • resources: - (Obbligatorio) Questo attributo specifica l'elenco delle risorse Google Cloud nel perimetro di servizio a cui può accedere il client all'esterno del perimetro. Questo campo può essere impostato su \"*\" per consentire l'accesso in entrata a qualsiasi risorsa Google Cloud all'interno del perimetro.

Per rendere efficace una regola in entrata, devi specificare i seguenti attributi:

  • Attributo sources. Devi specificare un accessLevel o un resource (progetto Google Cloud) oppure impostare l'attributo accessLevel su \"*\".
  • Attributo identityType o identities
  • Attributo resources
  • Attributo serviceName

Dopo aver configurato il file dei criteri in entrata, consulta Aggiornamento dei criteri in entrata e in uscita per istruzioni sull'applicazione del file dei criteri in entrata al perimetro di servizio.

Riferimento per le regole in uscita

Le regole in uscita possono essere configurate utilizzando Google Cloud Console, un file JSON o un file YAML. L'esempio seguente utilizza il formato .yaml:

- egressTo:
    operations:
    - serviceName: service-name
      methodSelectors:
      - method: method
      *OR*
      - permission: permission
    resources:
    - projects/project
    *OR*
    externalResources:
    - external-resource-path
  egressFrom:
    identityType: ANY_IDENTITY
    *OR*
    identities:
    - serviceAccount:service-account
  • - egressTo: - (Obbligatorio) Avvia il blocco to che elenca le operazioni di servizio consentite sulle risorse Google Cloud in progetti specificati all'esterno del perimetro.

  • operations: - (Obbligatorio) Contrassegna l'inizio dell'elenco di servizi e azioni/metodi accessibili.

  • - serviceName: - (Obbligatorio) Questo campo può essere un nome di servizio valido o essere impostato su \"*\" per consentire l'accesso a tutti i servizi. Per un elenco dei servizi disponibili, consulta la sezione Prodotti supportati.

  • methodSelectors:: (obbligatorio) l'inizio di un elenco di metodi a cui un client che soddisfa le condizioni di blocco from può accedere. Per un elenco delle autorizzazioni e dei metodi limitati per i servizi, consulta la sezione Limitazioni dei metodi di servizio supportati.

  • - method:: deve essere utilizzato questo attributo o l'attributo permission. Questo campo può essere un metodo di servizio valido o può essere impostato su \"*\" per consentire l'accesso a tutti i metodi del servizio specificato.

  • - permission:: deve essere utilizzato questo attributo o l'attributo method. Questo campo deve essere un'autorizzazione di servizio valida. L'accesso alle risorse specificate all'esterno del perimetro è consentito per le operazioni che richiedono questa autorizzazione.

  • resources:: deve essere utilizzato questo attributo o l'attributo externalResources. Questo attributo è un elenco di risorse Google Cloud specificate dai loro progetti a cui i client all'interno di un perimetro possono accedere. Questo campo può essere impostato su \"*\" per consentire l'accesso in uscita a qualsiasi risorsa di Google Cloud.

  • externalResources:: deve essere utilizzato questo attributo o l'attributo resources. Questo attributo è un elenco di risorse esterne a cui i client all'interno di un perimetro possono accedere. Questo attributo supporta solo risorse AWS o Azure. Per Amazon S3, il formato supportato è s3://BUCKET_NAME. Per Azure Storage, il formato supportato è azure://myaccount.blob.core.windows.net/CONTAINER_NAME.

  • egressFrom: - (Obbligatorio) Avvia il blocco from che elenca le operazioni di servizio consentite sulle risorse Google Cloud in progetti specificati all'interno del perimetro.

  • identityType:: deve essere utilizzato questo attributo o l'attributo identities. Questo attributo definisce i tipi di identità che possono essere utilizzati per accedere alle risorse specificate al di fuori del perimetro. Valori accettabili: ANY_IDENTITY, ANY_USER_ACCOUNT, ANY_SERVICE_ACCOUNT. ANY_IDENTITY consente tutte le identità. ANY_USER_ACCOUNT consente tutti gli utenti. ANY_SERVICE_ACCOUNT consente tutti gli account di servizio.

  • identities:: deve essere utilizzato questo attributo o l'attributo identityType. Questo attributo avvia un elenco di account di servizio che possono accedere alle risorse specificate all'esterno del perimetro.

  • serviceAccount: un account di servizio che può accedere alle risorse specificate all'esterno del perimetro.

Dopo aver configurato il file dei criteri in uscita, vedi Aggiornamento dei criteri in entrata e in uscita per istruzioni sull'applicazione del file dei criteri in uscita al perimetro di servizio.

Utilizzo della modalità di prova per testare i criteri in entrata/in uscita

Se non vuoi concedere l'accesso a tutti i metodi di un servizio, a volte può essere difficile determinare l'elenco preciso di metodi da consentire. Ciò può accadere perché un determinato metodo per un servizio può causare l'invocazione di un metodo diverso in un servizio Google Cloud separato. Ad esempio, BigQuery esegue il caricamento di una tabella da un bucket Cloud Storage per eseguire una query.

Per determinare il set di metodi corretto da consentire, puoi utilizzare la modalità di prova dei Controlli di servizio VPC. Per prima cosa, abilita un perimetro in modalità di prova senza criteri in entrata o in uscita e raccogli l'elenco dei metodi richiamati dal log di controllo. Quindi, aggiungi progressivamente questi metodi ai criteri in entrata/in uscita in modalità di prova fino alla cessazione di tutte le violazioni. A quel punto, sarà possibile passare dalla modalità di prova a quella applicata.

Funzionalità non supportate

Le seguenti funzionalità non sono attualmente supportate per le regole in entrata e in uscita:

  1. Identificazione delle risorse Google Cloud in base alle etichette anziché ai progetti.
  2. Specifica dei gruppi nel campo identities di una regola from in entrata/in uscita.
  3. Non tutti i servizi supportano le regole di traffico in entrata/in uscita per metodo. Vedi Limitazioni relative ai metodi di servizio supportati.
  4. I tipi di identità ANY_SERVICE_ACCOUNT e ANY_USER_ACCOUNT non possono essere utilizzati per consentire le seguenti operazioni:

Limitazioni

Per informazioni sui limiti di traffico in entrata e in uscita, consulta Quote e limiti.