Questa pagina descrive come consentire il traffico dagli indirizzi IP interni in una 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 a specifici intervalli di indirizzi IP della rete VPC di accedere ai progetti protetti e alle reti VPC. Questa funzionalità ti consente di:
Supporta condizioni di livello di accesso di base per consentire intervalli di indirizzi IP interni delle reti VPC.
Consenti l'utilizzo di queste condizioni del livello di accesso per le chiamate API in entrata o in 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 consentire l'accesso da un indirizzo IP interno in una rete VPC.
Workflows che richiedono il passaggio di chiamate API attraverso più perimetri di servizio possono limitare l'accesso in modo da consentire solo poche subnet, anziché consentire l'intera rete o progetto VPC.
Puoi configurare risorse diverse da quelle on-premise per poter accedere solo a risorse Google Cloud specifiche. Devi utilizzare l'intervallo di indirizzi IP della subnet associato a queste risorse on-premise e la rete VPC della zona di destinazione come parte del livello di accesso.
La Figura 1 mostra una configurazione di esempio che consente l'accesso a un servizio protetto specifico 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 le seguenti 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 condizioni basate sugli indirizzi IP interni perché ciò può causare comportamenti imprevisti.
Si applicano anche le limitazioni relative all'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.Le reti VPC per le quali
SUBNET_MODE
è impostata sucustom
, ma non hanno subnet, non sono supportate. L'abilitazione dell'indirizzo IP interno richiede che una rete VPC contenga almeno una subnet.Puoi specificare solo 500 reti VPC per tutti i livelli di accesso all'interno del tuo criterio di accesso.
Quando elimini una rete VPC a cui fa riferimento un livello di accesso o un perimetro di servizio e poi ricrei un'altra rete VPC con lo stesso nome, Controlli di servizio VPC non abilita automaticamente gli indirizzi IP interni sulla rete VPC ricreata. Per superare questo limite, crea una rete VPC con un nome diverso e aggiungila al perimetro.
Non puoi utilizzare un indirizzo IP interno per consentire l'accesso dai servizi gestiti da Google. 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 al livello di accesso altre condizioni, come il tipo di dispositivo e l'identità dell'utente.
L'indirizzo IP interno non corrisponde ai livelli di accesso che fanno riferimento alle regioni geografiche.
Utilizza l'indirizzo IP interno nei livelli di accesso
Specifica il nome della rete VPC e l'intervallo di indirizzi IP nel campo
vpcNetworkSources
della condizione del livello di accesso di base.Nome rete VPC. Devi definire il nome della rete VPC nel formato seguente:
//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 nel campo
VpcSubNetwork
diVpcNetworkSource
deve seguire la specifica della subnet IP del blocco CIDR. Puoi utilizzare qualsiasi intervallo di indirizzi IP che sia un intervallo IPv4 valido per le subnet.
Utilizza questo livello di accesso con condizioni di autorizzazione in
IngressSource
oEgressSource
.
Utilizzando uno scenario di esempio, le sezioni seguenti spiegano come eseguire questi passaggi 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:
Progetto host di rete:
Project1
ospita una rete VPC:default
. Le due VM inProject1
,VM1
eVM2
utilizzano questa rete come interfaccia di rete per inviare il traffico.Progetto Cloud Storage:
Project2
contiene un bucket Cloud Storage.
Puoi utilizzare Controlli di servizio VPC per consentire solo a VM1
di Project1
di accedere al bucket Cloud Storage in Project2
utilizzando un indirizzo IP interno.
Per eseguire questa configurazione, devi seguire questi passaggi:
Creerai un perimetro di servizio
sp1
attorno aProject1
e un altro perimetro di serviziosp2
intorno aProject2
.Quindi, puoi aggiungere regole in entrata e in uscita ai perimetri di servizio per consentire 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
Assicurati di disporre di un criterio di accesso a livello di organizzazione. Se non hai un criterio di accesso a questo livello, esegui questo comando dell'interfaccia a riga di 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 ulteriori informazioni, consulta Creare un criterio di accesso a livello di organizzazione.
Per impostare questo criterio come criterio di accesso predefinito, esegui questo comando gcloud CLI:
gcloud config set access_context_manager/policy POLICY_NAME
Sostituisci POLICY_NAME con il nome numerico del criterio di accesso.
Per maggiori informazioni, consulta la sezione 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
Per creare un perimetro
sp1
attorno aProject1
, esegui questo comando dell'interfaccia a riga di comando gcloud: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
.
Per creare un perimetro
sp2
attorno aProject2
che limiti 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. Ad esempio,
projects/222
.POLICY_NAME: il nome numerico del criterio di accesso. Ad esempio,
1234567890
.
Per ulteriori informazioni sulla creazione di un perimetro di servizio, consulta Creare un perimetro di servizio.
Dopo aver creato questi due perimetri, il bucket Cloud Storage non è 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
.
Crea un file YAML che definisce le tue condizioni di accesso. L'esempio seguente 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
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 spiegati in precedenza.
Per ulteriori informazioni sul file YAML, consulta File YAML
basic-level-spec
.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 pagina Creazione di un livello di accesso di base.
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 nel perimetro sp2
per consentire al traffico dell'API Cloud Storage di entrare nel perimetro.
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 maggiori informazioni sul file YAML, consulta Riferimento sulle regole Ingress.
Per aggiornare il criterio in entrata per un perimetro di servizio, esegui questo 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 il 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 al traffico dell'API Cloud Storage di uscire dal perimetro.
Creare un file YAML che definisce il criterio in uscita. Assicurati di impostare il campo
sourceRestriction
suSOURCE_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 Riferimento alle regole in uscita.
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 il 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 sarà accessibile da VM1
, mentre il bucket Cloud Storage non è accessibile da VM2
.
Suggerimenti
Quando abiliti un indirizzo IP interno, ti consigliamo di disabilitare il forwarding IP per le VM. L'IP forwarding consente a una VM nella stessa rete VPC di inviare richieste utilizzando un indirizzo IP diverso, con il rischio di spoofing degli indirizzi IP.
Se vuoi attivare l'IP forwarding, ti consigliamo di utilizzare le seguenti configurazioni per ridurre il rischio di spoofing degli indirizzi IP:
Utilizza il vincolo dei criteri dell'organizzazione
Restrict VM IP Forwarding
(constraints/compute.vmCanIpForward
) per assicurarti che solo le VM autorizzate possano abilitare l'IP forwarding.Utilizza le origini per le regole firewall per limitare gli indirizzi IP che possono comunicare con le VM per cui è abilitato l'IP forwarding. Completa le seguenti attività:
Configura le regole firewall in entrata per consentire il traffico in entrata solo da un intervallo di indirizzi IP specifico alle VM su cui è abilitato l'IP forwarding.
Configura le regole firewall in uscita per consentire il traffico in uscita solo verso un intervallo di indirizzi IP specifico dalle VM in cui è abilitato l'IP forwarding.