Utilizza profili affidabili come base per ambienti cloud sicuri

Questa esercitazione può comportare degli addebiti. Utilizzate l'Estimatore di costi per generare una stima dei costi in base all'utilizzo previsto.

IBM Cloud Identity and Access Management(IAM) ti consente di controllare quali utenti visualizzano, creano, utilizzano e gestiscono le risorse nel tuo ambiente cloud. Il tuo ambiente potrebbe essere un singolo account IBM Cloud, account multipli o un' azienda con una gerarchia di molti account e gruppi di account. Quando si utilizzano le risorse dell'account, spesso sono coinvolti utenti e ID servizio. Tuttavia, sono disponibili più opzioni per gestire l'accesso, assegnare privilegi e identificare: Profili attendibili.

In questa esercitazione, verranno fornite informazioni sui profili attendibili, sui relativi casi di utilizzo e su come utilizzarli per migliorare la sicurezza. I profili attendibili possono fungere da base per ambienti cloud sicuri, come elemento costitutivo per soluzioni cloud sicure. Come parte di questa esercitazione, si creerà un profilo attendibile che viene utilizzato da un'applicazione per eseguire attività amministrative.

Obiettivi

  • Informazioni sui casi di utilizzo per i profili attendibili
  • Crea profili attendibili e gestisci l'accesso alle risorse cloud
  • Approfondire le conoscenze di Identity and Access Management (IAM)

Architettura
Architettura della soluzione

  • L'immagine del contenitore per l'applicazione viene estratta dal cluster Container Registry e distribuita al cluster Kubernetes in uno spazio dei nomi.
  • L'utente si connette all'applicazione.
  • L'applicazione legge un token di accesso speciale dall'ambiente Kubernetes e lo trasforma in un token di accesso IAM per un profilo attendibile.
  • IAM registra gli eventi di auditing in IBM Cloud Activity Tracker Event Routing.

Prima di iniziare

Questa esercitazione non richiede alcuna installazione e utilizza solo la consoleIBM Cloud.

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 globali come descritto nella sezione Configurazione di un target IBM Logs, se non è attualmente configurato nel proprio account.

Panoramica: profili attendibili

In modo simile agli utenti e agli ID servizio, i profili attendibili sono identità a cui è possibile concedere l'accesso nelle politiche IAM. I profili attendibili differiscono in quanto non sono in grado di creare e possedere chiavi API. Si tratta di un'identità all'interno di un account specifico che funge da "gateway" per qualcuno o qualcos' altro per lavorare all'interno di tale account senza la necessità di una chiave API. Possono assumere l'identità di quel profilo attendibile.

Si configura tale persona o qualcos' altro (vedere di seguito) come parte della configurazione del profilo attendibile. Sono disponibili tutte le normali opzioni, l'API, la CLI IBM Cloud, qualsiasi SDK, Terraform o la console IBM Cloud disponibile.

Nella console, come parte della categoria IAM, i profili attendibili hanno la propria sezione. Lì, puoi facilmente crearle e gestirle. Il seguente screenshot mostra il secondo passo della finestra di dialogo per creare un profilo attendibile. È possibile configurare il modo in cui stabilire l'attendibilità, quale entità può assumere l'identità del profilo attendibile. Si tratta di uno o più dei seguenti:

  • Utenti federati
  • Risorse di calcolo
  • Servizi IBM Cloud
  • ID servizio

Tipi di entità profilo attendibile
Tipi di entità attendibili

Casi di utilizzo del profilo attendibile

