Consenti l'accesso alle risorse protette da un indirizzo IP interno

In questa pagina viene descritto come consentire il traffico da indirizzi IP interni in un dalla rete VPC ai perimetri di servizio utilizzando le regole in entrata e in uscita.

Panoramica

Puoi utilizzare Controlli di servizio VPC per specificare le condizioni in modo da consentire di indirizzi IP della rete VPC per accedere progetti e reti VPC. Questa funzionalità ti consente di: attività:

  • Assistenza per l'accesso di base di livello a è consentito l'uso di intervalli di indirizzi IP interni delle reti VPC.

  • Consenti l'utilizzo di queste condizioni del livello di accesso per l'API in entrata o in uscita in entrata o uscita dal confine del perimetro di servizio.

Questa funzionalità offre i seguenti vantaggi:

  • Puoi specificare le condizioni nelle configurazioni dei Controlli di servizio VPC per da un indirizzo IP interno in una rete VPC.

  • Workflows che richiedono il passaggio di chiamate API attraverso più perimetri di servizio puoi limitare l'accesso per consentire solo alcune subnet, anziché consentire dell'intera rete VPC o del progetto.

  • Puoi configurare risorse diverse da quelle on-premise per poter solo a specifiche risorse Google Cloud. Devi utilizzare l'indirizzo IP della subnet l'intervallo di indirizzi associato a queste risorse on-premise e la zona di destinazione rete VPC come parte del livello di accesso.

La figura 1 mostra una configurazione di esempio che consente l'accesso a una servizio da un indirizzo IP interno autorizzato.

Limitazioni dell'utilizzo di un indirizzo IP interno

Quando utilizzi un indirizzo IP interno nei Controlli di servizio VPC, si applicano limitazioni:

  • Puoi abilitare un indirizzo IP interno solo con livelli di accesso di base e non con livelli di accesso personalizzati.

  • Ti consigliamo di non negare i livelli di accesso con indirizzo IP interno in base alle condizioni aziendali, perché può causare comportamenti imprevisti.

  • Le limitazioni per l'aggiunta di reti VPC ai perimetri di servizio.

  • Quando Controlli di servizio VPC registra un audit log negato per un criterio, oscura il nome della rete VPC come __UNKNOWN__ nell'audit log.

  • Reti VPC per le quali SUBNET_MODE è impostato su custom ma non hanno subnet, non sono supportati. Abilitazione dell'indirizzo IP interno in corso... richiede che una rete VPC contenga almeno una subnet.

  • Puoi specificare solo 500 VPC reti in tutte ai livelli di accesso previsti nel tuo criterio di accesso.

  • Quando elimini una rete VPC a cui fa riferimento un accesso o un perimetro di servizio, quindi ricrea un altro VPC con lo stesso nome, i Controlli di servizio VPC non abilitano gli indirizzi IP interni sulla rete VPC ricreata. A Supera questo limite, crea una rete VPC con un nome diverso e aggiungilo al perimetro.

  • Non puoi utilizzare un indirizzo IP interno per consentire l'accesso dalla rete gestita da Google i servizi di machine learning. ad esempio Cloud SQL.

  • Se utilizzi un livello di accesso con condizioni basate sull'indirizzo IP interno con una regola in uscita, ti consigliamo di non aggiungere altre condizioni come il tipo di dispositivo e l'identità dell'utente, fino al livello di accesso.

  • L'indirizzo IP interno non corrisponde ai livelli di accesso che fanno riferimento all'area geografica regioni.

Utilizza l'indirizzo IP interno nei livelli di accesso

  1. Specifica il nome della rete VPC e l'intervallo di indirizzi IP nel Campo vpcNetworkSources del livello di accesso di base dell'oggetto in questione.

    • Nome rete VPC. Devi definire il VPC nome della rete nel seguente formato:

      //compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_NAME
      

      Ad esempio: //compute.googleapis.com/projects/my-project/global/networks/my-vpc.

    • Intervallo di indirizzi IP. L'intervallo di indirizzi IP specificato in VpcSubNetwork campo di VpcNetworkSource deve seguire la specifica della subnet IP a blocchi CIDR. Puoi utilizzare qualsiasi indirizzo IP che sia un intervallo IPv4 valido per le subnet.

  2. Utilizza questo livello di accesso con le condizioni di autorizzazione in IngressSource o EgressSource.

Utilizzando uno scenario di esempio, le sezioni seguenti spiegano come eseguire queste operazioni. per abilitare un indirizzo IP interno.

Esempio di utilizzo di un indirizzo IP interno per configurare l'accesso alla subnet

