Utilizzare i Controlli di servizio VPC

Per proteggere la configurazione di Network Connectivity Center (NCC), utilizza i Controlli di servizio VPC.

I Controlli di servizio VPC forniscono ulteriore sicurezza per le API di Google e i servizi, inclusa la configurazione di NCC. Oltre a IAM, i Controlli di servizio VPC limitano i sistemi di origine che possono apportare modifiche alla configurazione di NCC.

Questa pagina descrive un caso d'uso comune e una configurazione di esempio per consentire l'accesso tra un hub NCC e spoke VPC separati da perimetri di servizio.

Per una documentazione completa, consulta la panoramica dei Controlli di servizio VPC.

Esempio: proposte di spoke VPC tra progetti in perimetri di servizio

Se la tua configurazione richiede che un hub NCC e i relativi spoke VPC si trovino in progetti diversi appartenenti a perimetri dei Controlli di servizio VPC separati, devi configurare regole in entrata e in uscita in entrambi i perimetri. In questo modo, gli amministratori degli spoke possono proporre uno spoke VPC che fa riferimento all'hub e gli amministratori dell'hub possono accettare gli spoke proposti.

L'esempio in questa pagina presuppone che l'amministratore hub e gli amministratori spoke appartengano a organizzazioni separate.

La seguente tabella riepiloga le regole richieste per questo esempio:

Perimetro Regola Finalità
Perimetro spoke
(progetto spoke)
Regola in entrata 1 Consentire all'amministratore dello spoke di avviare una proposta di spoke creando uno spoke nel progetto spoke (se la gestione viene eseguita dall'esterno di SpokePerimeter)
Regola in uscita 1 Consenti alla proposta di spoke in uscita di avviare il collegamento all'hub nel progetto hub, inclusa la verifica della rete VPC di backend
Perimetro dell'hub
(progetto hub)
Regola in entrata 1 Consente all'amministratore dell'hub di gestire l'hub nel progetto hub, inclusa l'accettazione o il rifiuto delle proposte di spoke (se la gestione dell'hub avviene dall'esterno di HubPerimeter)
Regola in entrata 2 Consenti alla proposta di spoke in entrata di avviare l'allegato all'hub
Regola in uscita 1 Consenti alla proposta di spoke in entrata di richiamare il progetto spoke per completare il collegamento dello spoke all'hub, inclusa la verifica della rete VPC di backend

Regole perimetrali spoke

Per abilitare la creazione e la gestione degli spoke, l'amministratore dello spoke configura le seguenti regole in entrata e in uscita:

Regola Dettagli
Regola in entrata 1: creazione dello spoke Quando un amministratore spoke avvia una proposta spoke emettendo il comando di creazione dall'esterno del perimetro (ad esempio da una workstation amministratore, Cloud Shell o dalla console Google Cloud ), Controlli di servizio VPC valuta la chiamata come una richiesta in entrata al progetto spoke. SpokePerimeter deve consentire l'ingresso dall'identità e dall'origine di rete dell'amministratore spoke per l'API NCC.

Questa regola non è necessaria se la gestione degli spoke viene eseguita esclusivamente dall'interno di una rete VPC protetta da SpokePerimeter.
Regola in uscita 1: collegamento dell'hub e verifica della rete Quando un amministratore spoke propone uno spoke, la richiesta avvia l'allegato all'hub nel progetto hub. Nell'ambito della richiesta, l'API NCC verifica anche la rete VPC di backend utilizzando l'API Compute Engine. SpokePerimeter deve consentire il traffico in uscita dall'amministratore dello spoke sia per le API NCC che per quelle Compute Engine.

Definizione del perimetro spoke

Gli esempi di regole in entrata e in uscita nelle sezioni seguenti si basano sulla seguente definizione del perimetro.

Per saperne di più sui perimetri di servizio, consulta Dettagli e configurazione del perimetro di servizio.

