Regole per il traffico in entrata e in uscita

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

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

Per scoprire come applicare i criteri in entrata e in uscita al perimetro di servizio, vedi Configurare i criteri in entrata e in uscita.

Per un elenco di esempi e casi d'uso di scambio di dati sicuri, vedi Scambio di dati sicuro con regole per il traffico in entrata e in uscita.

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

Vantaggi delle regole in entrata e in uscita

  1. Le regole in entrata e in uscita consentono di scambiare dati in modo privato ed efficiente all'interno e tra le organizzazioni utilizzando le API dei servizi Google Cloud.
  2. Le regole 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 utilizzate 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 di origine, all'indirizzo IP, al dispositivo e al tipo di identità.
  3. Riduci al minimo il rischio di esfiltrazione limitando il servizio, i metodi, i progetti Google Cloud e le identità utilizzati per eseguire lo scambio di dati.
  4. Concedi l'accesso in sola lettura ai set di dati e alle immagini esterne che non sono gestiti da te.
  5. Assicurati che i client nei segmenti con privilegi inferiori non abbiano accesso alle risorse Google Cloud nei segmenti con privilegi più elevati, consentendo l'accesso nell'altra direzione.
  6. Semplifica le configurazioni che in precedenza richiedevano uno o più perimetri bridge.

Definizione di traffico in entrata e in uscita

Le definizioni di traffico in entrata e in uscita sono indipendenti dall'operazione richiamata per la risorsa. Pertanto, le definizioni si riferiscono alla direzione della richiesta e non alla direzione dello spostamento dei dati.

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

    • Un client Cloud Storage al di fuori 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 riguarda un client API o le risorse all'interno del perimetro di servizio e le risorse esterne a un perimetro di servizio. Esempi:

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

Modello dei criteri

Una regola 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 di 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 rifiutata 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 le condizioni della regola in entrata necessaria sono soddisfatte.
  • È consentita una richiesta da un client all'interno del perimetro a una risorsa di Google Cloud all'esterno del perimetro se le condizioni della regola in uscita necessaria sono soddisfatte.
  • È consentita una chiamata API che coinvolge una risorsa di Google Cloud all'interno del perimetro e una risorsa di Google Cloud all'esterno del perimetro se esiste una regola in entrata che il client soddisfa (se il client non è compreso nel perimetro) e una regola in uscita che la risorsa esterna soddisfa.

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 sulla macchina locale (ad esempio utilizzando il comando gsutil cp).
  • Un client BigQuery esterno al 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 esterno al 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 dalla combinazione di regole in entrata e in uscita

  • Un client Cloud Storage al di fuori del perimetro che copia gli oggetti tra un bucket Cloud Storage al di fuori 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 una 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 a cui si accede e/o il client API appartengono a perimetri di servizio diversi, i criteri di tutti i perimetri interessati devono consentire la richiesta API. Ad esempio, considera un client Cloud Storage e il bucket a all'interno di un perimetro di servizio A e un bucket b all'interno di un perimetro di servizio B. In questo esempio, per il client Cloud Storage copiare gli oggetti dal bucket a al bucket b e dal bucket b al bucket a, sono richieste le seguenti regole in entrata e 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 che si trova all'esterno del perimetro B.

Riferimento alle regole Ingress

Le regole in entrata possono essere configurate utilizzando la console Google Cloud, un file JSON o un file YAML. Il seguente esempio utilizza il formato .yaml:

- ingressFrom:
    identityType: ANY_IDENTITY
    *OR*
    identities:
    - serviceAccount:service-account
    - user:user-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 origini e identità consentite al di fuori del perimetro.

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

  • identities: (questo attributo o l'attributo identityType deve essere utilizzato). Questo attributo avvia un elenco di account di servizio o account utente che possono accedere alle risorse nel perimetro.

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

  • user: un account utente 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:: (questo attributo o l'attributo resource deve essere utilizzato) 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 a cui un client che soddisfa le condizioni di blocco from può accedere.

  • - 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, consulta l'articolo Prodotti supportati.

  • methodSelectors:: (obbligatorio) all'inizio di un elenco di metodi a cui un client che soddisfa le condizioni di blocco from può accedere. Per un elenco di metodi e autorizzazioni limitati per i servizi, vedi Restrizioni relative ai 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. Per le operazioni che richiedono l'autorizzazione è consentito l'accesso alle risorse all'interno del perimetro.

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

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

  • 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 la sezione Aggiornamento dei criteri in entrata e in uscita per istruzioni sull'applicazione del file dei criteri in entrata al perimetro di servizio.

Riferimento alle regole in uscita

Le regole in uscita possono essere configurate utilizzando la console Google Cloud, un file JSON o un file YAML. Il seguente esempio 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
    - user:user-account
  • - egressTo: - (Obbligatorio) Avvia il blocco to che elenca le operazioni di servizio consentite sulle risorse Google Cloud in progetti specificati esterni al perimetro.

  • operations: - (Obbligatorio) Contrassegna l'inizio dell'elenco di servizi e azioni/metodi accessibili a cui un client che soddisfa le condizioni di blocco from può accedere.

  • - 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) all'inizio di un elenco di metodi a cui un client che soddisfa le condizioni di blocco from può accedere. Per un elenco di metodi e autorizzazioni limitati per i servizi, vedi Restrizioni relative ai metodi di servizio supportati.

  • - method: (questo attributo o l'attributo permission devono essere utilizzati). 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: (questo attributo o l'attributo method devono essere utilizzati). Questo campo deve essere un'autorizzazione di servizio valida. Per le operazioni che richiedono questa autorizzazione è consentito l'accesso alle risorse specificate all'esterno del perimetro.

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

  • externalResources: (questo attributo o l'attributo resources devono essere utilizzati). Questo attributo è un elenco di risorse esterne a cui possono accedere i client all'interno di un perimetro. 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: (questo attributo o l'attributo identities devono essere utilizzati). Questo attributo definisce i tipi di identità che possono essere utilizzati per accedere alle risorse specificate all'esterno del perimetro. Valori accettati: ANY_IDENTITY, ANY_USER_ACCOUNT, ANY_SERVICE_ACCOUNT. ANY_IDENTITY consente tutte le identità. ANY_USER_ACCOUNT consente tutti gli utenti umani. ANY_SERVICE_ACCOUNT consente tutti gli account di servizio.

  • identities: (questo attributo o l'attributo identityType devono essere utilizzati). Questo attributo avvia un elenco di account di servizio o account utente 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.

  • user: un account utente che può accedere alle risorse specificate all'esterno del perimetro.

Dopo aver configurato il tuo file dei criteri in uscita, vedi Aggiornare i 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

Quando non si vuole concedere l'accesso a tutti i metodi di un servizio, può essere difficile determinare l'elenco preciso di metodi da consentire. Questo può verificarsi perché un determinato metodo per un servizio può causare l'invio 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 utilizzare, puoi utilizzare la modalità di prova dei Controlli di servizio VPC. Per farlo, devi prima abilitare un perimetro in modalità di prova senza criteri in entrata o in uscita e raccogliere 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 a quando tutte le violazioni non saranno cessate. Dopodiché, la configurazione può essere spostata dalla modalità di prova a quella forzata.

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/uscita.
  3. Non tutti i servizi supportano le regole di traffico in entrata/uscita in base al metodo. Vedi Restrizioni 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 per il traffico in entrata e in uscita, consulta Quote e limiti.