Applica la sicurezza end-to-end a un'applicazione cloud
Questa esercitazione può comportare degli addebiti. Utilizzate l'Estimatore di costi per generare una stima dei costi in base all'utilizzo previsto.
Questa esercitazione illustra i principali servizi di sicurezza disponibili nel catalogo IBM Cloud® e come utilizzarli insieme. Un'applicazione che fornisce la condivisione dei file metterà in pratica i concetti di sicurezza.
Nessuna architettura di applicazione è completa senza una chiara comprensione dei potenziali rischi per la sicurezza e di come proteggersi da tali minacce. I dati dell'applicazione sono una risorsa critica che non può essere persa, compromessa o rubata. Inoltre, i dati devono essere protetti sia quando inattivi che in transito attraverso delle tecniche di crittografia. La crittografia dei dati inattivi protegge le informazioni dalla divulgazione anche in caso di smarrimento o furto. La crittografia dei dati in transito (ad esempio su Internet) tramite metodi quali HTTPS, SSL e TLS impedisce l'intercettazione e gli attacchi cosiddetti MITM (man-in-the-middle).
Autenticare e autorizzare l'accesso degli utenti a risorse specifiche è un altro requisito comune per molte applicazioni. Potrebbe essere necessario supportare diversi schemi di autenticazione: clienti e fornitori che utilizzano identità social, partner dalle directory ospitate su cloud e dipendenti dal provider di identità di un'organizzazione.
Obiettivi
- Crittografate i contenuti nei bucket di archiviazione con le vostre chiavi di crittografia.
- Richiedere agli utenti di autenticarsi prima di accedere a un'applicazione.
- Monitorare e verificare le chiamate API e altre azioni relative alla sicurezza nei servizi cloud.
L'esercitazione presenta un'applicazione di esempio che consente a gruppi di utenti di caricare file in un pool di archiviazione comune e di accedere a tali file tramite link condivisibili. L'applicazione è scritta in Node.js e distribuita come contenitore in IBM Cloud Kubernetes Service o Red Hat OpenShift on IBM Cloud. Sfrutta diversi servizi e funzioni correlati alla sicurezza per migliorare il comportamento di sicurezza dell'applicazione.
Questa esercitazione funziona con un cluster in esecuzione in un'infrastruttura classica o in un'infrastruttura VPC.
- L'utente si connette all'applicazione.
- Se si utilizza un dominio personalizzato e un certificato TLS, il certificato viene gestito e distribuito da Secrets Manager.
- App ID protegge l'applicazione e reindirizza l'utente alla pagina di autenticazione. Gli utenti possono anche registrarsi.
- L'applicazione viene eseguita in un cluster Kubernetes da un'immagine archiviata in Container Registry. Questa immagine viene automaticamente scansionata per rilevare eventuali vulnerabilità.
- I file caricati vengono archiviati in Object Storage con i metadati associati archiviati in IBM Cloudant.
- I bucket di archiviazione oggetti, i servizi App IDe i servizi Secrets Manager utilizzano una chiave fornita dall'utente per crittografare i dati.
- Le attività di gestione delle applicazioni vengono registrate da IBM Cloud Activity Tracker Event Routing e indirizzate a IBM Cloud Logs per l'analisi.
Prima di iniziare
Questa esercitazione richiede:
- la CLI IBM Cloud,
- il plugin IBM Cloud Kubernetes Service (
kubernetes-service), - il plugin Container Registry (
container-registry),
- il plugin IBM Cloud Kubernetes Service (
kubectlper interagire con i cluster Kubernetes,gitper clonare il repository di codice sorgente.
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 si può usare il comando Cloud Shell dalla console IBM Cloud.
Crea i servizi
Nella prossima sezione, creerai i servizi utilizzati dall'applicazione.
Decidi dove distribuire l'applicazione
Il ubicazione e il gruppo di risorse di tutte le risorse che crei devono corrispondere al ubicazione e gruppo di risorse del cluster Kubernetes.
Acquisisci le attività dell'utente e dell'applicazione
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.
Alla fine di questa esercitazione, riesaminerai gli eventi che sono stati generati completando i passi dell'esercitazione.
Crea un cluster per l'applicazione
IBM Cloud Kubernetes Service e Red Hat OpenShift on IBM Cloud forniscono ambienti per distribuire applicazioni altamente disponibili nei contenitori eseguiti nei cluster Kubernetes.
Saltate questa sezione se avete un cluster Kubernetes esistente che volete riutilizzare con questa esercitazione; nel resto di questa esercitazione il nome del cluster è indicato come secure-file-storage-cluster, basta sostituirlo con il nome del vostro cluster.
Per questa esercitazione, è sufficiente un cluster minimo con una (1) zona, un (1) nodo di lavoro e la più piccola dimensione disponibile (Flavor). Per creare il cluster IBM Cloud Kubernetes Service, seguire i passaggi per Creare cluster VPC o Creare cluster classici. Per creare il cluster Red Hat OpenShift on IBM Cloud, seguire la procedura per Creare cluster VPC o Creare cluster classici.
Utilizza le tue chiavi di crittografia
Key Protect ti aiuta a eseguire il provisioning delle chiavi crittografate per le applicazioni nei servizi IBM Cloud. Key Protect e IBM Cloud Object Storage collaborano per proteggere i tuoi dati inattivi. In questa sezione, creerai una chiave root per il bucket di archiviazione.
- Creare un'istanza di Key Protect.
- Selezionare una località.
- Impostare il nome su
secure-file-storage-kp. - Selezionate il gruppo di risorse in cui creare l'istanza del servizio e fate clic su Crea.
- In corrispondenza di Chiavi, fare clic sul pulsante Aggiungi per creare una nuova chiave principale. Verrà utilizzato per crittografare il bucket di archiviazione e i dati di App ID.
- Imposta il tipo di chiave su Root key.
- Impostare il nome su
secure-file-storage-root-enckey. - Quindi Aggiungi chiave.
Porta la tua chiave personale (BYOK) importando una chiave root esistente.
Configura l'archiviazione per i file utente
L'applicazione di condivisione dei file salva i file nel bucket Object Storage. La relazione tra file e utenti è memorizzata come metadati nel database IBM Cloudant. In questa sezione, creerai e configurerai questi servizi.
Un bucket per il contenuto
- Crea un'istanza di Object Storage.
- Seleziona un piano Standard e imposta il nome su
secure-file-storage-cos. - Utilizzate lo stesso gruppo di risorse dei servizi precedenti e fate clic su Crea.
- Seleziona un piano Standard e imposta il nome su
- In Service credentials, crea una nuova credenziale.
- Impostare il nome su
secure-file-storage-cos-acckey. - Per Ruolo selezionare Scrittore.
- In Advanced options, seleziona Include HMAC Credential. Questo è necessario per generare URL pre-firmati.
- Fai clic su Aggiungi.
- Prendi nota delle credenziali. Ne avrai bisogno in seguito.
- Impostare il nome su
- Fare clic su Endpoint nella barra laterale di navigazione:
- Impostare Resiliency su Regional e impostare Location sull'ubicazione di destinazione:
- Per l'infrastruttura Classic: Copiare l'endpoint del servizio privato. Verrà utilizzato in seguito nella configurazione dell'applicazione.
- Per l'infrastruttura VPC: Copiare l'endpoint del servizio Direct. Verrà utilizzato in seguito nella configurazione dell'applicazione.
Prima di creare il bucket, concederai all'istanza del servizio Object Storage l'accesso alla chiave root archiviata nell'istanza del servizio Key Protect.
- Vai a Gestisci> Accesso(IAM)> Autorizzazioni nella console IBM Cloud.
- Fai clic sul pulsante Crea.
- Nel menu Source service, seleziona Cloud Object Storage.
- Passa a Risorse basate sugli attributi selezionati, controlla Istanza del servizio di origine e seleziona l'istanza del servizio Object Storage precedentemente creata.
- Nel menu Servizio di destinazione, seleziona Key Protect.
- Passa a Risorse basate sugli attributi selezionati, seleziona ID istanza, seleziona l'istanza del servizio Key Protect creata precedentemente.
- Abilita il ruolo Lettore.
- Fai clic sul pulsante Authorize.
Infine, crea il bucket.
- Accedi all'istanza del servizio Object Storage dall'Elenco risorse in Storage.
- Fare clic su Crea bucket e quindi su Personalizza il bucket.
- Utilizzare un valore univoco per name, ad esempio
<your-initials>-secure-file-upload. - Imposta Resiliency su Regional.
- Imposta Location sulla stessa ubicazione dove hai creato l'istanza del servizio Key Protect.
- Imposta Storage class su Standard
- Utilizzare un valore univoco per name, ad esempio
- In Service integrations (facoltativo) / Encryption, abilita Key management
- Seleziona l'istanza del servizio Key Protect creata in precedenza facendo clic su Utilizza istanza esistente
- Selezionare secure - file - storage - root - enckey come chiave e fare clic su Associa chiave.
- In Integrazioni dei servizi (opzionale) / Monitoraggio e tracciamento delle attività, attivare il tracciamento delle attività per avere eventi di audit persistenti per l'analisi.
- Dopo aver fatto clic sul segno di spunta, devono essere mostrate le informazioni sul servizio per l'istanza Activity Tracker nella regione.
- A questo punto, attivare Traccia eventi dati e selezionare lettura e scrittura come Eventi dati.
- Fai clic su Crea bucket.
Un database associa le relazioni tra gli utenti e i loro file
Il database IBM Cloudant conterrà i metadati relativi a tutti i file caricati dall'applicazione.
- Crea un'istanza del servizio IBM Cloudant.
- Seleziona Cloudant come offerta.
- Seleziona un ambiente Multitenant e una regione **** uguali ai precedenti servizi.
- Impostare il nome su
secure-file-storage-cloudant. - Utilizza lo stesso gruppo di risorse che hai usato per i servizi precedenti.
- Imposta il Metodo di autenticazione su IAM.
- Fai clic su Crea.
- Di nuovo all'elenco risorse (Resource List), individua il servizio appena creato e fai clic su di esso. Nota: è necessario attendere che lo stato venga modificato in Attivo.
- In Service credentials, crea una nuova credenziale.
- Impostare il nome su
secure-file-storage-cloudant-acckey. - Per Ruolo selezionare Gestore.
- Mantenere i valori predefiniti per i campi rimanenti.
- Fai clic su Aggiungi.
- Espandi le credenziali appena create e prendi nota dei valori. Ne avrai bisogno in seguito.
- In Gestisci, fare clic su Avvia dashboard.
- Fare clic su Crea database per creare un database non partizionato denominato
secure-file-storage-metadata.
Autentica gli utenti
Con App ID, puoi proteggere le risorse e aggiungere l'autenticazione alle tue applicazioni. Come alternativa non utilizzata in questa esercitazione, App ID può integrare con Kubernetes Service per autenticare gli utenti che accedono alle applicazioni distribuite nel cluster.
Prima di creare il servizio App ID, concedi l'accesso al servizio a Key Protect. Devi essere il proprietario dell'account o un amministratore per l'istanza di Key Protect con cui stai lavorando. Devi anche avere almeno l'accesso di visualizzatore per il servizio App ID.
- Vai a Manage> Access IAM> Authorizations e fai clic su Create.
- Seleziona il servizio App ID come tuo servizio di origine.
- Seleziona Key Protect come servizio di destinazione.
- Passa a Risorse basate sugli attributi selezionati, seleziona ID istanza, seleziona l'istanza del servizio Key Protect creata precedentemente.
- Assegna il ruolo Reader in Accesso al servizio.
- Fare clic su Autorizza per confermare l'autorizzazione delegata.
Ora, creare un'istanza del servizio App ID.
-
Passa alla pagina di creazione del servizio App ID.
- Utilizzare la stessa ubicazione utilizzata per i precedenti servizi.
- Seleziona Graduated tier come piano.
- Imposta il nome del servizio su
secure-file-storage-appid. - Seleziona un gruppo di risorse uguale ai precedenti servizi.
- Seleziona il Key Protect service name autorizzato e root key dai rispettivi menu a discesa.
- Fai clic su Crea.
-
In Manage Authentication, nella scheda Authentication Settings, aggiungi un URL di reindirizzamento web che punta al dominio che utilizzerai per l'applicazione. Il formato dell' URL è
https://secure-file-storage.<Ingress subdomain>/redirect_uri. Ad esempio:- con il dominio secondario in ingresso:
mycluster-1234-d123456789.us-south.containers.appdomain.cloud - l' URL di reindirizzamento è
https://secure-file-storage.mycluster-1234-d123456789.us-south.containers.appdomain.cloud/redirect_uri.
App ID richiede che l' URL del reindirizzamento web sia https o http. È possibile visualizzare il sottodominio Ingress nella dashboard del cluster o con
ibmcloud ks cluster get --cluster <cluster-name>. - con il dominio secondario in ingresso:
-
Nella stessa scheda sotto Authentication Settings sotto Runtime Activity, abilita l'acquisizione degli eventi in IBM Cloud Activity Tracker Event Routing.
-
Crea credenziali del servizio:
- In Service credentials, crea una nuova credenziale.
- Impostare il nome su
secure-file-storage-appid-acckey. - Per Ruolo selezionare Gestore.
- Mantenere i valori predefiniti per i campi rimanenti.
- Fai clic su Aggiungi.
Ti consigliamo di personalizzare i provider di identità utilizzati e l'esperienza di gestione degli accessi e degli utenti nel dashboard App ID. Questa esercitazione utilizza le impostazioni predefinite per semplicità. Per un ambiente di produzione, considera l'utilizzo dell'autenticazione a più fattori (MFA) e delle regole avanzate per le password.
Distribuisci l'applicazione
Tutti i servizi sono stati configurati. In questa sezione distribuirai l'applicazione dell'esercitazione al cluster. Tutto questo può essere fatto da un ambiente di shell (terminale).
Ottieni il codice
- Ottieni il codice dell'applicazione:
git clone https://github.com/IBM-Cloud/secure-file-storage - Andare alla directory secure-file-storage/app:
cd secure-file-storage/app
Compilare le credenziali e le impostazioni di configurazione
-
Se non si è connessi, utilizzare
ibmcloud loginoibmcloud login --ssoper accedere in modo interattivo. Specifica la tua regione IBM Cloud e il gruppo di risorse.ibmcloud target -r <region> -g <resource_group>Puoi trovare ulteriori comandi CLI nell'argomento Comandi CLI generali IBM Cloud(ibmcloud) nella documentazione.
-
Impostare le variabili di ambiente richieste per la creazione dei file di configurazione nel passo successivo.
- Iniziare impostando il nome cluster sostituendo
<YOUR_CLUSTER_NAME>:export MYCLUSTER=<YOUR_CLUSTER_NAME> - Imposta il dominio secondario di ingresso utilizzando i comandi
ibmcloud ks:export INGRESS_SUBDOMAIN=$(ibmcloud ks cluster get --cluster $MYCLUSTER --output json | jq -r 'try(.ingressHostname) // .ingress.hostname') - Imposta il segreto di ingresso utilizzando i comandi
ibmcloud ks:export INGRESS_SECRET=$(ibmcloud ks cluster get --cluster $MYCLUSTER --output json | jq -r 'try(.ingressSecretName) // .ingress.secretName') - Imposta il nome del repository di immagini sull'immagine precreata
icr.io/solution-tutorials/tutorial-cloud-e2e-security:export IMAGE_REPOSITORY=icr.io/solution-tutorials/tutorial-cloud-e2e-security - Impostare ulteriori variabili di ambiente sostituendo i valori predefiniti:
export BASENAME=secure-file-storage - Impostare lo spazio dei nomi da utilizzare:
export TARGET_NAMESPACE=default - Facoltativamente, imposta la variabile di ambiente
$IMAGE_PULL_SECRETsolo se stai utilizzando un altro spazio dei nomi Kubernetes rispetto allo spazio dei nomidefaulte a IBM Cloud Container Registry per l'immagine. Ciò richiede un'ulteriore configurazione di Kubernetes (ad esempio la creazione di un segreto di registro del contenitore nel nuovo spazio dei nomi).
- Iniziare impostando il nome cluster sostituendo
-
Eseguire il seguente comando per generare
secure-file-storage.yamlesecure-file-storage-ingress.yaml. Utilizzerà le variabili di ambiente appena configurate insieme ai file di modellosecure-file-storage.template.yamlesecure-file-storage-ingress.template.yaml../generate_yaml.shAd esempio, supponendo che l'applicazione sia distribuita nello spazio dei nomi predefinito Kubernetes:
Variabili di ambiente utilizzate dallo script Variabile Valore Descrizione $IMAGE_PULL_SECRETNon definire quando si utilizza l'immagine fornita Un segreto per accedere al registro. $IMAGE_REPOSITORYicr.io/solution-tutorials/tutorial-cloud-e2e-security o icr.io/namespace/image-name L'identificatore URL per l'immagine costruita, basato sull' URL del registro, sullo spazio dei nomi e sul nome dell'immagine della sezione precedente. $TARGET_NAMESPACEpredefinito Lo spazio dei nomi Kubernetes in cui verrà eseguito il push dell'applicazione. $INGRESS_SUBDOMAINsecure-file-stora-123456.us-south.containers.appdomain.cloud Recuperare dalla pagina di panoramica del cluster o con ibmcloud ks cluster get --cluster <your-cluster-name>.$INGRESS_SECRETsecure-file-stora-123456 Richiamare con ibmcloud ks cluster get --cluster <your-cluster-name>.$BASENAMEsecure-file-storage Il prefisso utilizzato per identificare le risorse. -
Copia
credentials.template.envincredentials.env:cp credentials.template.env credentials.env -
Modifica
credentials.enve riempi gli spazi con questi valori:- l'endpoint regionale del servizio Object Storage, il nome del bucket, le credenziali create per il servizio Object Storage
- le credenziali per secure-file-storage-cloudant,
- e le credenziali per App ID. La variabile
appid_redirect_urisè un elenco separato da virgole di URI di reindirizzamento come descritto sopra.
Quando utilizzi Cloud Shell, puoi usare
nano credentials.envper modificare il file.
Distribuisci al cluster
- Ottieni l'accesso al tuo cluster come descritto nelle istruzioni Connect via CLI accessibili dal menu Actions ... nella tua pagina di panoramica della console.
ibmcloud ks cluster config --cluster $MYCLUSTER --admin - Verifica che un segreto Ingress sia disponibile nello spazio dei nomi di destinazione. In caso contrario, è necessario crearlo.
Se il segreto Ingress ha un CRN, utilizzane il nome e il CRN per creare un segreto nel tuo spazio dei nomi di destinazione:ibmcloud ks ingress secret ls -c $MYCLUSTERSe il segreto Ingress non ha un CRN, utilizza il seguente comando per ricrearlo nello spazio dei nomi di destinazione:ibmcloud ks ingress secret create -c $MYCLUSTER -n $TARGET_NAMESPACE --cert-crn <crn-shown-in-the-output-above> --name <secret-name-shown-above>kubectl get secret $INGRESS_SECRET --namespace=ibm-cert-store -oyaml | grep -v '^\s*namespace:\s'| kubectl apply --namespace=$TARGET_NAMESPACE -f - - Crea il segreto utilizzato dall'applicazione per ottenere le credenziali del servizio:
kubectl create secret generic secure-file-storage-credentials --from-env-file=credentials.env - Distribuisci l'applicazione.
kubectl apply -f secure-file-storage.yaml - Distribuisci l'instradamento di rete (un servizio ClusterIP e Ingress) per la tua applicazione per renderla accessibile da Internet pubblico.
kubectl apply -f secure-file-storage-ingress.yaml
Verifica l'applicazione
L'applicazione è accessibile all'indirizzo https://secure-file-storage.<your-cluster-ingress-subdomain>/.
- Vai alla home page dell'applicazione. Verrai reindirizzato alla pagina di accesso predefinita di App ID.
- Registrati per un nuovo account con un indirizzo email valido.
- Attendi l'email nella posta in arrivo per verificare l'account.
- Esegui l'accesso.
- Scegli un file da caricare. Fai clic su Carica.
- Utilizza l'azione Share su un file per generare un URL pre-firmato che può essere condiviso con altri per accedere al file. Il link è impostato per scadere dopo 5 minuti.
Gli utenti autenticati dispongono di spazi propri per archiviare i file. Sebbene non possano vedere i reciproci file, possono generare degli URL pre-firmati per concedere l'accesso temporaneo a un file specifico.
Ulteriori dettagli sull'applicazione sono disponibili nel repository del codice sorgente.
Esamina gli eventi di sicurezza
Ora che l'applicazione e i suoi servizi sono stati distribuiti correttamente, puoi riesaminare gli eventi di sicurezza generati da tale processo. Tutti gli eventi sono disponibili centralmente nell'istanza IBM Cloud Logs.
- Dal dashboard di Observability, selezionare la scheda Registri cloud e individuare l'istanza IBM Cloud Logs che sta ricevendo gli eventi di auditing e fare clic su Apri dashboard.
- Esamina tutti i log inviati al servizio durante il provisioning e l'interazione con le risorse.
Facoltativo: utilizza un dominio personalizzato e crittografa il traffico di rete
Per impostazione predefinita, l'applicazione è accessibile su un generico sottodominio di containers.appdomain.cloud. Tuttavia, è anche possibile utilizzare un dominio personalizzato con l'applicazione distribuita. Per il supporto
continuo di https, per l'accesso con traffico di rete crittografato, è necessario fornire un certificato per il nome host desiderato o un certificato jolly. Ci sono varie combinazioni di servizi che possono essere utilizzate
per gestire i nomi DNS e i certificati TLS per l'integrazione in una applicazione Kubernetes. Questa esercitazione utilizzerà i seguenti servizi:
- Dominio secondario DNS, secure - file - storage, del tuo proprio dominio DNS personalizzato, gestito dal servizio IBM Cloud Internet Services (CIS). Allo scopo di semplificare i passi in questa esercitazione, utilizzeremo example.com per il nome del dominio DNS personalizzato, assicurati di sostituirlo con il tuo dominio DNS personalizzato in tutti i passi.
- Codifica per generare i certificati TLS.
- IBM Cloud Secrets Manager da integrare con Let' s Encrypt per generare il certificato TLS per secure-file-storage.example.com e archiviarlo in modo sicuro.
- Kubernetes Operatore dei segreti esterni per eseguire il pull del certificato TLS segreto direttamente da Secrets Manager
Invece dei seguenti passi, puoi anche creare un CNAME che punti all'URI dell'applicazione nel tuo provider DNS, generare un certificato TLS e importarne i componenti in Secrets Manager.
Provvedere alle istanze CIS e Secrets Manager
- È richiesta un'istanza IBM Cloud Internet Services. Utilizzare un'istanza esistente o crearne una da questa voce di catalogo. Sono disponibili diversi piani dei prezzi, inclusa una versione di prova gratuita. Il processo di provisioning di un nuovo CIS spiegherà come configurare il tuo registro DNS esistente
(forse non in IBM Cloud) per utilizzare i server dei nomi di dominio forniti da CIS. Esportare il dominio personalizzato nella finestra della shell:
export MYDOMAIN=example.com - È necessaria un'istanza di Secrets Manager. Utilizza un'istanza esistente o creane una nuova descritta in Creazione di una istanza del servizio Secrets Manager. Se si crea una nuova istanza, denominarla secure - file - storage - sm. Puoi migliorare la sicurezza dei tuoi segreti inattivi integrandoli con l'istanza Key Protect creata in precedenza.
Crea una voce DNS nell'istanza CIS utilizzando il tuo cluster Kubernetes Dominio secondario Ingress come alias.
- Apri l'istanza del servizio CIS, puoi trovarlo nell'Elenco risorse.
- Fare clic sulla scheda Affidabilità sulla sinistra.
- Fare clic sulla scheda DNS in alto.
- Scorrere fino alla sezione Record DNS e fare clic su Aggiungi per creare un nuovo record:
- Tipo: CNAME
- Nome: secure - file - storage
- Alias: il dominio secondario Ingress del tuo cluster. È possibile ottenere il valore corretto nella shell eseguendo il seguente comando:
echo $INGRESS_SUBDOMAIN - Fare clic su Aggiungi per aggiungere il nuovo record.
Connetti l'istanza Secrets Manager a Let' s Encrypt.
-
È richiesto un account ACME Let' s Encrypt e il file .pem associato. Utilizzare uno esistente o crearne uno:
- Installa acme - account - creation - tool. Creazione di un account Let' s Encrypt ACME contiene istruzioni e un link allo strumento di creazione.
- Esegui acme - account - creation - tool per creare un account specifico per questo esempio di archiviazione file sicura. Di seguito è riportato un esempio:
$ ./acme-account-creation-tool-darwin-amd64 -e YOUREMAIL -o secure-file-storage.example.com -d letsencrypt-prod INFO[2022-12-28T13:30:00-08:00] Registering a new account with the CA INFO[2022-12-28T13:30:00-08:00] Account information written to file : secure-file-storage.example.com-account-info.json INFO[2022-12-28T13:30:00-08:00] Private key written to file : secure-file-storage.example.com-private-key.pem Account Info { "email": "YOUREMAIL", "registration_uri": "https://acme-v02.api.letsencrypt.org/acme/acct/891897087", "registration_body": { "status": "valid", "contact": [ "mailto:YOUREMAIL" ] } }% $ ls secure-file-storage.example.com-account-info.json secure-file-storage.example.com-private-key.pem
-
Connetti l'account Let' s Encrypt ACME all'istanza Secrets Manager. Consultare Aggiunta di una configurazione dell'autorità di certificazione nell'interfaccia utente per ulteriori dettagli:
- Apri l'istanza del servizio Secrets Manager, puoi trovarla nell'Elenco risorse.
- Aprire i motori dei segreti sulla sinistra e fare clic su Certificati pubblici.
- In Autorità di certificazione fare clic su Aggiungi.
- Nome: LetsEncrypt e Certificate Authority: Lets Encrypt.
- In Seleziona file fare clic su Aggiungi file e scegliere il file secure-file-storage.example.com-private-key.pem o il file .pem esistente dal programma di selezione.
- Fai clic su Aggiungi.
-
Connetti CIS come provider DNS:
- In Provider DNS, fare clic su Aggiungi.
- Nome e scegli Cloud Internet Services dall'elenco a discesa.
- Fai clic su Next.
- Nella scheda Autorizzazione scegli l'istanza CIS.
- Fai clic su Aggiungi.
-
Ordina un certificato in Secrets Manager
- Apri il servizio Secrets Manager e seleziona Secrets sulla sinistra.
- Fai clic su Aggiungi.
- Fare clic su Certificato pubblico e fare clic su Avanti.
- Completa il modulo:
- Nome- immettere un nome che è possibile ricordare.
- Descrizione- immettere una descrizione a scelta.
- Fare clic su Avanti.
- In Autorità di certificazione selezionare il motore dell'autorità di certificazione Let' s Encrypt configurato.
- In Algoritmo chiave, selezionare l'algoritmo preferito,
- Certificati bundle- lascia fuori
- Rotazione automatica dei certificati- lasciare disattivato
- In Provider DNS selezionare l'istanza del provider DNS configurato
- Fare clic su Seleziona domini per selezionare Seleziona con carattere jolly e lasciare il dominio non selezionato e fare clic su Fine.
- Fai clic su Next.
- Rivedere le selezioni e fare clic su Aggiungi.
- Fai clic sul menu a tre punti verticali per il segreto attivo e scegli Dettagli e copia il CRN dal dialogo. Esportare il valore nella shell. Il risultato è simile a quanto mostrato di seguito:
export PUBLIC_CERT_CRN=crn:v1:bluemix:public:secrets-manager:eu-de:a/abc123abc123abc123abc123:99999999-9999-9999-9999-999999999999:secret:aaaaaaaa-9999-9999-aaaa-123456781234
-
Questa esercitazione sfrutta l'autorizzazione del servizio per fornire al cluster l'accesso all'istanza del servizio Secrets Manager e ai relativi segreti gestiti.
- Vai alla pagina Autorizzazioni IAM e fai clic su Crea per aggiungere una nuova autorizzazione.
- In Source seleziona Kubernetes Service, quindi fai clic su Specific resources. Quindi, per l'istanza del servizio di origine, scegli il cluster.
- In Target seleziona Secrets Manager, quindi, andando con Risorse specifiche e ID istanza, seleziona la tua istanza del servizio Secrets Manager.
- Infine, in Ruoli selezionare Gestore e concedere l'autorizzazione facendo clic su Autorizza.
-
Verificare che i valori per MYDOMAIN e PUBLIC_CERT_CRN siano stati esportati nell'ambiente:
echo MYDOMAIN $(printenv MYDOMAIN) echo PUBLIC_CERT_CRN $(printenv PUBLIC_CERT_CRN) -
Crea un segreto Ingress dal nuovo certificato TLS.
ibmcloud ks ingress secret create --name secure-file-storage-certificate --cluster $MYCLUSTER --cert-crn $PUBLIC_CERT_CRN --namespace $TARGET_NAMESPACE -
Eseguire il seguente comando per creare nuove copie dei file di configurazione. Verranno utilizzate tutte le variabili di ambiente configurate insieme ai file di modello
secure-file-storage.template.yamlesecure-file-storage.template-ingress.yaml. È possibile salvare prima la versione corrente:cp secure-file-storage.yaml /tmp cp secure-file-storage-ingress.yaml /tmp./generate_yaml.sh -
Applicare le modifiche alla configurazione del cluster:
kubectl apply -f secure-file-storage-ingress.yaml -
Ritorna al browser. Nell'elenco delle risorse IBM Cloud, individua il servizio App ID precedentemente creato e configurato e avvia il suo dashboard di gestione.
- Fare clic su Gestisci autenticazione sulla sinistra e sulla scheda Impostazioni autenticazione nella parte superiore.
- Nel modulo Aggiungi URL di reindirizzamento web aggiungere
https://secure-file-storage.example.com/redirect_uricome un altro URL.
- Adesso dovrebbe essere tutto pronto. Testate l'applicazione accedendo al dominio personalizzato configurato
https://secure-file-storage.<your custom domain>.
Sicurezza: ruota le credenziali del servizio
Per mantenere la sicurezza, è necessario sostituire (ruotare) le credenziali del servizio, le password e altre chiavi su base regolare. Molte politiche di sicurezza richiedono di modificare le password e le credenziali ogni 90 giorni o con una frequenza simile. Inoltre, nel caso in cui un dipendente lasci il team o in (sospetti) incidenti di sicurezza, i privilegi di accesso devono essere modificati immediatamente.
In questa esercitazione, i servizi vengono utilizzati per scopi diversi, dall'archiviazione di file e metadati alla protezione dell'accesso alle applicazioni fino alla gestione delle immagini contenitore. La rotazione delle credenziali del servizio implica in genere
- la ridenominazione delle chiavi di servizio esistenti,
- la creazione di una nuova serie di credenziali con il nome utilizzato in precedenza,
- la sostituzione dei dati di accesso nei segreti Kubernetes esistenti e l'applicazione delle modifiche
- e, dopo la verifica, la disattivazione delle credenziali precedenti eliminando le vecchie chiavi di servizio.
Espandi l'esercitazione
La sicurezza non è mai abbastanza. Prova i seguenti suggerimenti per migliorare la sicurezza della tua applicazione.
- Sostituisci IBM Key Protect con Hyper Protect Crypto Services per una sicurezza e un controllo ancora maggiori sulle chiavi di crittografia.
Condividi le risorse
Se si desidera lavorare con altri sulle risorse di questa esercitazione della soluzione, è possibile condividere tutti o solo alcuni dei componenti. IBM Cloud Identity and Access Management(IAM) abilita l'autenticazione di utenti e ID servizio e il controllo dell'accesso alle risorse cloud. Per concedere l'accesso a una risorsa, puoi assegnare i ruoli di accesso predefiniti a un utente, un ID servizio o un gruppo di accesso. Un gruppo di accesso può essere creato per organizzare una serie di utenti e ID servizio in una singola entità. Ti rende più facile assegnare l'accesso. Puoi assegnare una sola politica al gruppo invece di assegnare lo stesso accesso più volte per ogni utente o ID servizio. Puoi così organizzare i gruppi per i ruoli sul tuo progetto di sviluppo e allineare la gestione della sicurezza e del progetto.
Puoi trovare informazioni sui singoli servizi e sui loro ruoli di accesso IAM disponibili qui:
- Kubernetes Service o lo stesso per Red Hat OpenShift on IBM Cloud.
- Container Registry
- App ID
- IBM Cloudant
- Object Storage
- IBM Cloud Activity Tracker Event Routing
- Key Protect
- Secrets Manager
Per iniziare, consulta le prassi ottimali per la gestione dell'accesso e come definire i gruppi di accesso.
Rimuovi le risorse
Per rimuovere la risorsa, elimina il contenitore distribuito e quindi i servizi di cui è stato eseguito il provisioning.
Se condividi un account con altri utenti, assicurati sempre di eliminare solo le tue risorse.
-
Elimina la configurazione di rete distribuita e il contenitore:
kubectl delete -f secure-file-storage-ingress.yamlEseguire quindi il seguente comando:
kubectl delete -f secure-file-storage.yaml -
Elimina i segreti per la distribuzione:
kubectl delete secret secure-file-storage-credentials -
Se hai utilizzato Secrets Manager, rimuovi il servizio correlato all'autorizzazione del servizio.
-
Nell'elenco delle risorse IBM Cloud, individua le risorse create per questa esercitazione. Utilizza la casella di ricerca e secure-file-storage come pattern. Elimina ciascuno dei servizi facendo clic sul menu contestuale accanto a ogni servizio e scegliendo Delete Service. Nota che il servizio Key Protect può essere rimosso solo dopo aver eliminato la chiave. Fai clic sull'istanza del servizio per accedere al dashboard correlato e per eliminare la chiave.
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.