Nell'esempio seguente sono presenti due progetti:

  1. Progetto host di rete: Project1 ospita una rete VPC: default. Le due VM in Project1, VM1 e VM2 utilizzano questa rete come a riga di comando per inviare il traffico.

  2. Progetto Cloud Storage: Project2 contiene un bucket Cloud Storage.

Puoi utilizzare Controlli di servizio VPC per consentire solo a VM1 di Project1 di accedere Bucket Cloud Storage in Project2 utilizzando un indirizzo IP interno. Per eseguire questa configurazione, devi seguire questi passaggi:

  1. Crei un perimetro di servizio sp1 attorno a Project1 e a un altro servizio perimetro sp2 intorno a Project2.

  2. Quindi, puoi aggiungere regole di traffico in entrata e in uscita ai perimetri di servizio Consenti solo alla subnet di VM1 di accedere al bucket Cloud Storage.

Il seguente diagramma mostra la configurazione descritta in questo esempio.

Configurare un criterio di accesso a livello di organizzazione

  1. Assicurati di disporre di un criterio di accesso a livello di organizzazione. Se non disponi di un criterio di accesso a questo livello, esegui questo Comando gcloud CLI:

    gcloud access-context-manager policies create \
        --organization=ORGANIZATION_ID --title=POLICY_TITLE
    

    Sostituisci quanto segue:

    • ORGANIZATION_ID: l'ID numerico della tua organizzazione.

    • POLICY_TITLE: un titolo leggibile per il criterio di accesso.

    Per saperne di più, consulta Creare un accesso a livello di organizzazione .

  2. Procurati il nome del tuo accesso .

  3. Per impostare questo criterio come criterio di accesso predefinito, esegui questo criterio Comando gcloud CLI:

    gcloud config set access_context_manager/policy POLICY_NAME
    

    Sostituisci POLICY_NAME con il nome numerico del criterio di accesso.

    Per ulteriori informazioni, vedi Impostare il criterio di accesso predefinito per lo strumento a riga di comando gcloud.

Crea perimetri per proteggere il progetto host di rete e il progetto Cloud Storage

  1. Per creare un perimetro sp1 attorno a Project1, esegui questo comando: Comando gcloud CLI:

    gcloud access-context-manager perimeters create sp1 --title="sp1" --resources=PROJECT_NUMBER \
        --restricted-services=storage.googleapis.com --policy=POLICY_NAME
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero del progetto host di rete. Ad esempio, projects/111.

    • POLICY_NAME: il nome numerico del criterio di accesso. Ad esempio, 1234567890.

  2. Per creare un perimetro sp2 intorno a Project2 che limiti Per il servizio Cloud Storage, esegui questo comando gcloud CLI:

    gcloud access-context-manager perimeters create sp2 --title="sp2" --resources=PROJECT_NUMBER \
        --restricted-services=storage.googleapis.com --policy=POLICY_NAME
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero del progetto Cloud Storage progetto. Ad esempio, projects/222.

    • POLICY_NAME: il nome numerico del criterio di accesso. Ad esempio, 1234567890.

Per saperne di più sulla creazione di un perimetro di servizio, consulta Creare un perimetro di servizio perimetrale.

Dopo aver creato questi due perimetri, il bucket Cloud Storage non sarà più accessibile dalle due VM.

Crea un livello di accesso con una condizione di accesso basata sull'indirizzo IP interno

Crea un livello di accesso che consenta solo il traffico proveniente dalla subnet di VM1.

  1. Crea un file YAML che definisce le tue condizioni di accesso. Il seguente esempio mostra solo gli attributi necessari per abilitare un indirizzo IP interno:

    echo """
    - vpcNetworkSources:
      - vpcSubnetwork:
          network: VPC_NETWORK_NAME
          vpcIpSubnetworks:
          - IP_RANGE
    
    """ > level.yaml
    

    Sostituisci quanto segue:

    • VPC_NETWORK_NAME: il nome della rete VPC in cui si trova il VM1. Ad esempio: //compute.googleapis.com/projects/Project1/global/networks/default.

    • IP_RANGE: l'intervallo di indirizzi IP della subnet. Ad esempio: 10.10.0.0/24.

    Utilizza i formati del nome della rete VPC e dell'intervallo di indirizzi IP come spiegato in precedenza.

    Per ulteriori informazioni sul file YAML, consulta basic-level-spec YAML un file YAML.

  2. Per creare un livello di accesso utilizzando il file YAML, esegui questo Comando gcloud CLI:

    gcloud access-context-manager levels create LEVEL_NAME \
        --title="TITLE" --basic-level-spec=FILE_NAME
    

    Sostituisci quanto segue:

    • LEVEL_NAME: un nome univoco per il livello di accesso. Ad esempio: allowvm1.

    • TITLE: un titolo breve e leggibile per il livello di accesso. Ad esempio, allowvm1.

    • FILE_NAME: il file YAML che definisce le condizioni di accesso per il livello di accesso. Ad esempio, level.yaml.

    Per ulteriori informazioni, consulta la sezione Creazione di un accesso di base livello.