# Spoke perimeter definition
name: accessPolicies/2345678901/servicePerimeters/SpokePerimeter
status:
  resources:
  - projects/222222222222
  restrictedServices:
  - networkconnectivity.googleapis.com
  - compute.googleapis.com
title: SpokePerimeter

Regola in entrata spoke

Questa sezione fornisce un esempio che implementa la regola in entrata per il perimetro spoke, come descritto in Regole del perimetro spoke. Questa regola è obbligatoria solo se gestisci gli spoke dall'esterno di SpokePerimeter.

Per informazioni dettagliate sulla sintassi delle regole, consulta il riferimento per le regole in entrata. Per applicare le regole, vedi Configurazione delle policy in entrata e in uscita.

echo """
# Rule 1: Allow the spoke administrator to initiate a spoke proposal by creating
# a spoke in the spoke project (if managing from outside SpokePerimeter)
- ingressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
    sources:
    - accessLevel: accessPolicies/2345678901/accessLevels/SpokeAdminAccessLevel
    # Alternatively, specify a management project or VPC network if managing
    # from a VPC network outside the perimeter:
    # - resource: projects/MANAGEMENT_PROJECT_NUMBER
  ingressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    resources:
    - projects/222222222222
""" > spoke-ingress.yaml

Come best practice, definisci regole in entrata il più specifiche possibile:

  • identities: specifica solo l'identificatore dell'entità necessario per il tuo ambiente anziché tipi di identità generici. In questo esempio, la regola 1 specifica un account di servizio per una pipeline di deployment automatizzata. In alternativa, puoi specificare un gruppo Google per l'amministrazione del team o un account utente individuale. Per maggiori dettagli, vedi Identità supportate per le regole in entrata e in uscita.

  • sources: limita le origini ai livelli di accesso noti. Questo esempio specifica un livello di accesso dalla norma di accesso che gestisce SpokePerimeter per autorizzare fonti esterne come workstation amministrative, Cloud Shell o la console Google Cloud . In alternativa, puoi consentire l'accesso da una rete VPC di gestione esterna al perimetro utilizzando l'attributo - resource: per specificare il progetto o la rete VPC. Per maggiori dettagli, vedi Consentire l'accesso dall'esterno di un perimetro e Accesso sensibile al contesto con regole in entrata.

  • operations: le limitazioni per networkconnectivity.googleapis.com vengono applicate a livello di servizio, richiedendo method: "*". Per questo servizio non sono disponibili metodi più granulari.

  • resources: specifica il numero esatto del progetto spoke in resources. Evita i caratteri jolly (*).

Regola in uscita dello spoke

Questa sezione fornisce un esempio che implementa la regola di uscita per il perimetro spoke, come descritto in Regole del perimetro spoke.

Per informazioni dettagliate sulla sintassi delle regole, consulta il riferimento per le regole in uscita.

echo """
# Rule 1: Allow the outbound spoke proposal to initiate attachment to the hub in
# the hub project, which includes verifying the backing VPC network
- egressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    - serviceName: compute.googleapis.com
      methodSelectors:
      - method: NetworksService.Get
    resources:
    - projects/111111111111
  egressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
""" > spoke-egress.yaml

Come best practice, definisci regole in uscita il più specifiche possibile:

  • identities: specifica solo l'identificatore dell'entità necessario per il tuo ambiente anziché tipi di identità generici. In questo esempio, la regola 1 specifica un account di servizio per una pipeline di deployment automatizzata. In alternativa, puoi specificare un gruppo Google per l'amministrazione del team o un account utente individuale. Per maggiori dettagli, vedi Identità supportate per le regole in entrata e in uscita.

  • operations: le limitazioni per networkconnectivity.googleapis.com vengono applicate a livello di servizio, richiedendo method: "*". Per compute.googleapis.com, specifica method: NetworksService.Get per concedere l'autorizzazione a verificare la rete VPC di backend quando viene avviato l'allegato all'hub.

  • resources: specifica il numero esatto del progetto hub in resources. Evita i caratteri jolly (*).

