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.

Creazione della tua zona di rete

Accedi al tuo account. Se applicabile, specifica il gruppo di risorse appropriato. Imposta il contesto per il tuo cluster.

  1. 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
    
  2. Verificare che la zona di rete sia stata creata.

    ibmcloud cbr zones
    

Creazione della regola CBR

  1. 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. Sostituisci NETWORK-ZONE-ID con l'ID della zona di rete allow-client-ip che 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-ID
    

    Informazioni 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:cluster per consentire solo alle risorse nella zona di rete che hai creato in precedenza di accedere solo alle API cluster, che comprendono le API per vari comandi kubectl.
    --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=private senza 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=public e associa il networkZoneId=allow-client-ip che hai creato in precedenza per consentire solo alle risorse nella zona allow-client-ip di accedere al cluster sulla rete pubblica.
  2. 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.

  1. 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-zone e private-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"
    
  2. Ottieni gli ID delle zone private-ip-zone e public-ip-zone che hai creato nel passo precedente.

    ibmcloud cbr zones
    
  3. Crea una regola che consente a private-ip-zone di connettersi all'endpoint di servizio privato del cluster e che consente anche a public-ip-zone di 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.

  1. Creare quattro zone di rete, una per ogni indirizzo IP che si desidera consentire per accedere alle API cluster pubbliche o private o alle API management pubbliche 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"
    
  2. Ottieni gli ID delle zone che hai creato nel passo precedente.

    ibmcloud cbr zones
    

    Output 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
    
  3. Crea una regola che protegge l'accesso alle API cluster e management pubbliche 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-kubernetes
    
    ibmcloud 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