Migliorare la sicurezza del cloud applicando restrizioni basate sul contesto

Questa esercitazione può comportare degli addebiti. Utilizza lo stimatore costi per generare una stima dei costi basata sul tuo utilizzo previsto.

Questa esercitazione ti guida attraverso il processo di implementazione delle restrizioni basate sul contesto (CBRs) nel tuo account IBM Cloud. I CSR ti aiutano a proteggere ulteriormente l'ambiente cloud e a passare a un modello di sicurezza a zero attendibilità.

L'esercitazione descrive come creare zone di rete e regole di contesto e come verificarne il funzionamento. Nell'esercitazione, si apprenderà come creare gli oggetti CBR sia nella console browser che come Infrastruttura come Codice con Terraform. Imparerai anche i criteri su come definire la strategia di accesso per le tue risorse cloud.

Obiettivi

  • Scopri le restrizioni basate sul contesto per proteggere le tue risorse cloud
  • Definire le zone di rete per identificare le fonti di traffico per l'accesso consentito e negato
  • Creare regole che definiscono il contesto per l'accesso alle risorse cloud
  • Sapere come verificare e monitorare le regole di contesto

Il seguente diagramma mostra l'architettura della soluzione utilizzata nell'esercitazione Applica la sicurezza end-to-end a una applicazione cloud. Le caselle aggiuntive con linee blu tratteggiate intorno al cluster Kubernetes Service, Container Registry, Key Protecte Object Storage indicano restrizioni basate sul contesto implementate come regole di contesto. Nota che Secrets Manager potrebbe essere stato protetto, ma è solo un servizio facoltativo e non utilizzato in questa esercitazione.

Architettura
Architettura della soluzione

Prima di iniziare

Questa esercitazione richiede:

  • la CLI IBM Cloud,
  • docker per eseguire il push e il pull delle immagini del contenitore.

Le istruzioni per scaricare e installare questi strumenti per il vostro ambiente operativo sono contenute nella guida Getting started with solution tutorials.

Per evitare l'installazione di questi strumenti puoi utilizzare Cloud Shell dalla console IBM Cloud.

Configurazione

In un passo successivo, Utilizza Terraform per configurare le restrizioni basate sul contesto, distribuirai gli oggetti CBR come ulteriore livello di sicurezza oltre alle risorse utilizzate nell'esercitazione Applica sicurezza end-to-end a una applicazione cloud.

  1. Distribuisci le risorse utilizzando Terraform gestito da Schematics come descritto nel repository GitHub associato.

  2. Il IBM Cloud Activity Tracker Event Routing deve essere configurato per instradare gli eventi di auditing a un'istanza di destinazione IBM Cloud Logs. Instradare gli eventi di audit come descritto nella sezione Configurazione di un target IBM Logs, se non è ancora stato configurato nel proprio account.

Panoramica: limitazioni basate sul contesto

Le limitazioni basate sul contesto(CBR) forniscono la possibilità di definire e applicare le limitazioni di accesso per le risorse IBM Cloud in base all'ubicazione di rete e al tipo di richieste di accesso. Poiché sia le politiche IAM che le restrizioni basate sul contesto applicano l'accesso, le restrizioni basate sul contesto offrono protezione anche a fronte di credenziali compromesse o gestite in modo non corretto.

Una regola gestisce l'accesso a una risorsa identificata dal relativo nome e tipo di servizio e da ulteriori attributi. Possono includere la regione, il gruppo di risorse e altre proprietà specifiche del servizio. Gli attributi in una regola sono per lo più facoltativi, in modo che sia possibile gestire, ad esempio, tutte le istanze Key Protect insieme o specificare solo un keyring specifico in un'istanza Key Protect identificata.

Il contesto per una limitazione è costituito da zone di rete ed endpoint di servizio. È possibile definire le zone in base a specifici indirizzi IP o intervalli oppure configurando il traffico originato da uno o più VPC o servizi cloud. Con questo, l'accesso all'istanza Key Protect di esempio potrebbe essere consentito solo da, ad esempio, un'istanza Object Storage specifica, un intervallo noto di indirizzi IP e solo tramite l'endpoint privato.