I profili attendibili sono identità all'interno di IBM Cloud. Possono essere membri di gruppi di accesso IAM e quindi disporre di privilegi di accesso assegnati. Analogamente agli utenti e agli ID servizio, è anche possibile assegnare direttamente l'accesso ai profili attendibili. La caratteristica distintiva è la possibilità di configurare un profilo attendibile, in modo che specifiche identità o risorse possano agire sotto la propria identità. Queste identità e risorse potrebbero essere ubicate anche in altri account. Quindi, ad un alto livello, il caso di utilizzo di per l'utilizzo di profili attendibili è per consentire il lavoro di gestione

  • con un determinato set di privilegi
  • sotto una specifica identità
  • per le identità o le risorse identificate da una serie di proprietà configurate come parte del profilo sicuro.

I seguenti scenari sono casi di utilizzo per i profili attendibili, che differiscono per il modo in cui viene stabilito il trust:

  • Associa gli utenti federati e la loro appartenenza al gruppo ai privilegi IBM Cloud: configura un profilo attendibile per consentire agli utenti di un provider di identità federato di assumere la sua identità. È possibile definire quali IdP e quali attributi utente considerare.
  • Esegui attività di gestione da risorse di calcolo dedicate: puoi configurare un profilo attendibile per stabilire l'attendibilità tramite una risorsa di calcolo nota. Tale risorsa potrebbe essere un pod specifico in un cluster Kubernetes (incluso Red Hat OpenShift on IBM Cloud) o un'istanza del server virtuale (VSI) in un cloud privato virtuale (IBM Cloud VPC).
  • Esegui attività di gestione da un ID servizio noto: un ID servizio dello stesso account o di un altro account può assumere l'identità del profilo attendibile.
  • Distribuisci le risorse cloud da un'istanza di uno specifico servizio cloud: configura un'istanza di un servizio IBM Cloud, identificato dal relativo CRN (nome risorsa cloud) per poter assumere l'identità di un profilo attendibile. Uno scenario tipico è per un progetto aziendale per distribuire un'architettura.

Stabilisci attendibilità

Come descritto nella panoramica, ci sono diverse opzioni disponibili su come stabilire l'attendibilità, su come un'entità può assumere l'identità di un profilo attendibile.

Identità federata

Utenti che utilizzano un ID SSO aziendale o aziendale per accedere a IBM Cloud sono chiamate identità federate. Il provider SSO (single sign - on) funge da provider di identità (IdP). Un grande vantaggio dell'utilizzo delle identità federate è che gli utenti non hanno bisogno di nuove credenziali da utilizzare con IBM Cloud e possono continuare a utilizzare l' IdP delle loro aziende per l'autenticazione.

Le identità federate possono essere utilizzate con profili attendibili e nelle regole dinamiche dei gruppi di accesso IAM.

Calcola risorsa

Invece di utilizzare le proprietà utente fornite da un provider di identità, in questo caso, l'attendibilità viene stabilita tramite attributi delle risorse di calcolo. Puoi configurare solo l'attendibilità di un'applicazione in esecuzione, ad esempio, uno spazio dei nomi e un pod specifico in un cluster Kubernetes o un'istanza del server virtuale in un VPC con una combinazione specifica di valori per il gruppo di risorse, la regione, la sottorete e la zona. Tale app attendibile può assumere l'identità del profilo attendibile ed eseguire attività con i privilegi assegnati.

Il vantaggio di utilizzare un profilo attendibile basato su una risorsa di calcolo è che questa soluzione evita l'utilizzo di una chiave API. Quindi, non ci sono requisiti e sfide su come creare, archiviare e proteggere qualsiasi chiave API condivisa, su come assegnare e gestire i privilegi. L'applicazione che assume l'identità di un profilo attendibile recupera semplicemente un token di risorsa di calcolo speciale, quindi lo trasforma in un token di accesso IAM regolare per il profilo attendibile. In seguito, le attività previste possono essere eseguite con il token fornito per l'autenticazione.

Consulta il post del blog Developer Tricks: Simulate Cloud Security for Local App Development per informazioni sul token della risorsa di calcolo. Scopri come sviluppare e testare localmente le applicazioni utilizzando quel token.

ID servizio