Regole del perimetro dell'hub

Per abilitare l'amministrazione dell'hub e consentire le proposte di spoke in entrata, l'amministratore dell'hub configura le seguenti regole in entrata e in uscita:

Regola Dettagli
Regola in entrata 1: gestione dell'hub Quando un amministratore hub gestisce l'hub dall'esterno del perimetro (ad esempio da una workstation amministratore, Cloud Shell o dalla console Google Cloud ), Controlli di servizio VPC valuta la chiamata come una richiesta di traffico in entrata al progetto hub. Questa regola consente all'amministratore dell'hub di esaminare gli spoke proposti e accettarli (trasformando lo spoke in ACTIVE) o rifiutarli (trasformando lo spoke in REJECTED). HubPerimeter deve consentire l'ingresso dall'identità e dall'origine di rete dell'amministratore dell'hub.

Questa regola non è necessaria se la gestione dell'hub viene eseguita esclusivamente dall'interno di una rete VPC protetta da HubPerimeter.
Regola in entrata 2: allegato dell'hub Quando un amministratore spoke propone uno spoke, la richiesta avvia l'allegato all'hub nel progetto hub. HubPerimeter deve consentire l'accesso in entrata dall'identità e dall'origine di rete dell'amministratore dello spoke per l'API NCC nei perimetri di servizio.
Regola di uscita 1: collegamento spoke e verifica della rete Quando un amministratore dello spoke propone uno spoke, la richiesta richiama il progetto spoke per completare il collegamento dello spoke all'hub e impostare lo stato dello spoke su PENDING_REVIEW. Nell'ambito della richiesta, l'API NCC verifica anche la rete VPC di backend utilizzando l'API Compute Engine. HubPerimeter deve consentire il traffico in uscita dall'amministratore dello spoke per le API NCC e Compute Engine.

Definizione del perimetro dell'hub

Gli esempi di regole in entrata e in uscita nelle sezioni seguenti si basano sulla seguente definizione del perimetro.

Per saperne di più sui perimetri di servizio, consulta Dettagli e configurazione del perimetro di servizio.

# Hub perimeter definition
name: accessPolicies/1234567890/servicePerimeters/HubPerimeter
status:
  resources:
  - projects/111111111111
  restrictedServices:
  - networkconnectivity.googleapis.com
  - compute.googleapis.com
title: HubPerimeter

Regole in entrata dell'hub

Questa sezione fornisce un esempio che implementa le regole in entrata per il perimetro hub come descritto in Regole per il perimetro hub.

Per informazioni dettagliate sulla sintassi delle regole, consulta il riferimento per le regole in entrata. Per applicare le regole, vedi Configurazione delle policy in entrata e in uscita.

echo """
# Rule 1: Allow the hub administrator to manage the hub in the hub project
# (if managing from outside HubPerimeter)
- ingressFrom:
    identities:
    # Specify the principal identifier for the hub administrator:
    - group:hub-admins@example.com
    # - user:hub-admin@example.com
    # - serviceAccount:hub-admin-sa@hub-project.iam.gserviceaccount.com
    sources:
    - accessLevel: accessPolicies/1234567890/accessLevels/HubAdminAccessLevel
    # Alternatively, specify a management project or VPC network if managing
    # from a VPC network outside the perimeter:
    # - resource: projects/MANAGEMENT_PROJECT_NUMBER
  ingressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    resources:
    - projects/111111111111

# Rule 2: Allow the inbound spoke proposal to initiate attachment to the hub
- ingressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
    sources:
    # Specify an access level defined in the hub organization's access policy if
    # the spoke administrator manages spokes from the Google Cloud console or
    # external networks:
    - accessLevel: accessPolicies/1234567890/accessLevels/SpokeAdminAccessLevel
    # Alternatively, specify the spoke project if the spoke administrator
    # manages from a VPC network in the spoke project:
    # - resource: projects/222222222222
  ingressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    resources:
    - projects/111111111111
""" > hub-ingress.yaml