Configura un criterio in entrata per consentire il traffico API in entrata nel bucket Cloud Storage

Per consentire l'accesso solo da VM1, configura un criterio in entrata in sp2 per consentire al traffico dell'API Cloud Storage di entrare nel perimetro.

  1. Crea un file YAML che definisce il tuo criterio in entrata.

    echo """
    - ingressFrom:
        identityType: ANY_IDENTITY
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      ingressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - '*'
    
    """ > ingress.yaml
    

    Sostituisci quanto segue:

    • POLICY_NAME: il nome numerico del criterio di accesso. Ad esempio: 1234567890.

    • ACCESS_LEVEL_NAME: il nome del tuo livello di accesso. Ad esempio, allowvm1.

    Per saperne di più sul file YAML, consulta Regole in entrata riferimento.

  2. Per aggiornare il criterio in entrata per un perimetro di servizio, esegui questo comando: Comando gcloud CLI:

    gcloud access-context-manager perimeters update PERIMETER --set-ingress-policies=FILE_NAME
    

    Sostituisci quanto segue:

    • PERIMETER: il nome del perimetro di servizio che protegge progetto Cloud Storage. Ad esempio, sp2.

    • FILE_NAME: il file YAML che definisce il tuo criterio in entrata. Ad esempio, ingress.yaml.

    Per ulteriori informazioni, consulta Aggiornamento dei criteri in entrata e in uscita per un perimetro di servizio.

Configura un criterio in uscita per consentire il traffico API in uscita verso il bucket Cloud Storage

Inoltre, configura un criterio in uscita nel perimetro sp1 per consentire Traffico dell'API Cloud Storage per uscire dal perimetro.

  1. Creare un file YAML che definisce il criterio in uscita. Assicurati di aver impostato il campo sourceRestriction come SOURCE_RESTRICTION_ENABLED nel file YAML .

    echo """
    - egressFrom:
        identityType: ANY_IDENTITY
        sourceRestriction: SOURCE_RESTRICTION_ENABLED
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      egressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - '*'
    
    """ > egress.yaml
    

    Sostituisci quanto segue:

    • POLICY_NAME: il nome numerico del criterio di accesso. Ad esempio: 1234567890.

    • ACCESS_LEVEL_NAME: il nome del tuo livello di accesso. Ad esempio, allowvm1.

    Per ulteriori informazioni sul file YAML, consulta Regole in uscita riferimento.

  2. Per aggiornare il criterio in uscita per un perimetro di servizio, esegui questo comando: :

    gcloud access-context-manager perimeters update PERIMETER --set-egress-policies=FILE_NAME
    

    Sostituisci quanto segue:

    • PERIMETER: il nome del perimetro di servizio che protegge progetto host di rete. Ad esempio, sp1.

    • FILE_NAME: il file YAML che definisce il criterio in uscita. Ad esempio, egress.yaml.

    Per ulteriori informazioni, consulta Aggiornamento dei criteri in entrata e in uscita per un perimetro di servizio.

Dopo aver configurato i criteri di traffico in entrata e in uscita, il bucket Cloud Storage è accessibile da VM1, mentre il bucket Cloud Storage accessibile dal VM2.

Consigli

  • Quando abiliti un indirizzo IP interno, ti consigliamo di disabilitare l'impostazione il forwarding per le VM. IP forwarding consente a una VM nella stessa rete VPC di inviare richieste utilizzare un indirizzo IP diverso, con il rischio di spoofing dell'indirizzo IP.

  • Se vuoi abilitare l'IP forwarding, ti consigliamo di utilizzare il metodo le seguenti configurazioni per ridurre il rischio di spoofing degli indirizzi IP:

    • Utilizza il criterio dell'organizzazione Restrict VM IP Forwarding vincolo (constraints/compute.vmCanIpForward) per garantire che solo le VM autorizzate possano attivare l'IP forwarding.

    • Utilizza le origini per le regole firewall per limitare gli indirizzi IP che possono comunicare con le VM che dispongono di indirizzi IP l'inoltro automatico abilitato. Completa le seguenti attività:

      • Configura regole firewall in entrata per consentire il traffico in entrata solo da una specifica Intervallo di indirizzi IP per le VM in cui è abilitato l'IP forwarding.

      • Configura le regole firewall in uscita per consentire il traffico in uscita solo verso una destinazione specifica Intervallo di indirizzi IP dalle VM in cui è abilitato l'IP forwarding.