Un altro metodo per stabilire l'attendibilità consiste nel specificare un ID servizio. L'ID servizio può provenire dallo stesso account o da un altro account. Poiché gli ID servizio sono identità univoche in tutti gli account IBM Cloud, non è necessario configurare ulteriori attributi. Con tale configurazione in atto, un ID servizio da un account A può ora richiedere di assumere l'identità di un profilo attendibile nell'account B ed eseguire attività (amministrative).

Istanza del servizio cloud

Simile a un ID servizio, è possibile specificare il nome risorsa cloud (CRN) di un'istanza del servizio IBM Cloud, in modo che l'istanza sia una risorsa attendibile. Tale istanza del servizio può essere ubicata nello stesso account o in un altro account. Al momento, il suo unico scenario supportato è per un progetto aziendale per distribuire un'architettura. I progetti, come istanze di servizio, con architetture distribuibili possono essere gestiti centralmente in un unico account. Stabilendo l'attendibilità tramite il CRN del progetto, può assumere l'identità di un profilo attendibile in un altro account nella stessa o in un'altra gerarchia di account aziendali, quindi distribuire un modello di soluzione con le relative risorse.

Profilo attendibile con risorsa di elaborazione

Per mettere in pratica la teoria, si autorizzerà un'applicazione containerizzata a eseguire attività in un account IBM Cloud. L'applicazione viene distribuita su un cluster Kubernetes. Funge da risorsa di calcolo che verrà utilizzata per stabilire l'attendibilità per utilizzare il profilo attendibile. È possibile eseguire tutti i seguenti passi in un browser Web con più schede aperte. Assicurarsi di lasciare aperte le schede del browser come indicato.

Per motivi di sicurezza, l'app funziona in modalità di sola lettura. Tenta di raccogliere un elenco delle risorse distribuite. L'utente assegnerà i privilegi all'app che determinano le risorse che può leggere. Inoltre, distribuirai l'applicazione in un modo che sia accessibile solo dal cluster Kubernetes, non da internet pubblico.

Il post del blog Turn Your Container Into a Trusted Cloud Identity discute lo stesso scenario.

Cluster Kubernetes come risorsa di calcolo

Kubernetes Service fornisce un ambiente per distribuire applicazioni altamente disponibili nei contenitori eseguiti nei cluster Kubernetes.

Saltate questa sezione se avete un cluster esistente che volete riutilizzare con questa esercitazione; nel resto di questa esercitazione il nome del cluster è indicato come mycluster-tpcr, basta sostituirlo con il nome del vostro cluster. Nota la versione Kubernetes minima richiesta di 1.21.

Per questa esercitazione, è sufficiente un cluster minimo con una (1) zona, un (1) nodo di lavoro e la più piccola dimensione disponibile (Flavor). È richiesta una versione minima Kubernetes di 1.21. Assicurarsi di selezionare una versione appropriata durante la creazione del cluster.

Apri i clusterKubernetes e fai clic su Crea cluster. Consultare la documentazione a cui si fa riferimento di seguito per ulteriori dettagli in base al tipo di cluster. Riepilogo:

  • Fare clic sul cluster di livello Standard
  • Per Kubernetes sull'infrastruttura VPC, consulta la documentazione di riferimento Creating VPC clusters.
    • Fare clic su Crea VPC:
      • Inserire un nome per la VPC.
      • Scegliere lo stesso gruppo di risorse del cluster.
      • Fai clic su Crea.
    • Collega un Public Gateway a ciascuna delle sottoreti che crei:
      • Passa a Virtual private cloud.
      • Fare clic sul VPC creato precedentemente utilizzato per il cluster.
      • Scorri fino alla sezione delle sottoreti e fai clic su una sottorete.
      • Nella sezione Public Gateway, fai clic su Scollegato per modificare lo stato in Collegato.
      • Fai clic sul pulsante back del browser per tornare alla pagina dei dettagli VPC.
      • Ripeti i tre passi precedenti per collegare un gateway pubblico a ogni sottorete.
  • Per l'infrastruttura Kubernetes on Classic, consulta la documentazione di riferimento Creating classic cluster.
  • Scegliere un gruppo di risorse.
  • Deselezionare tutte le zone tranne una.
  • Riduci a 1 Nodi di lavoro per zona.
  • Scegli il flavor del pool di lavoro più piccolo.
  • Per Nome cluster utilizzare mycluster-tpcr.
  • Disattivare tutte le opzioni di sicurezza per questo cluster dimostrativo che verrà eliminato al termine di questa esercitazione. Sarà importante valutare attentamente questi elementi per gli altri cluster creati.

