Scenari di limitazioni basate sul contesto di esempio
Con le restrizioni basate sul contesto, i proprietari degli account e gli amministratori possono definire e applicare le restrizioni di accesso alle risorse di IBM Cloud®, in base al contesto delle richieste di accesso. L'accesso alle risorse di IBM Cloud Kubernetes Service può essere controllato con restrizioni basate sul contesto e con politiche di gestione dell'identità e dell'accesso. Per ulteriori informazioni, vedere Protezione delle risorse di IBM Cloud Kubernetes Service con restrizioni basate sul contesto.
Le applicazioni in esecuzione su cluster IBM Cloud Kubernetes Service, ad esempio i server web esposti da Kubernetes LoadBalancer,, non sono limitate dalle regole CBR.
Comprensione dello scenario
In questo scenario di esempio, utilizzi le restrizioni basate sul contesto per limitare il traffico al tuo cluster consentendo solo a un singolo indirizzo IP di connettersi alle API di cluster sulla rete pubblica pur consentendo
tutto il traffico privato.
Nei seguenti passi, si inizia creando una zona di rete, o allowlist, che include un singolo indirizzo IP. Quindi, crei una regola di limitazioni basata sul contesto per il tuo cluster che consente l'accesso a tutte le reti private e consente l'elenco della zona di rete che contiene il singolo indirizzo IP. Quando si crea la regola, la si associa alla zona di rete che contiene il singolo indirizzo IP.
Prerequisiti
Prima di iniziare questa esercitazione, accertarsi di aver creato o installato le risorse e gli strumenti seguenti.
- Un account IBM Cloud. Per ulteriori informazioni, vedi Creazione di un account.
- Gli strumenti CLI inclusi la CLI IBM Cloud, il plug-in CLI del servizio Containers e il plug-in CBR. Per ulteriori informazioni, vedi Introduzione alla CLI IBM Cloud.
- Crea un cluster.
- Esamina la documentazione Quali sono le restrizioni basate sul contesto per comprendere le regole e le zone di rete.
- Esamina la documentazione Protezione delle risorse del cluster con restrizioni basate sul contesto per comprendere come puoi sfruttare CBR per le tue risorse IBM Cloud Kubernetes Service.
- Esamina le limitazioni per utilizzare CBR con IBM Cloud Kubernetes Service.
Creazione della tua zona di rete
-
Esegui il seguente comando di esempio per creare una rete che include solo un IP client che vuoi utilizzare.
ibmcloud cbr zone-create --addresses 129.XX.XX.XX --description "Allow only client IP" --name allow-client-ip -
Verificare che la zona di rete sia stata creata.
ibmcloud cbr zones
Creazione della regola CBR
-
Dopo aver creato la zona di rete (allowlist), creare una regola CBR e aggiungere la zona di rete creata nel passo precedente. Il seguente esempio crea una regola che utilizza il tipo API
cluster. SostituisciNETWORK-ZONE-IDcon l'ID della zona di reteallow-client-ipche hai creato nel passo 1.ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "privateAccess=allowAll, publicAccess=oneIP" --service-name containers-kubernetes --service-instance CLUSTER-ID --context-attributes endpointType=private --context-attributes endpointType=public,networkZoneId=NETWORK-ZONE-IDInformazioni sulle opzioni di comando.
--api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster- Imposta l'API
crn:v1:bluemix:public:containers-kubernetes::::api-type:clusterper consentire solo alle risorse nella zona di rete che hai creato in precedenza di accedere solo alle APIcluster, che comprendono le API per vari comandikubectl. --service-instance CLUSTER-ID- Applica la regola a un singolo cluster in modo tale che solo le risorse nella zona di rete che hai creato in precedenza possano accedere solo a
CLUSTER-ID. --context-attributes endpointType=private- Impostare l'attributo di contesto
endpointType=privatesenza associare una zona di rete consente tutto il traffico privato al cluster. --context-attributes endpointType=public,networkZoneId=all-client-ip- Imposta l'attributo di contesto
endpointType=publice associa ilnetworkZoneId=allow-client-ipche hai creato in precedenza per consentire solo alle risorse nella zonaallow-client-ipdi accedere al cluster sulla rete pubblica.
-
Verificare che la regola sia stata creata.
ibmcloud cbr rules
Verifica delle limitazioni basate sul contesto
Per verificare la configurazione delle restrizioni basate sul contesto, puoi provare a richiamare le API del cluster per il tuo cluster, ad esempio elencando i pod, sulla rete pubblica da un indirizzo IP diverso dal singolo indirizzo IP che hai consentito nella tua zona di rete. Con questa configurazione, è consentita tutta la connettività privata, mentre solo il singolo indirizzo IP nella tua zona di rete può connettersi alle API del cluster sulla rete pubblica.
Scenari aggiuntivi
Ora che hai creato una regola e una zona di rete CBR semplice, rivedi i seguenti esempi più avanzati per controllare ulteriormente l'accesso alle tue risorse IBM Cloud Kubernetes Service.
Consentire a diversi IP di accedere agli endpoint del servizio pubblico e privato
In questo scenario, consenti a diversi indirizzi IP o CIDR di accedere ai tuoi cluster IBM Cloud Kubernetes Service creando zone di rete separate per ogni indirizzo IP. Quindi, crei una regola che consente a ciascuna zona di rete di accedere agli endpoint di servizio pubblici o privati.
-
Crea una zona di rete per un indirizzo IP pubblico o CIDR e un altro per un indirizzo IP privato o CIDR che vuoi consentire per accedere ai tuoi cluster IBM Cloud Kubernetes Service.
Comandi di esempio per creare zone di rete separate denominate
public-IP-zoneeprivate-IP-zone. In questo esempio, ogni zona contiene più indirizzi IP o CIDR, separati da una virgola, a cui si desidera consentire l'accesso ai cluster.ibmcloud cbr zone-create --addresses 1.2.3.4,12.12.12.0/24 --description "Allowed Public IP Addresses Zone" --name "public-ip-zone"ibmcloud cbr zone-create --addresses 10.20.20.20,10.10.10.0/24 --description "Allowed Private IP Addresses Zone" --name "private-ip-zone" -
Ottieni gli ID delle zone
private-ip-zoneepublic-ip-zoneche hai creato nel passo precedente.ibmcloud cbr zones -
Crea una regola che consente a
private-ip-zonedi connettersi all'endpoint di servizio privato del cluster e che consente anche apublic-ip-zonedi connettersi solo all'endpoint di servizio pubblico del cluster. Questa regola si applica al cluster specificato con l'opzione--service-instance. Se vuoi applicare la regola a tutti i cluster nel tuo account, non specificare un cluster.ibmcloud cbr rule-create --context-attributes "endpointType=public,networkZoneId=PUBLIC-IP-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-IP-ZONE-ID" --description "Separate private and public IPs for cluster and management rule" --service-name containers-kubernetes --service-instance CLUSTER-ID
Consentire a IP diversi di accedere a tipi di API differenti sugli endpoint del servizio pubblico e privato
Analogamente allo scenario precedente, in questo scenario si consente a diversi indirizzi IP di accedere all'endpoint del servizio pubblico o privato per i cluster IBM Cloud Kubernetes Service. Tuttavia, in questo scenario, l'accesso è ulteriormente
limitato da specifici tipi di API per le API cluster e management. Per ulteriori informazioni sui tipi di API, vedi Protezione di API specifiche.
-
Creare quattro zone di rete, una per ogni indirizzo IP che si desidera consentire per accedere alle API
clusterpubbliche o private o alle APImanagementpubbliche o private. Nota che puoi includere più indirizzi IP o CIDR, separati da una virgola, a cui vuoi consentire l'accesso ai tuoi cluster.ibmcloud cbr zone-create --addresses 1.2.3.4,12.12.12.0/24 --description "Allowed Public IP Addresses for IKS and ROKS APIs" --name "public-mgmt-zone"ibmcloud cbr zone-create --addresses 10.20.20.20,10.10.10.0/24 --description "Allowed Private IP Addresses IKS and ROKS APIs" --name "private-mgmt-zone"ibmcloud cbr zone-create --addresses 11.11.11.0/24 --description "Allowed Public IP Addresses for cluster apiserver" --name "public-cluster-zone"ibmcloud cbr zone-create --addresses 10.30.30.30 --description "Allowed Private IP Addresses for cluster apiserver" --name "private-cluster-zone" -
Ottieni gli ID delle zone che hai creato nel passo precedente.
ibmcloud cbr zonesOutput di esempio
OK id name address_count c14c0839c13d8aa0afa8383e2be2e124 public-mgmt-zone 2 f9676ca6ef37685315fa254b89d73159 public-cluster-zone 1 c14c0839c13d8aa0afa8383e2be2e843 private-cluster-zone 1 b53353de929de39ac2381f9b4cde8507 private-mgmt-zone 2 -
Crea una regola che protegge l'accesso alle API
clusteremanagementpubbliche e private utilizzando le zone che hai creato in precedenza.ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:management --context-attributes "endpointType=public,networkZoneId=PUBLIC-MGMT-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-MGMT-ZONE-ID" --description "Separate private and public IPs for the management APIs" --service-name containers-kubernetesibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --context-attributes "endpointType=public,networkZoneId=PUBLIC-CLUSTER-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-CLUSTER-ZONE-ID" --description "Separate private and public IPs for cluster APIs" --service-name containers-kubernetes