Le aree di rete possono essere utilizzate per definire più regole. Le regole hanno una modalità di applicazione che può essere disabilitata, solo report o abilitata.

Al momento, non tutti i servizi cloud supportano la modalità solo report. Inoltre, questi servizi non generano voci di log relative a CBR quando sono abilitati. Per i dettagli, consultare la documentazione del singolo servizio.

Limitazioni basate sul contesto
Un diagramma che mostra come funzionano tali limitazioni

Crea zona e regola

Per valutare l'impatto delle limitazioni basate sul contesto, stai per creare una regola che regola l'accesso a uno spazio dei nomi in Container Registry. Inizi creando tale namespace, quindi una zona di rete per identificare un VPC come origine del traffico.

  1. Andare negli spazi dei nomiContainer Registry e notare il nome dello spazio dei nomi configurato in precedenza.
  2. Nella console IBM Cloud, fai clic sul menu Manage e seleziona Limitazioni basate sul contesto. Nella pagina della panoramica, fare clic su Crea una zona di rete.
  3. Immettere VPCzone come nome. In VPC consentiti, seleziona quello con il tuo cluster Kubernetes Service. Fare clic su Avanti per esaminare, quindi Crea la zona.
  4. Successivamente, crea una regola utilizzando la zona facendo clic su Rules nella navigazione a sinistra, quindi su Create.
  5. Selezionare Container Registry nella sezione Servizio e fare clic su Avanti.
  6. Lascia la sezione API con Tutte le API del servizio e fai clic su Avanti.
  7. Quindi, in Risorse, scegliere Risorse specifiche. Selezionare Tipo di risorsa come attributo e specificare namespace come valore. Aggiungere un'altra condizione e configurare Nome risorsa come NAMESPACE (lo stesso valore del passo 1). Fare clic su Rivedi, quindi su Continua.
  8. Selezionare la VPCzone creata in precedenza dall'elenco. Quindi utilizzare Aggiungi e Continua per passare all'ultima fase della finestra di dialogo. Contrassegnare Applicazione come Solo report. Successivamente, creare la regola.

Tenere presente che le regole e zone CBR vengono distribuite in maniera asincrona. Potrebbero impiegare fino a pochi minuti prima che diventino attivi (eventualmente coerenti).