Quando viene eseguito il provisioning del cluster, lasciare aperta la scheda del browser (panoramica del cluster) e disponibile per un secondo momento. Puoi comunque passare ai passi successivi.

Crea un profilo attendibile

  1. In una nuova scheda del browser (profilo attendibile IAM), utilizza la navigazione superiore Gestisci > Accesso (IAM), quindi Profili attendibili sulla sinistra per ottenere la panoramica dei profili attendibili. Quindi creare un nuovo profilo di fiducia.
  2. Utilizzare TPwithCR come Nome e immettere una breve Descrizione, ad esempio Test trusted profile with compute resource. Successivamente, fare clic su Continua.
  3. Nella seconda scheda del modulo, in Seleziona tipo di entità attendibile, selezionare Calcola risorse e viene visualizzata una finestra di dialogo Crea relazione attendibile. Scegli Kubernetes come Tipo di servizio Compute.
  4. Successivamente, è possibile decidere tra tutte o specifiche risorse di servizio.
    • Fare clic su Risorse specifiche per visualizzare il successivo campo del modulo.
    • In Immettere o selezionare un'istanza, fare clic su Aggiungi risorsa. Quindi, nel campo Consenti accesso a seleziona il cluster Kubernetes mycluster-tpcr.
    • Quindi, immettere tptest come valore per Namespace. Lascia il campo per Account di servizio come se stessi utilizzando il valore predefinito.
    • Terminare facendo clic su Continua.
  5. Successivamente, fare clic su Politica di accesso. Nell'elenco dei servizi, selezionare Tutti i servizi abilitati all'accesso e all'identità e fare clic su Avanti. Utilizzare Tutte le risorse, fare di nuovo clic su Avanti, quindi selezionare Visualizzatore e di nuovo fare clic su Avanti. Nella sezione Ruoli e azioni, seleziona Reader for Service access e Viewer for Platform access. Al termine, fare clic su Avanti e infine su Aggiungi.
  6. Esaminare il Riepilogo sul lato destro, quindi Creare il profilo attendibile con la relazione di attendibilità mostrata e i privilegi di accesso elencati. Lasciare aperta la scheda del browser per un secondo momento.

L'utilizzo di un gruppo di accesso per assegnare l'accesso è una prassi ottimale. Per semplicità, abbiamo scelto di assegnare l'accesso di sola lettura tramite una politica di accesso diretto. Si consiglia di creare un gruppo di accesso con privilegi assegnati, quindi rendere il profilo attendibile un membro di esso.

Distribuisci l'applicazione

