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 i Controlli di servizio VPC per specificare le condizioni per consentire a intervalli di indirizzi IP specifici della rete VPC di accedere alle reti VPC e ai progetti protetti. Questa funzionalità consente di svolgere le seguenti attività:
Supportare le condizioni del livello di accesso base per consentire l'uso di intervalli di indirizzi IP interni delle reti VPC.
Permettere l'utilizzo delle condizioni del livello di accesso per le chiamate API in entrata o in uscita nel perimetro di servizio o al di fuori del relativo confine.
Questa funzionalità offre i seguenti vantaggi:
Puoi specificare condizioni nelle configurazioni dei Controlli di servizio VPC per consentire l'accesso da un indirizzo IP interno in una rete VPC.
I workflow che richiedono il passaggio delle chiamate API attraverso vari perimetri di servizio possono limitare l'accesso per consentire solo alcune subnet, anziché consentire l'intera rete VPC o il progetto.
Puoi configurare risorse diverse nel tuo ambiente on-premise in modo che possano accedere solo a risorse Google Cloud specifiche. Devi utilizzare l'intervallo di indirizzi IP della subnet associato a queste risorse on-premise e alla rete VPC della zona di destinazione come parte del livello di accesso.
La figura 1 mostra un esempio di configurazione che consente l'accesso a un servizio protetto specifico da un indirizzo IP interno autorizzato.
Limitazioni dell'utilizzo dell'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 sull'indirizzo IP interno perché ciò può causare comportamenti imprevisti.
Si applicano anche le limitazioni relative all'aggiunta di reti VPC ai perimetri di servizio.
Quando i Controlli di servizio VPC registrano un audit log con negazione delle policy, il nome della rete VPC come
__UNKNOWN__viene oscurato nell'audit log.Non sono supportate le reti VPC per le quali
SUBNET_MODEè impostato sucustom, ma che non hanno subnet. L'abilitazione dell'indirizzo IP interno richiede che una rete VPC contenga almeno una subnet.Puoi specificare solo 500 reti VPC in tutti i livelli di accesso all'interno della policy 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, i Controlli di servizio VPC non attivano automaticamente gli indirizzi IP interni nella rete VPC ricreata. Per superare questa limitazione, 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 e con una regola in uscita, ti consigliamo di non aggiungere altre condizioni come il tipo di dispositivo o l'identità dell'utente al livello di accesso.
L'indirizzo IP interno non corrisponde ai livelli di accesso che fanno riferimento a 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
vpcNetworkSourcesdella condizione di livello di accesso di base.Nome della rete VPC. Devi definire il nome della rete VPC 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 nel campo
VpcSubNetworkdiVpcNetworkSourcedeve 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 le condizioni di autorizzazione in
IngressSourceoEgressSource.
Prendendo uno scenario di esempio, le sezioni seguenti spiegano come eseguire i passaggi per attivare un indirizzo IP interno.
Esempio di utilizzo di un indirizzo IP interno per configurare l'accesso alla subnet
Nel seguente esempio, hai due progetti:
Progetto host di rete:
Project1ospita una rete VPC:default. Le due VM inProject1(VM1eVM2) utilizzano questa rete come interfaccia di rete per inviare il traffico.Progetto Cloud Storage:
Project2contiene un bucket Cloud Storage.
Puoi utilizzare i Controlli di servizio VPC per consentire solo a VM1 da Project1 di accedere al bucket Cloud Storage in Project2 utilizzando un indirizzo IP interno.
Per configurare questo scenario, devi seguire questi passaggi:
Crea un perimetro di servizio
sp1intorno aProject1e un altro perimetro di serviziosp2intorno aProject2.Poi, puoi aggiungere regole in entrata e in uscita ai perimetri di servizio per consentire solo alla subnet di
VM1di accedere al bucket Cloud Storage.
Il seguente diagramma mostra la configurazione descritta in questo esempio.
Configura una policy di accesso a livello di organizzazione
Assicurati di avere una policy di accesso a livello di organizzazione. Se non hai una policy di accesso a questo livello, esegui questo comando gcloud CLI:
gcloud access-context-manager policies create \ --organization=ORGANIZATION_ID --title=POLICY_TITLESostituisci quanto segue:
ORGANIZATION_ID: l'ID numerico della tua organizzazione.
POLICY_TITLE: un titolo leggibile per la policy di accesso.
Per ulteriori informazioni, scopri come creare una policy di accesso a livello di organizzazione.
Per impostarla come policy di accesso predefinita, esegui questo comando gcloud CLI:
gcloud config set access_context_manager/policy POLICY_NAME
Sostituisci POLICY_NAME con il nome numerico della policy di accesso.
Per saperne di più, scopri come impostare la policy di accesso predefinita 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
sp1intorno aProject1, esegui questo comando gcloud CLI:gcloud access-context-manager perimeters create sp1 --title="sp1" --resources=PROJECT_NUMBER \ --restricted-services=storage.googleapis.com --policy=POLICY_NAMESostituisci quanto segue:
PROJECT_NUMBER: il numero del progetto host di rete. Ad esempio,
projects/111.POLICY_NAME: Il nome numerico della policy di accesso. Ad esempio,
1234567890.
Per creare un perimetro
sp2intorno aProject2che limita 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_NAMESostituisci quanto segue:
PROJECT_NUMBER: il numero del progetto Cloud Storage. Ad esempio,
projects/222.POLICY_NAME: Il nome numerico della policy di accesso. Ad esempio,
1234567890.
Per ulteriori informazioni sulla creazione di un perimetro di servizio, scopri come 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 definisca le 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.yamlSostituisci 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 il nome della rete VPC e i formati dell'intervallo di indirizzi IP spiegati in precedenza.
Per ulteriori informazioni sul file YAML, scopri di più sui 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_NAMESostituisci 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 saperne di più, scopri come creare di un livello di accesso di base.
Configura una policy in entrata per consentire il traffico API in entrata al bucket Cloud Storage
Per consentire l'accesso solo da VM1, configura una policy in entrata nel perimetro sp2 per consentire al traffico dell'API Cloud Storage di entrare nel perimetro.
Crea un file YAML che definisca la policy 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.yamlSostituisci quanto segue:
POLICY_NAME: Il nome numerico della policy di accesso. Ad esempio,
1234567890.ACCESS_LEVEL_NAME: il nome del livello di accesso. Ad esempio,
allowvm1.
Per ulteriori informazioni sul file YAML, consulta il riferimento alle regole in entrata.
Per aggiornare le policy 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 la policy in entrata. Ad esempio,
ingress.yaml.
Per ulteriori informazioni, scopri come aggiornare le policy in entrata e in uscita per un perimetro di servizio.
Configura una policy in uscita per consentire il traffico API in uscita verso il bucket Cloud Storage
Inoltre, configura una policy in uscita nel perimetro sp1 per consentire al traffico dell'API Cloud Storage di uscire dal perimetro.
Crea un file YAML che definisca la policy in uscita. Assicurati di impostare il campo
sourceRestrictionsuSOURCE_RESTRICTION_ENABLEDnel 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.yamlSostituisci quanto segue:
POLICY_NAME: Il nome numerico della policy di accesso. Ad esempio,
1234567890.ACCESS_LEVEL_NAME: il nome del livello di accesso. Ad esempio,
allowvm1.
Per ulteriori informazioni sul file YAML, consulta il riferimento alle regole in uscita.
Per aggiornare la policy 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 la policy in uscita. Ad esempio,
egress.yaml.
Per ulteriori informazioni, scopri come aggiornare le policy in entrata e in uscita per un perimetro di servizio.
Dopo aver configurato le policy in entrata e in uscita, il bucket Cloud Storage è accessibile da VM1, mentre non è accessibile da VM2.
Suggerimenti
Quando attivi un indirizzo IP interno, ti consigliamo di disattivare l'inoltro IP per le VM. L'inoltro IP consente a una VM all'interno della stessa rete VPC di inviare richieste utilizzando un indirizzo IP diverso, con il rischio di spoofing dell'indirizzo IP.
Se vuoi attivare l'inoltro IP, ti consigliamo di utilizzare le seguenti configurazioni per ridurre il rischio di spoofing dell'indirizzo IP:
Utilizza il vincolo delle policy dell'organizzazione (
constraints/compute.vmCanIpForward) per assicurarti che solo le VM autorizzate possano attivare l'inoltro IP.Restrict VM IP ForwardingUtilizza le origini per le regole firewall in modo da limitare gli indirizzi IP che possono comunicare con le VM per cui è abilitato l'inoltro IP. Completa le seguenti attività:
Configura regole firewall in entrata per consentire il traffico in entrata solo da un intervallo di indirizzi IP specifico alle VM in cui è abilitato il forwarding IP.
Configura regole firewall in uscita per consentire il traffico in uscita solo a un intervallo di indirizzi IP specifico dalle VM in cui è abilitato il forwarding IP.