Verifica la regola e le relative modalità di applicazione

  1. In una nuova scheda del browser, aprire il servizioIBM Cloud Logs, selezionare la scheda Registri cloud e fare clic sul nome dell'istanza che riceve gli eventi di auditing.

  2. Avvia una nuova sessione di IBM Cloud Shell in un'altra scheda del browser.

  3. Nella shell, eseguire i seguenti comandi: Imposta una variabile di ambiente per la regione cloud che utilizzerai per Container Registry, ad esempio us o de.

    export REGION=us
    

    Impostare un'altra variabile per lo spazio dei nomi Container Registry:

    export NAMESPACE=<YOUR_NAMESPACE>
    

    Ora accedi a Container Registry.

    ibmcloud cr login
    

    Successivamente, estrai un'immagine del contenitore nell'ambiente della shell.

    docker pull docker.io/library/hello-world:latest
    

    Contrassegnare nuovamente l'immagine per caricarla nel tuo spazio dei nomi del Registro di sistema.

    docker tag docker.io/library/hello-world $REGION.icr.io/$NAMESPACE/hello-world
    

    Infine, esegui il push dell'immagine del contenitore al Registro di sistema.

    docker push $REGION.icr.io/$NAMESPACE/hello-world
    
  4. Passare alla scheda del browser con il IBM Cloud Logs che mostra i log di auditing. In modalità report, le voci di registro vengono scritte in IBM Cloud Activity Tracker Event Routing quando una regola corrisponde, indipendentemente dall'esito della decisione. Il record di log contiene dettagli sulla richiesta. Nell'immagine sottostante, la regola per consentire l'accesso a uno spazio dei nomi Container Registry è stata applicata in modalità report.

    Verifica regole in modalità report
    Una limitazione di contesto corrispondente in modalità report

    Come discusso, in modalità report, tutte le richieste corrispondenti generano una voce di log. Nei dettagli dell'evento viene visualizzato un attributo decision con un valore di Permit o Deny. Nella schermata precedente è Nega.

  5. Torna nella scheda del browser con la shell, elenca le immagini del contenitore nello spazio dei nomi.

    ibmcloud cr images --restrict $NAMESPACE
    
  6. In una terza scheda del browser, passare a Regole CBR. Accanto alla regola correlata al registro creata in precedenza, fare clic sul menu a punti e selezionare Modifica. Andare a Descrivere la propria regola (Passo 3) e passare dalla regola Solo report a Abilitato. Attivare la modifica premendo Applica.

  7. Torna alla scheda del browser con IBM Cloud Shell. Emettere lo stesso comando di prima per elencare le immagini:

    ibmcloud cr images --restrict $NAMESPACE
    

    Questa volta, viene visualizzato un messaggio di errore che indica che non si dispone dell'autorizzazione.

  8. Nella scheda del browser con i log, dovresti trovare un nuovo record simile al seguente:

    Verifica regole in modalità applicata
    Una limitazione di contesto ha eseguito il rendering di una negazione

    La regola è stata applicata e, in base al modo in cui si è tentato di accedere al registro, l'accesso è stato negato. Il motivo è che la regola consente l'accesso solo da uno specifico VPC. L'ambiente Cloud Shell e il suo indirizzo IP, come documentato nei log nei campi requestData->environment, differiscono. Pertanto, la richiesta viene negata.

Quando si lavora con i registri IBM Cloud Logs, è possibile utilizzare stringhe di query come le seguenti per trovare facilmente i record di registro pertinenti:

  • Quando è in modalità report, "context restriction" permit OR deny restituisce le righe di log con accesso che avrebbero rappresentato un Permesso o un Nega.
  • In modalità report, è possibile utilizzare "context restriction" permit per visualizzare solo l'accesso che sarebbe stato consentito. Allo stesso modo, utilizzare "context restriction" deny per l'accesso negato.
  • Infine, in modalità forzata, utilizzare una stringa di query come context restriction rendered per le righe di log relative all'accesso negato.

Il monitoraggio di una nuova regola è consigliato per 30 giorni prima di applicarla. Ulteriori informazioni su Limitazioni basate sul contesto di monitoraggio in modalità solo report e abilitata nella documentazione CBR.

Per preparare la distribuzione degli oggetti CBR con Terraform in una sezione più in basso, vai alla scheda del browser con le Regole CBR. In questo caso, eliminare la regola creata precedentemente facendo clic sul relativo menu a punti e selezionando Rimuovi, quindi confermando con Elimina. Successivamente, fai clic su Zone di rete ed elimina la zona creata precedentemente.

Definisci la strategia di accesso per le risorse cloud

Per impostare la serie corretta di regole per le limitazioni basate sul contesto (CBRs), è necessario aver definito la strategia di accesso per le risorse cloud. Tutte le risorse devono essere protette da IAM (Identity and Access Management). Ciò significa che i controlli di autenticazione e autorizzazione devono essere eseguiti prima che un utente o un ID servizio acceda a una risorsa. Le CRR aggiungono alla protezione tagliando l'accesso alla rete in base a criteri di origine e altre regole, ma non sostituiscono la corretta configurazione IAM. Inoltre, molti servizi supportano la limitazione del traffico di rete agli endpoint privati, riducendo già le opzioni di accesso.

Si potrebbe scoprire che alcune regole influiscono sul comfort di gestione delle risorse, ad esempio, attraverso la console del browser. Inoltre, è necessario assicurarsi di non negare l'accesso alle risorse, ai dashboard di gestione e alle API. Quindi, devi tenere conto di host bastion, reti aziendali, gateway e forse anche di Cloud Shell. Inoltre, alcuni servizi supportano una distinzione dettagliata dell'accesso al piano dati e al luogo di controllo per la configurazione CBR, ad esempio Kubernetes Service API di gestione e cluster.