Con il cluster Kubernetes e il profilo attendibile in atto, è tempo di distribuire una semplice applicazione di test. Il codice sorgente per l'applicazione e la configurazione si trovano nel repository GitHub trusted - profile - enterprise - security. Non ne hai bisogno per la distribuzione, ma potresti essere comunque interessato a come funziona.

  1. Nella scheda del browser panoramica del cluster, verificare che il cluster sia stato completamente distribuito. In una configurazione a un nodo, lo stato di ingresso può segnalare un avviso. Si consiglia di aggiornare il browser e controllare che gli altri segni di spunta siano verdi. In questo caso, fai clic sul dashboardKubernetes e si apre una nuova scheda del browser (DashboardKubernetes).

  2. In alto a sinistra, trova il selettore dello spazio dei nomi e passa a Tutti gli spazi dei nomi.

  3. In alto a destra, fare clic su + per creare una nuova risorsa. Incollare il seguente contenuto nel modulo di testo Crea da input.

    apiVersion: v1
    kind: Namespace
    metadata:
      name: tptest
      labels:
        name: tptest
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: trustedprofile-test
      namespace: tptest
    spec:
      ports:
      - port: 8080
        targetPort: 8080
        protocol: TCP
      type: ClusterIP
      selector:
        app: tptest
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: trustedprofile-test-deployment
      namespace: tptest
    spec:
      selector:
        matchLabels:
          app: tptest
      replicas: 1
      template:
        metadata:
          labels:
            app: tptest
        spec:
          containers:
          - name: tptest-container
            image: icr.io/solution-tutorials/tutorial-trusted-profile-enterprise-security:v1.0.3
            imagePullPolicy: Always
            ports:
            - containerPort: 8080
            volumeMounts:
            - mountPath: /var/run/secrets/tokens
              name: sa-token
          serviceAccountName: default
          volumes:
          - name: sa-token
            projected:
              sources:
              - serviceAccountToken:
                  path: sa-token
                  expirationSeconds: 3600
                  audience: iam
    

    Fai quindi clic su Carica per creare le risorse per l'applicazione. Include un nuovo spazio dei nomi Kubernetes tptest, una distribuzione e un servizio con un pod.

    Puoi trovare il codice sorgente per la precedente configurazione YAML su GitHub.

  4. Nella colonna di navigazione a sinistra, fare clic su Distribuzioni per verificare lo stato della nuova distribuzione trustedprofile - test - deployment. Successivamente, fai clic su Pods nella stessa colonna di navigazione e nota un pod con un nome che inizia per trustedprofile - test - deployment. Una volta visualizzato lo stato verde, passare alla sezione successiva.

Verifica il profilo attendibile

