Protezione delle risorse cluster con limitazioni basate sul contesto
Le restrizioni basate sul contesto offrono ai proprietari degli account e agli amministratori la possibilità di 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.
Queste restrizioni funzionano con le politiche IAM tradizionali, basate sull'identità, per fornire un ulteriore livello di protezione. A differenza delle politiche IAM, le restrizioni basate sul contesto non assegnano l'accesso. Le limitazioni basate sui contesti verificano che una richiesta di accesso provenga da un contesto consentito configurato. Poiché sia le restrizioni di accesso IAM che quelle basate sul contesto applicano l'accesso, le restrizioni basate sul contesto offrono protezione anche di fronte a credenziali compromesse o gestite in modo non corretto. Per ulteriori informazioni, consultare Quali sono le limitazioni basate sul contesto.
Un utente deve avere il ruolo di amministratore sul servizio IBM Cloud Kubernetes Service per creare, aggiornare o eliminare le regole. E un utente deve avere il ruolo di Editor o Amministratore sul servizio di limitazioni basato sul Contesto per creare, aggiornare o eliminare le zone di rete.
Qualsiasi evento del log di controllo o Activity Tracker generato proviene dal servizio di restrizioni basato sul contesto e non da IBM Cloud Kubernetes Service. Per ulteriori informazioni, consultare Monitoraggio delle limitazioni basate sul contesto.
I tentativi di accesso al piano di controllo del cluster, che possono essere limitati utilizzando il tipo di API Cluster, non generano eventi di log Activity Tracker o di audit.
Integrazione di IBM Cloud Kubernetes Service con le restrizioni basate sul contesto
È possibile creare restrizioni basate sul contesto (CBR) per le API del piano di controllo del cluster o per le API di gestione del cluster IBM Cloud. Con le limitazioni basate sul contesto, è possibile proteggere le risorse riportate di seguito.
- API del piano di controllo del cluster
- Protegge l'accesso alle API di IBM Cloud Kubernetes Service per i vostri cluster o a specifici spazi dei nomi nei vostri cluster. Ad esempio, si può proteggere l'API per creare uno spazio dei nomi Kubernetes.
- API gestionali
- Protegge l'accesso alle API di IBM Cloud Kubernetes Service per cluster specifici. Ad esempio, è possibile proteggere l'API per creare un cluster.
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.
Protezione delle risorse cluster
È possibile creare regole CBR per proteggere regioni e cluster specifici.
- Cluster
- Protegge uno specifico cluster IBM Cloud Kubernetes Service. Se si seleziona un cluster nella regola CBR, solo il traffico dalle risorse nelle zone di rete associate alla regola può interagire con tale cluster.
- Se si utilizza la CLI, è possibile specificare l'opzione
--service-instance CLUSTER-IDper proteggere un cluster specifico. - Se si utilizza l'API, è possibile specificare
"name": "serviceInstance","value": "CLUSTER-ID"negli attributi della risorsa. - Regione
- Protegge le risorse IBM Cloud Kubernetes Service in una regione specifica. Se si seleziona una regione nella regola CBR, solo il traffico dalle risorse nelle zone di rete associate alla regola può interagire con le risorse in tale regione.
- Se si utilizza la CLI, è possibile specificare l'opzione
--region REGIONper proteggere le risorse in una regione specifica. - Se si utilizza l'API, è possibile specificare il campo
"name": "region","value": "REGION"negli attributi della risorsa. - Gruppo di risorse
- Protegge le risorse di IBM Cloud Kubernetes Service in un gruppo di risorse specifico.
- Se si utilizza la CLI, è possibile specificare l'opzione
--resource-group-id RESOURCE-GROUP-IDper proteggere le risorse in un gruppo di risorse specifico. - Se si utilizza l'API, è possibile specificare il campo
"name": "resourceGroupId","value": "RESOURCE-GROUP-ID"negli attributi della risorsa.
Protezione di API specifiche
Puoi creare regole CBR per proteggere i seguenti tipi di API per IBM Cloud Kubernetes Service.
- API del piano di controllo cluster
- Proteggi l'accesso alle API all'interno dei tuoi cluster, come le API per la creazione di spazi dei nomi, pod e altro. Le regole CBR che si applicano al tipo di API del cluster controllano l'accesso al tuo server API del cluster, che include
tutti i comandi
kubectlper quel cluster. Se si selezionano le API del piano di controllo cluster nella regola CBR, solo il traffico dalle risorse nelle zone di rete associate a tale regola può interagire con le API del piano di controllo cluster. Tutte le altre richieste sono bloccate. - Se si utilizza la CLI, è possibile specificare l'opzione
--api-typese il tipocrn:v1:bluemix:public:containers-kubernetes::::api-type:cluster. - Se si utilizza l'API, è possibile specificare
"api_type_id": "crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster"nella specifica"operations". - API gestionali
- Proteggi l'accesso alle API per il provisioning e la gestione di cluster, pool di nodi di lavoro e altro ancora. Le regole CBR che si applicano al tipo di API di gestione accedono alle API IBM Cloud Kubernetes Service, che includono tutte
le chiamate ai comandi
ibmcloud ks, come ad esempioibmcloud ks clusters,ibmcloud ks cluster createe altro. Se si selezionano le API di gestione nella regola CBR, le risorse nella zona di rete associate alla regola possono interagire con le API di gestione. - Se si utilizza la CLI, è possibile specificare l'opzione
--api-typese il tipocrn:v1:bluemix:public:containers-kubernetes::::api-type:management. - Se si utilizza l'API, è possibile specificare
"api_type_id": "crn:v1:bluemix:public:containers-kubernetes::::api-type:management"nella specifica"operations".
Per seguire uno scenario CBR di esempio, vedere Impostazione delle limitazioni basate sul contesto.
Per ottenere un elenco dei target di riferimento del servizio nella CLI, eseguire il comando ibmcloud cbr service-ref-targets.
Garantire che IBM Cloud Kubernetes Service possa mantenere l'accesso ad altre risorse di IBM Cloud quando il CBR è abilitato per loro
Devi aggiungere containers-kubernetes alle tue zone di rete per le regole create rispetto ai seguenti servizi.
- Servizio di identità IAM
- Consenti a IBM Cloud Kubernetes Service di creare token e chiavi API come la chiave API del cluster e il token e la chiave API IBM Cloud Container Registry.
- Servizio di gestione accessi IAM
- Consenti a IBM Cloud Kubernetes Service di creare un ruolo di accesso del servizio IAM Access Policy for Reader a IBM Cloud Container Registry.
- Servizio di gruppi di accesso IAM
- Consenti a IBM Cloud Kubernetes Service di ricercare i gruppi di accesso durante la sincronizzazione delle politiche di accesso IAM con RBAC nel cluster.
- Gestione degli utenti
- Consenti a IBM Cloud Kubernetes Service di accedere alle informazioni utente durante la sincronizzazione delle politiche di accesso IAM con RBAC nel cluster.
- Protezione chiave:
- Consenti IBM Cloud Kubernetes Service per abilitare la codifica sul cluster.
- Block Storage for VPC (Server Protect)
- Consentite a IBM Cloud Kubernetes Service di accedere e criptare i volumi di Block Storage for VPC.
- VPC
- Consentire l'accesso a IBM Cloud Kubernetes Service alle risorse della VPC.
Creazione di zone di rete
Le zone di rete fungono da elenchi consentiti per le risorse di destinazione definite quando si creano regole CBR. Dopo aver creato una zona di rete, o allowlist, è possibile creare regole che definiscono a quali risorse può accedere la zona di rete.
Assicurarsi di aggiungere il servizio containers-kubernetes alle zone di rete per le regole che si applicano ad altre risorse IBM Cloud, come ad esempio una regola che protegge IBM Cloud Object Storage o alcune operazioni del cluster
potrebbero fallire. Per ulteriori informazioni, vedere Consentire a IBM Cloud Kubernetes Service di accedere ad altre risorse di IBM Cloud utilizzando CBR.
Esamina le limitazioni prima di creare le zone di rete.
Creazione di zone di rete dall'API
Puoi creare zone di rete utilizzando l'API /v1/zones. Per ulteriori informazioni, vedi la documentazione API. Puoi aggiungere il servizio containers-kubernetes alle tue zone di rete per consentire a IBM Cloud Kubernetes Service di accedere alle risorse e ai servizi nel tuo account.
È possibile includere più tipi di indirizzo nel payload della zona di rete. Per ulteriori informazioni, vedi il payload di esempio nella documentazione API.
Payload di esempio per aggiungere IBM Cloud Kubernetes Service a una zona di rete. L'attributo serviceRef per IBM Cloud Kubernetes Service è containers-kubernetes.
{
"name": "Example zone 1",
"description": "",
"addresses": [
{
"type": "serviceRef",
"ref": {
"service_name": "containers-kubernetes",
"account_id": "ACCOUNT-ID"
}
}
]
}
Payload di esempio per aggiungere più servizi, indirizzi IP e VPC a una zona di rete.
{
"name": "zone",
"description": "",
"addresses": [
{
"type": "ipAddress",
"value": "192.168.0.0"
},
{
"type": "vpc",
"value": "crn:v1:bluemix:public:is:us-east:a/CRN"
},
{
"type": "vpc",
"value": "crn:v1:bluemix:public:is:us-south:a/CRN"
},
{
"type": "serviceRef",
"ref": {
"service_name": "cloud-object-storage",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_name": "codeengine",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_name": "containers-kubernetes",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_type": "platform_service",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_name": "iam-groups",
"account_id": "ACCOUNT-ID"
}
}
],
"excluded": []
}
Creazione di aree di rete dalla CLI
-
Per creare le aree di rete dalla CLI, installa il plug-in CLI CBR.
-
È possibile utilizzare il comando
cbr-zone-createper aggiungere risorse alle zone di rete. Per ulteriori informazioni, consultare il manuale CBR CLI reference. Nota che ilservice_nameper IBM Cloud Kubernetes Service ècontainers-kubernetes.Per individuare un elenco di riferimenti di servizi disponibili, eseguire il
ibmcloud cbr service-ref-targetscomando.Comando di esempio per aggiungere il servizio
containers-kubernetesa una zona di rete.ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=containers-kubernetesIl seguente esempio crea una zona di rete per consentire l'accesso a un singolo indirizzo IP pubblico. Puoi anche utilizzare questo esempio insieme alla regola di esempio di un IP. Per ulteriori informazioni su questo scenario, consultare Impostazione delle limitazioni basate sul contesto.
ibmcloud cbr zone-create --addresses 129.41.86.7 --description "Allow only client IP" --name allow-client-ip
Creazione di zone di rete dalla console
- Determinare le risorse che si desidera aggiungere alla propria allowlist.
- Segui la procedura per creare restrizioni basate sul contesto nella console. Aggiungi il servizio Kubernetes alle tue zone di rete per consentire a IBM Cloud Kubernetes Service di accedere ai servizi e risorse nel tuo account.
Creazione di regole
Definisci le regole per proteggere l'accesso alle risorse nel tuo account. I contesti definiti nelle regole determinano in che modo le risorse nelle zone di rete (elenchi consentiti) possono interagire con le risorse definite nella regola.
Esamina le limitazioni prima di creare regole.
Creare regole utilizzando l'API
Esaminare le seguenti richieste di esempio per creare regole. Per ulteriori informazioni sull'API v1/rules, vedi la documentazione API.
Dopo aver creato una regola, potrebbero essere necessari fino a 10 minuti prima di poter aggiornare tale regola a causa della memorizzazione nella cache delle risposte TTL IAM.
Il seguente payload di esempio crea una regola che protegge il cluster CLUSTER-ID. Solo le risorse nella zona NETWORK-ZONE-ID possono accedervi. Poiché non è specificato alcun operations, le risorse nella
zona NETWORK-ZONE-ID possono accedere sia alle API cluster che a quelle management.
{
"description": "Example rule 1",
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "ACCOUNT-ID"
},
{
"name": "serviceName",
"value": "containers-kubernetes"
},
{
"name": "serviceInstance",
"value": "CLUSTER-ID"
}
]
}
],
"contexts": [
{
"attributes": [
{
"name": "networkZoneId",
"value": "NETWORK-ZONE-ID"
},
{
"name": "endpointType",
"value": "private"
}
]
}
]
}
Il seguente payload di esempio crea una regola che protegge il cluster CLUSTER-ID. Solo le risorse definite nella zona NETWORK-ZONE-ID possono accedere al cluster. Poiché è specificato il tipo di API cluster,
le risorse nella zona NETWORK-ZONE-ID possono accedere al cluster tramite le API cluster sulla rete privata.
{
"description": "Example rule 2",
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "ACCOUNT-ID"
},
{
"name": "serviceName",
"value": "containers-kubernetes"
},
{
"name": "serviceInstance",
"value": "CLUSTER-ID"
}
]
}
],
"operations": {
"api_types": [
{
"api_type_id": "crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster"
}
]
},
"contexts": [
{
"attributes": [
{
"name": "networkZoneId",
"value": "NETWORK-ZONE-ID"
},
{
"name": "endpointType",
"value": "private"
}
]
}
]
}
Creazione di regole dalla CLI
- Per creare regole dalla CLI, installa il plug-in CLI CBR.
- È possibile utilizzare il comando
ibmcloud cbr rule-createper creare le regole CBR. Per ulteriori informazioni, consultare il manuale CBR CLI reference. Nota che ilservice_nameper IBM Cloud Kubernetes Service ècontainers-kubernetes. Per trovare un elenco di nomi servizio, eseguire il comandoibmcloud cbr service-ref-targets. Per trovare un elenco di tipi di API per un servizio, esegui il comandoibmcloud cbr api-types --service-name SERVICE.
Comando di esempio per creare una regola che utilizza la chiave addresses e il tipo API cluster e il tipo ipAddress.
ibmcloud cbr rule-create my-rule-1 --service-name containers-kubernetes --api-type crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --zone-id ZONE-ID
Il comando seguente crea una regola che protegge il cluster CLUSTER-ID. Solo le risorse nella zona di rete NETWORK-ZONE-ID possono accedere al cluster. Questa regola include sia i tipi di API cluster che management.
ibmcloud cbr rule-create my-rule-2 --service-name containers-kubernetes --service-instance CLUSTER-ID --zone-id NETWORK-ZONE-ID
Il seguente comando di esempio crea una regola che consente tutte le connessioni di reti private, ma consente solo alle risorse nella zona di rete di allow-client-ip di connettersi al cluster sulla rete pubblica. Per ulteriori
informazioni su questo scenario, vedere Impostazione di restrizioni basate sul contesto.
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=allow-client-ip
Creare regole dalla console
- Esaminare i contesti disponibili e stabilire le regole che si desidera creare.
- Segui la procedura per creare restrizioni basate sul contesto nella console.
Limitazioni
- Dopo aver creato, applicato o disabilitato l'applicazione di una regola, potrebbero essere necessari fino a 10 minuti per rendere effettiva la modifica.
- Le seguenti limitazioni si applicano alle regole CBR di IBM Cloud Kubernetes Service che si applicano a tutti i tipi di API o ai tipi di API di
cluster:- Non devono fare riferimento a zone di rete che contengono indirizzi IPv6. Le API incluse nel tipo
clusternon supportano IPv6. - Non devono fare riferimento ad altri servizi come IBM Cloud Object Storage o Key Protect nelle zone di rete applicate.
- Non supportano l'applicazione di
Report-onlyper il tipo di API del cluster. - Sono limitati a non più di 200 IP/sottoreti per le regole private e a 500 IP/sottoreti per le regole pubbliche.
- Non devono fare riferimento a zone di rete che contengono indirizzi IPv6. Le API incluse nel tipo
- Alcuni cluster IBM Cloud Kubernetes Service creati prima dell ' 8 ottobre 2022 non sono in grado di applicare regole CBR pubbliche per APIserver del cluster. Per controllare se il cluster supporta queste regole CBR di tipo API del cluster
pubblico, eseguire il comando
ibmcloud ks cluster get -c <CLUSTER-ID>. Se uno degli URL dell'endpoint del servizio inizia conhttps://cXXX(dove XXX è un numero di tre cifre), il cluster supporta le regole CBR pubbliche. Se gli URL dell'endpoint del servizio iniziano conhttps://cX(dove il numero dopocè una singola cifra), il cluster non è in grado di applicare le regole CBR pubbliche per APIserver del cluster. Per utilizzare le regole CBR pubbliche, è necessario creare un nuovo cluster.