In sintesi, queste domande dovrebbero essere poste:

  • Tutte le risorse sono protette da IAM e simili?
  • Come si accede alle risorse, sono già limitate agli endpoint privati dove possibile?
  • È possibile separare il piano dati e l'accesso al piano di controllo?
  • Cos' è il traffico relativo all'utilizzo, quale al lavoro amministrativo? Come vengono gestite le emergenze?
  • Da dove ha origine il traffico di cui sopra?

Utilizzare la modalità report per essere consapevoli delle attività che corrispondono alle limitazioni basate sul contesto. Le decisioni basate sulle regole rendono un permesso o negano? Questo corrisponde alle tue aspettative? Per informazioni sulle attività e per gestirle correttamente con le regole CBR, si consiglia una fase di test in modalità di report di almeno un mese. Ciò consente un approccio iterativo verso l'insieme desiderato di zone di rete e regole di contesto.

Per questa esercitazione, definiremo le seguenti zone di rete:

  • una zona per il cluster Kubernetes Service
  • una zona per Object Storage
  • per un intervallo IP con gli indirizzi di una rete principale (aziendale o bastion) da utilizzare come homezone

Successivamente, definiremo le regole di contesto come segue:

Tutte le suddette zone e regole possono essere distribuite in modalità solo report o forzata con un singolo comando Terraform. Tenere presente che le regole non sono destinate all'utilizzo di produzione, ma come esempio per analizzare l'utilizzo e il traffico in modalità solo report.

La documentazione contiene un elenco di risorse supportate come riferimenti di servizio. Puoi anche richiamare l'elenco utilizzando il comando CLI service - ref - targets o la funzione API correlata List available service reference targets.

Utilizzare Terraform per configurare le limitazioni basate sul contesto

Invece di creare manualmente le zone di rete e le regole di contesto per un progetto, è consigliabile automatizzare la distribuzione. Le restrizioni basate sul contesto possono essere distribuite utilizzando Infrastructure as Code (IaC)- ossia Codice Terraform. È possibile prima distribuire le zone e le regole con le regole in modalità solo report per il test. Quindi, dopo test approfonditi, passare alla modalità applicata aggiornando la configurazione distribuita.

Risorse Terraform per zone e regole

Di seguito, distribuirai il codice Terraform per creare un insieme di base di zone di rete e regole di contesto. Il codice per le zone utilizza la risorsa ibm_cbr_zone. Quanto segue mostra una specifica di zona che identifica il cluster Kubernetes. Tale cluster è uno dei riferimenti di servizio supportati.

resource "ibm_cbr_zone" "cbr_zone_k8s" {
  account_id = data.ibm_iam_account_settings.team_iam_account_settings.account_id
  addresses {
    type = "serviceRef"
    ref {
      account_id       = data.ibm_iam_account_settings.team_iam_account_settings.account_id
      service_instance = data.ibm_container_vpc_cluster.cluster.id
      service_name     = "containers-kubernetes"
    }
  }
  description = "Zone with the Kubernetes cluster"
  name        = "cbr_zone_k8s"
}

Il codice per le regole utilizza la risorsa ibm_cbr_rule. La configurazione Terraform per una regola tipica è mostrata di seguito. Simile all'interfaccia utente del browser, ha i seguenti elementi:

  • Contesti per specificare le aree
  • Modalità di applicazione
  • Risorse a cui si applica, identificate dagli attributi