Con il profilo attendibile e il cluster Kubernetes con l'applicazione in esecuzione attiva, è il momento di eseguire il test. Iniziare aprendo una shell basata sul browser per eseguire i comandi, una scheda per i registri del contenitore e un'altra per i registri IBM Cloud Logs.

  1. Nella scheda attualmente attiva Kubernetes con i pod, fai clic sul menu con tre punti a destra e fai clic con il pulsante destro del mouse su Exec in tale menu. Scegliere di aprire il collegamento in una nuova scheda (shell contenitore). Apre una shell per il contenitore in esecuzione. Ancora nella scheda del browser Kubernetes, fai clic di nuovo sul menu dei tre punti e quindi con un clic con il tasto sinistro del mouse sui Log. Nel nuovo menu a tre punti abilitare Aggiornamento automatico.

    Infine, aprire una scheda con il servizioIBM Cloud Logs, selezionare la scheda Registri cloud e fare clic sul nome dell'istanza che riceve gli eventi di auditing.

  2. Nella scheda del browser shell contenitore, immetti il seguente comando nella shell per testare l'applicazione:

    curl -s localhost:8080
    

    Quanto sopra deve restituire un oggetto JSON con codeversion e result. Dovresti vedere alcune nuove attività di log nel dashboardKubernetes con i log. Successivamente, nella scheda shell contenitore, immetti il seguente comando:

    curl -s localhost:8080/api/listresources_crn | jq
    

    Il comando richiama l'applicazione, cercando di richiamare l'elenco di risorse nell'account, ma non viene fornito alcun nome profilo attendibile. Il risultato deve essere un oggetto JSON formattato con un messaggio di errore.

  3. Ripetere il comando precedente, ma ora specificare quale profilo attendibile utilizzare:

    curl -s localhost:8080/api/listresources_crn?tpname=TPwithCR | jq
    

    Ora, il risultato deve essere un oggetto JSON formattato con le informazioni sulle risorse nel tuo account. Per la leggibilità, vengono restituiti solo i CRN della risorsa. Utilizzare localhost:8080/api/listresources per i dettagli completi dell'oggetto. Si potrebbe anche voler provare un nome profilo attendibile diverso, non esistente ed esaminare il messaggio di errore.

    Quando viene richiamata, l'applicazione legge prima il token per la risorsa di calcolo. Quindi, converte il token in un token di accesso IAM per il profilo attendibile specificato. Infine, richiama l'API del controller di risorse IBM Cloud per richiamare le informazioni sulle istanze del servizio. Il risultato dipende dai privilegi configurati del profilo attendibile. Se interessato, esamina il codice sorgente dell'app.

  4. Passare alla scheda del browser IBM Cloud Logs e utilizzare la casella di ricerca in basso per cercare il termine profilo. Questa deve essere l'istanza configurata come target degli eventi di auditing. It should return at least one line with IAM Identity Service: login.computeresource-token TPwithCR. Open the info panel to expand the record to examine details, look for the iniziatore section. Elenca il profilo attendibile utilizzato per la richiesta e le informazioni sulla risorsa di calcolo. L'authName deve corrispondere all'installazione dalla scheda browser della dashboard diKubernetes.

    IBM Cloud Logs showing details of the trusted profile request
    Details in the activity log

  5. Ora visita la scheda del browser DashboardKubernetes e controlla il log del contenitore. L'applicazione stampa i dettagli sul token di accesso JWT che utilizza per l'autenticazione per elencare le risorse. Esaminare le singole coppie chiave / valore, incluso sub (oggetto) due volte. Sono correlati al profilo attendibile e alla risorsa di calcolo.

  6. Passa alla scheda del browser IAM trusted profile con la configurazione per TPwithCR. Nel modulo, fare clic sulla scheda Accesso, quindi sul menu a tre punti per Tutti i servizi abilitati per l'accesso e l'identità, selezionare Modifica. Ora dovrebbe mostrare Modifica politica per TPwithCR. Fare clic su Modifica per Risorse e selezionare Risorse specifiche. Selezionare Regione come Tipo di attributo e come Valore, ad esempio Francoforte. Terminare premendo Salva.

  7. Tornare alla scheda del browser shell contenitore ed eseguire nuovamente questo comando per elencare le risorse:

    curl -s localhost:8080/api/listresources?tpname=TPwithCR | jq
    

    Il risultato può essere diverso da quello precedente, a seconda di dove hai distribuito altre risorse nel tuo account. Rivedere i logIBM Cloud Logs e le schede del browser della dashboardKubernetes per verificare la presenza di nuove attività di log.

  8. È possibile tornare al passo 6 e modificare di nuovo la politica di accesso, quindi eseguire nuovamente il test con il passo 7. Alcune idee per la modifica della politica di accesso potrebbero consistere nell'aggiungere regioni o limitare a specifici servizi invece di Tutti i servizi abilitati per l'accesso e l'identità.

Rimuovi le risorse

Una volta terminato il test dello scenario precedente con profili attendibili e risorse di elaborazione, è possibile rimuovere le risorse effettuando le seguenti operazioni:

  1. Per eliminare il cluster Kubernetes, fai clic su Azioni in alto a destra nella scheda del browser panoramica del cluster, quindi su Elimina cluster.
  2. Nella scheda Profili di fiducia con il profilo di fiducia TPwithCR, fare clic su Azioni e Rimuovi per eliminare il profilo di fiducia.

A seconda della risorsa, potrebbe non essere eliminata immediatamente, ma conservata (per impostazione predefinita per 7 giorni). È possibile recuperare la risorsa eliminandola in modo permanente o ripristinarla entro il periodo di conservazione. Consultare questo documento su come utilizzare il recupero delle risorse.