Come best practice, definisci regole in entrata il più specifiche possibile:

  • identities: specifica solo l'identificatore dell'entità necessario per il tuo ambiente anziché tipi di identità generici:

    • Nella regola 1, questo esempio specifica un gruppo Google di amministratori dell'hub per l'amministrazione del team. In alternativa, puoi specificare un account utente o unaccount di serviziot individuale. Questa regola è obbligatoria solo se gestisci l'hub al di fuori di HubPerimeter.
    • Nella regola 2, questo esempio specifica un account di servizio amministratore spoke per una pipeline di deployment automatizzata. In alternativa, puoi specificare un gruppo Google per l'amministrazione del team o un account utente individuale.

    Per saperne di più, consulta Identità supportate per le regole in entrata e in uscita.

  • sources: Limita le origini a progetti o livelli di accesso noti:

    • Nella regola 1, questo esempio specifica un livello di accesso per gli amministratori hub dalla norma di accesso che gestisce HubPerimeter per autorizzare fonti esterne come workstation amministrative, Cloud Shell o la consoleGoogle Cloud . In alternativa, puoi consentire l'accesso da una rete VPC di gestione esterna al perimetro utilizzando l'attributo - resource: per specificare il progetto o la rete VPC. Per maggiori dettagli, vedi Consentire l'accesso dall'esterno di un perimetro e Accesso sensibile al contesto con regole in entrata.
    • Nella regola 2, questo esempio specifica un livello di accesso per gli amministratori spoke dalla policy di accesso che gestisce HubPerimeter per autorizzare origini esterne come workstation amministrative, Cloud Shell o la console Google Cloud . In alternativa, puoi consentire l'accesso da una rete VPC nel progetto spoke utilizzando l'attributo - resource: per specificare il numero del progetto spoke (ad esempio per una pipeline di deployment automatizzata).
  • operations: le limitazioni per networkconnectivity.googleapis.com vengono applicate a livello di servizio, richiedendo method: "*". Per questo servizio non sono disponibili metodi più granulari.

  • resources: specifica il numero esatto del progetto hub in resources. Evita i caratteri jolly (*).

Regola in uscita dell'hub

Questa sezione fornisce un esempio che implementa la regola di uscita per il perimetro dell'hub come descritto in Regole del perimetro dell'hub.

Per informazioni dettagliate sulla sintassi delle regole, consulta il riferimento per le regole in uscita.

echo """
# Rule 1: Allow the inbound spoke proposal to call back to the spoke project to
# complete linking the spoke to the hub, which includes verifying the backing
# VPC network
- egressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    - serviceName: compute.googleapis.com
      methodSelectors:
      - method: NetworksService.Get
    resources:
    - projects/222222222222
  egressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
""" > hub-egress.yaml

Come best practice, definisci regole in uscita il più specifiche possibile:

  • identities: specifica l'identificatore dell'entità per l'amministratore dello spoke (ad esempio un account di servizio, un gruppo o un account utente della pipeline di deployment). Quando un amministratore dello spoke propone uno spoke, HubPerimeter valuta l'uscita con l'identità dell'amministratore dello spoke per completare il collegamento dello spoke all'hub nel progetto spoke, il che include la verifica della rete VPC di backend.

    Per maggiori dettagli, vedi Identità supportate per le regole in entrata e in uscita.

  • operations: le limitazioni per networkconnectivity.googleapis.com vengono applicate a livello di servizio, richiedendo method: "*". Per compute.googleapis.com, specifica method: NetworksService.Get per concedere l'autorizzazione a verificare la rete VPC di backend durante il completamento del collegamento al progetto spoke.

  • resources: specifica il numero esatto del progetto spoke in resources. Evita i caratteri jolly (*).