resource "ibm_cbr_rule" "cbr_rule_cos_k8s" {
  contexts {
    attributes {
      name  = "networkZoneId"
      value = ibm_cbr_zone.cbr_zone_k8s.id
    }
  }
  contexts {
    attributes {
      name  = "networkZoneId"
      value = ibm_cbr_zone.cbr_zone_homezone.id
    }
  }

  description      = "restrict COS access, limit to cluster"
  enforcement_mode = var.cbr_enforcement_mode
  resources {
    attributes {
      name  = "accountId"
      value = data.ibm_iam_account_settings.team_iam_account_settings.account_id
    }
    attributes {
      name     = "serviceInstance"
      operator = "stringEquals"
      value    = var.cos.guid
    }
    attributes {
      name     = "serviceName"
      operator = "stringEquals"
      value    = "cloud-object-storage"
    }
  }
}

Distribuisci le risorse Terraform

Con la comprensione delle risorse Terraform correlate a CBR, è tempo di distribuirle sulle risorse esistenti per creare zone e regole.

  1. Nel browser, passare a Aree di lavoro IBM Cloud Schematics. Selezionare lo spazio di lavoro con le risorse esistenti dalla configurazione precedente.
  2. Fare clic su Impostazioni. Nell'elenco delle Variabili e individua la riga con deploy_cbr. Il valore deve essere false, il valore predefinito.
  3. Nel menu a punti della variabile, selezionare Modifica. Quindi, nel modulo a comparsa, deselezionare Utilizza predefinito per poter modificare il valore. Immettere true nel campo per Valore della variabile denominata: deploy_cbr. Successivamente, completare l'aggiornamento facendo clic su Salva.
  4. Una volta aggiornata la pagina delle impostazioni, continuare con Genera piano nella parte superiore. L'output del piano deve indicare che verranno create le regole e le zone CBR.
  5. Creare gli oggetti CBR utilizzando il pulsante Applica piano.

Per impostazione predefinita, la modalità di applicazione è configurata su solo report. È possibile modificare la variabile cbr_enforcement_mode nel valore enabled per applicare le restrizioni.

Verifica le regole di contesto

Con la serie di limitazioni basate sul contesto distribuite, è di nuovo tempo per verificarle e verificarle. Per verificare gli oggetti CBR, andare alla panoramica delle limitazioni basate sul contesto. Quindi, esamina le nuove zone e le regole .

I test devono essere eseguiti su Container Registry, Object Storage e Key Protect e convalidati monitorando i log come eseguito in precedenza. Poiché le zone e le regole includono una restrizione dell'accesso in Container Registry, puoi ripetere i test eseguiti nella sezione Verifica la regola e le sue modalità di applicazione.

Per verificare la nuova regola per l'accesso a Object Storage, attieniti alla seguente procedura:

  1. In una scheda del browser, vai all'elenco delle istanze Object Storage. Fai clic sul nome del servizio per l'esercitazione, ad esempio, secure - file - storage - cos.
  2. In una seconda scheda del browser, visitare la dashboard IBM Cloud Logs già utilizzata con i log di auditing.
  3. Torna nella scheda con una panoramica di Object Storage, nell'elenco di Bucket, fai clic sul bucket di archiviazione.
  4. Utilizzare Carica per importare il file nel bucket. Lasciare l'impostazione come Trasferimento standard e utilizzare l'area Carica file (oggetti) per selezionare un file. Terminare facendo clic su Carica.
  5. Nella scheda del browser con i registri di auditing, dovrebbero essere presenti record di registro relativi a CBR intitolati Context restriction matched while in report mode. Ciò è dovuto al fatto che le regole sono state distribuite in modalità report. Espandere alcuni record per controllare la decisione riportata e i dati isEnforced. A seconda dell'intervallo IP configurato per la zona di origine, la decisione potrebbe essere Consenti o Nega. Il valore per isEnforced deve essere false a causa della modalità di report.

Per ulteriori test, è possibile modificare l'intervallo IP della zona di origine. È la variabile homezone_iprange nelle impostazioni Schematics.

Rimuovi le risorse

Per rimuovere la risorsa, utilizza il browser e passa alla panoramica degli spazi di lavoro diIBM Cloud Schematics. Selezionare lo spazio di lavoro, quindi nel menu Azioni, selezionare prima Distruggi risorse, quindi utilizzare Elimina spazio di lavoro.

Contenuto correlato