Condivisione delle risorse tra account

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 diverse opzioni su come condividere le risorse basate sul cloud tra gli account.

Un numero innumerabile di servizi sono offerti su Internet. Probabilmente possiedi account presso molti fornitori di servizi. Per utilizzare questi servizi, in genere si accede ad essi con una combinazione di identità utente (ID) e password o fornendo una qualche forma di chiave API o token di accesso, spesso combinati con livelli aggiuntivi (fattori) di autenticazione. Quando si creano applicazioni native cloud con un'architettura basata su microservizi, i singoli componenti possono utilizzare le stesse tecniche per accedere l'uno all'altra per la collaborazione. Idealmente, la configurazione può essere automatizzata e l'accesso può essere limitato al minimo richiesto per una maggiore sicurezza.

Concentrandosi sui servizi cloud, potrebbe essere chiamato connettore, bind del servizio o autorizzazione service - to - service. Tale binding di servizi automatizzati fornisce un'integrazione più stretta e di solito combina autenticazione e autorizzazione in un'unica configurazione automatizzata. Generalmente, il collegamento del servizio richiede che i servizi si trovino nello stesso account cloud. Tale raggruppamento è logico e semplifica lo sviluppo e il funzionamento. Ma a volte, l'organizzazione, e in particolare i requisiti relativi alla sicurezza e alla conformità, potrebbero significare separare alcuni servizi e mantenerli in conti centrali. Pertanto, le applicazioni devono condividere le risorse tra gli account. La condivisione può essere tra account in un IBM Cloud Ambiente aziendale o senza un'organizzazione aziendale formale.

Questa esercitazione illustra i casi di utilizzo e i vantaggi tipici della condivisione delle risorse cloud tra gli account. Imparerai come implementare questi comuni scenari di condivisione, manualmente o completamente automatizzati con Terraform.

Obiettivi

  • Comprendere i benefici della condivisione delle risorse tra gli account
  • Scopri le diverse tecniche per condividere le risorse tra gli account

Panoramica sulla condivisione delle risorse

Non è raro trovare l'accesso a più applicazioni e utilizzare la stessa risorsa o parti di essa. Un esempio è quando le applicazioni e gli ambienti di calcolo devono vivere sulla stessa rete aziendale. Un altro scenario è che i log di sicurezza vengono raccolti nella memoria centrale. In un'architettura di microservizio, ci richiede di configurare i servizi per accedere e utilizzare risorse esterne. A loro volta, le risorse condivise devono autorizzare l'accesso e la rete tra loro è configurata per supportare tale collaborazione, ma non di più.

Alcuni casi di utilizzo tipici di condivisione delle risorse sono:

  • Gestione centrale dell'infrastruttura di sicurezza. Monitora la sicurezza da un account dedicato e aggrega i log di protezione in un singolo luogo. Gestire tutte le chiavi di crittografia in KMS (central key management systems).
  • Coordinamento di indirizzi di rete e sottoreti. Le applicazioni e gli ambienti di elaborazione devono adattarsi alla stessa rete e richiedere la condivisione di intervalli di indirizzi e nomi di dominio.
  • Gestione centrale delle risorse per il ripristino di emergenza, inclusi i servizi di backup come IBM Cloud Backup for Classic. Le applicazioni e i relativi servizi possono essere progettati per l'alta disponibilità, ma nel peggiore dei casi potrebbero essere disponibili ulteriori risorse organizzate a livello centrale. Ciò include la conservazione di più copie di risorse disponibili in tutto il mondo, ad esempio, memorizzate in replicati Object Storage bucket.
  • Controlla i costi condividendo servizi più costosi dove possibile. Non tutti i progetti di sviluppo devono avere tutti i servizi distribuiti come istanze dedicate. Spesso, è sufficiente condividere le istanze del servizio - all'interno degli account o tra di essi. Anche per gli ambienti di produzione, le istanze del servizio potrebbero essere condivise in base al fattore costo / valore e alla fattibilità tecnica. Questo può essere organizzato limitando i servizi disponibili in un account utilizzando cataloghi privati e limitando il catalogo pubblico, quindi fornendo centralmente istanze di servizi limitati.
  • Gestione centrale delle risorse a livello aziendale o per un'unità aziendale. Questo potrebbe essere un asset necessario per il branding o i modelli gestiti centralmente, le immagini di base (macchine virtuali, contenitori) e altro ancora. Di nuovo, i cataloghi privati e Container Registry sono servizi tipici.
  • Rendere disponibili risorse scarse a più utenti. A volte, un tipo di risorsa è disponibile solo in quantità limitata. Condividendo, più applicazioni possono trarne vantaggio. Ciò può richiedere una limitazione della frequenza.

Condivisione delle risorse di sicurezza

Spesso, la sicurezza viene gestita a livello aziendale con regole a livello aziendale. Pertanto, l'applicazione è gestita anche a livello centrale. Questo è ancora vero con i workload che si spostano in ambienti cloud. La condivisione delle risorse è alla base della gestione centralizzata della sicurezza e della valutazione e dell'applicazione della conformità.

Condivisione di risorse relative alla sicurezza
Condivisione di risorse relative alla sicurezza

Il diagramma precedente mostra i seguenti scenari:

  1. Le istanze di Object Storage e Databases for MongoDB in Account A e Account B utilizzano le chiavi di crittografia gestite nell'account principale in Key Protect.
  2. Security and Compliance Center in Account principale gestisce le risorse in tutti i tre account (vedi le righe nere sopra).
  3. Le istanze di IBM Cloud Activity Tracker Event Routing nell'account A e nell'account B indirizzano i registri di audit a IBM Cloud Logs nell'account principale (vedere le linee blu sopra). Il IBM Cloud Logs è configurato per persistere i log di audit per soddisfare i requisiti di analisi e aziendali.

La condivisione può essere tra account in un IBM Cloud Enterprise o senza un'organizzazione aziendale formale.

Gestione delle chiavi di crittografia

In quasi tutti gli ambienti, i dati vengono memorizzati crittografati. Per impostazione predefinita, la crittografia è gestita dal fornitore, il che significa che la chiave di crittografia viene fornita e gestita dal fornitore cloud. Per aumentare la sicurezza, i clienti possono utilizzare le loro chiavi utilizzando un servizio di gestione delle chiavi (KMS). In IBM Cloud, il KMS può essere ubicato nello stesso account o in un altro account come il servizio utilizzando una chiave di crittografia. Ciò consente di gestire centralmente le chiavi di codifica per tutti gli account aziendali. In questo modo, è possibile monitorare l'utilizzo e invalidare le chiavi di codifica quando necessario.

Key Protect e Hyper Protect Crypto Services supportano questo pattern di distribuzione. Puoi configurare l'accesso a un'intera istanza o, per una sicurezza avanzata, a singoli Portachiavi - una collezione di chiavi. Hyper Protect Crypto Services con Unified Key Orchestrator ti consente anche di orchestrare le chiavi di crittografia tra i keystore in diversi provider cloud.

Security and Compliance Center

Il Security and Compliance Center offre la funzione di gestione Posture. Consente di monitorare gli ambienti implementati per la sicurezza e valutarli rispetto agli obiettivi di conformità. In un'azienda, puoi definire gli ambiti per monitorare e valutare più account o gruppi di account da un'istanza centrale.

IBM Cloud Logs

IBM® Cloud Logs permette di gestire i log del sistema operativo, delle applicazioni, della piattaforma e di audit e fornisce funzionalità di ricerca e filtraggio. L'opzione IBM® Cloud Logs Routing è usata per instradare i log della piattaforma verso un'istanza IBM Cloud Logs o altre istanze supportate. Consolidare per l'analisi in un contesto più ampio, migliorando così gli approfondimenti (sulla sicurezza). Configurare la persistenza nei propri bucket Object Storage per l'archiviazione a lungo termine. Vedere la sezione Instradamento dei registri che descrive gli obiettivi specifici dei tenant e degli account.

IBM Cloud Activity Tracker Event Routing

Tutti i servizi IBM Cloud producono eventi per azioni legate alla sicurezza. Utilizzando IBM Cloud Activity Tracker Event Routing, i record di sicurezza possono essere centralizzati in una o poche istanze di IBM Cloud Logs con archiviazione a lungo termine nei bucket Object Storage gestiti dall'utente. Aggregando tutti i record in un'unica ubicazione, gli eventi di sicurezza possono essere facilmente correlati e quindi aumentare le informazioni sugli incidenti o anche consentire un rilevamento precoce.

Condivisione delle risorse di rete

La progettazione e lo sviluppo di app native cloud in un contesto aziendale spesso implica il coordinamento delle risorse di rete come intervalli di indirizzi e sottoreti, nomi di dominio e instradamento del traffico. I diversi account, le applicazioni e gli ambienti di elaborazione devono adattarsi alla rete e alla sua struttura. Ciò richiede la condivisione delle risorse di rete.

Condivisione di risorse di rete
Condivisione di risorse

  1. Il servizio Transit Gateway è utilizzato per interconnettere gli ambienti VPC e l'infrastruttura classica tra i tre account.
  2. Ogni account ha una istanza DNS Services per gestire i nomi di dominio privati. Le istanze sono connesse per condividere le zone DNS.

DNS Services

Puoi utilizzare DNS Services per risolvere gli indirizzi privati (nomi di dominio) dalle risorse distribuite in IBM Cloud. I nomi dominio non possono essere risolti da Internet pubblico. Una zona DNS è una raccolta di nomi di dominio ed è composta da record di risorse DNS. Le zone DNS e i relativi record possono essere utilizzati da altri conti, stabilendo così zone collegate.

Transit Gateway

Il servizio Transit Gateway consente di stabilire la connettività tra gli ambienti IBM Cloud, inclusi l'infrastruttura classica e VPC (Virtual Private Clouds). Puoi anche collegare gli ambienti ospitati in account diversi. I dati che passano attraverso la rete privata Transit Gateway rimangono nella rete privata IBM Cloud e non sono esposti a Internet pubblico.

Implementazione della condivisione delle risorse

Come indicato nell'introduzione, è prassi comune accedere ai servizi al di fuori di un account (cloud). A seconda del livello di integrazione, esistono diversi modi per autorizzare l'accesso al servizio e implementare l'autenticazione. Le opzioni disponibili sono illustrate di seguito.

Autenticazione con password o chiavi API

Molte risorse consentono la generazione di più credenziali. Di solito, sono costituiti da una combinazione di identità utente (ID) e password o solo da una singola chiave API. Spesso, è possibile specificare la serie di privilegi per le credenziali, ad esempio, per consentire l'accesso in sola lettura o l'ambito a cui è possibile accedere, modificare o anche creare ed eliminare. Le credenziali vengono quindi importate o configurate per un servizio o un'applicazione dipendente per accedere a tale risorsa. Anche se l'accesso è possibile, la configurazione richiede un certo lavoro (manuale) e nel complesso sono solo debolmente accoppiati o integrati.

All'interno di IBM Cloud, alcuni servizi di elaborazione inclusi Code Engine e Kubernetes Service consentono la creazione e configurazione automatica delle credenziali, il cosiddetto bind del servizio.

Autorizzazione service - to - service

Un approccio integrato più stretto per un servizio che accede ad un altro è quello di stabilire le autorizzazioni service - to - service(autorizzaziones2s). Crei una politica IAM (Identity and Access Management) IBM Cloud che autorizza un servizio di origine ad accedere a un servizio di destinazione. Poiché l'autenticazione viene eseguita identificando il servizio di origine che richiede l'accesso, non sono necessarie credenziali sotto forma di parole d'ordine o chiavi API. L'autenticazione e l'autorizzazione vengono gestite automaticamente a causa della politica IAM creata.

Autorizzazioni tra conti

IAM supporta la creazione di autorizzazioni service - to - Service tra un servizio di origine in un altro conto IBM Cloud e una destinazione in quello corrente. Pertanto, consente la condivisione di risorse tra account creando una politica di autorizzazione IAM. Tali politiche possono essere create in molti modi, incluso nella console del browser, come mostrato di seguito, utilizzando la CLI o eseguendo il codice Terraform.

Nei seguenti esempi, a una specifica istanza Object Storage nell'account origine viene concesso il ruolo Reader per tale istanza Key Protect identificata nell'account corrente.

Concessione di un'autorizzazione service - to - service
Concessione di un'autorizzazione service - to - service

Quanto segue mostra il codice Terraform per la creazione di una risorsa con la stessa politica di autorizzazione IAM:

resource "ibm_iam_authorization_policy" "cross_account_policy" {
  source_service_account      = data.ibm_iam_account_settings.account_a_settings.account_id
  source_service_name         = "cloud-object-storage"
  source_resource_instance_id = data.ibm_resource_instance.cos_resource_instance.guid

  target_service_name         = "kms"
  target_resource_instance_id = data.ibm_resource_instance.kms_resource_instance.guid

  roles                       = ["Reader"]
  description                 = "read access on Key Protect in Main Account for Account A"
}

La stessa politica di autorizzazione può essere creata utilizzando la CLI IBM Cloud con il comando iam service - policy - create:

ibmcloud iam authorization-policy-create cloud-object-storage kms Reader --source-service-account source_account_id --source-service-instance-id cos_instance_id --target-service-instance-id kms_instance_id

La console, il fornitore Terraform e la CLI utilizzano tutti l'API di gestione della politica IAM per creare la politica.

Come passo successivo, con la politica di autorizzazione in atto, potrebbe essere creato un bucket di archiviazione codificato utilizzando una chiave root Key Protect. Quanto segue mostra il codice Terraform che utilizza la risorsa ibm_cos_bucket. L'attributo key_protect contiene il CRN della chiave root.

resource "ibm_cos_bucket" "cos_bucket" {
  bucket_name          = "cos-bucket"
  resource_instance_id = data.ibm_resource_instance.cos_resource_instance.id
  region_location      = var.region
  key_protect          = data.ibm_kms_key.central_kms_root_key.id
  storage_class        = "smart"
}

Puoi trovare ulteriori esempi nel repository GitHub cross - account - resource - sharing.

Autorizzazioni tipiche da servizio a servizio

Una dipendenza da un KMS (key management service) come Key Protect e Hyper Protect Crypto Services è tipica per soluzioni basate sul cloud. Un'istanza KMS contiene chiavi root per la crittografia gestita dal cliente. La maggior parte dei servizi supporta chiavi di crittografia controllate dal cliente. Invece di cloud - object - storage (Object Storage) nell'esempio precedente, molti altri servizi possono utilizzare un'istanza KMS condivisa tra gli account.

Altri servizi tipici (di destinazione) per l'autorizzazione service - to - service e candidati per la condivisione delle risorse includono:

  • Object Storage: diversi servizi richiedono o sono in grado di archiviare dati e file di log in un bucket di archiviazione. Ciò include l'archiviazione dei log di accesso e dei dati di monitoraggio. Altri servizi devono accedere ai bucket per eseguire l'analisi dei dati. E ancora un'altra categoria di servizi ha bisogno di accesso per sottoscrivere notifiche di modifica per attivare l'esecuzione delle azioni.
  • Event Notifications: per inviare informazioni sugli eventi ai sottoscrittori, le istanze del servizio devono accedere a un'istanza Event Notifications.
  • Secrets Manager: questo servizio archivia e fornisce ad altri servizi chiavi API IAM, certificati SSL/TLS e altri segreti. Pertanto, i servizi dipendenti (origine) devono accedere a Secrets Manager.
  • Cloud Internet Services (CIS): gestisce i nomi dominio e altri dati di rete e, quindi, può essere utilizzato per, ad esempio, la convalida del certificato.
  • IBM Cloud Logs Routing e IBM Cloud Activity Tracker Event Routing: necessita dell'accesso del servizio a obiettivi come IBM Cloud Logs.

Notare che l'elenco precedente non è completo.

Riepilogo

Accedere alle risorse in account diversi, anche condividere le risorse è una pratica comune. Esistono diversi casi di utilizzo in cui gli utenti traggono vantaggio dalla condivisione delle risorse. Sono stati discussi nella panoramica. Una combinazione di identità utente e password o una chiave API per accedere a una risorsa spesso serve come autenticazione. L'accesso può essere limitato ad una serie di privilegi, ad esempio, consentendo solo l'accesso in lettura o altre azioni limitate. A volte, questo tipo di credenziali può essere creato e gestito dalla risorsa di accesso come un'applicazione o un ambiente di calcolo ("bind del servizio"). Un'integrazione ancora più stretta che non richiede credenziali è il concetto di autorizzazione service - to - service IBM Cloud. La risorsa di accesso (origine) e la risorsa a cui si accede (destinazione) sono identificate dalle relative proprietà (autenticazione) e viene assegnato un ruolo di accesso (autorizzazione). Tale relazione può essere stabilita anche oltre i confini del conto. Ciò consente una condivisione delle risorse tra account semplice da configurare, ma allo stesso tempo sicura.

Riepilogo delle funzionalità di condivisione e riutilizzo dei servizi
service Funzionalità
Sicurezza e osservabilità
Security and Compliance Center Scansione di più account o gruppi di account in un'azienda
IBM Cloud Activity Tracker Event Routing Indirizzare gli eventi IBM Cloud Activity Tracker Event Routing a un altro account e consolidare i dati degli eventi
IBM Cloud Logs Routing Indirizza i log a una destinazione come IBM Cloud Logs o Event Streams
Key Protect Utilizza le autorizzazioni service - to - service per condividere chiavi di crittografia. Organizzare le chiavi nei file di chiavi per semplificare la gestione e migliorare la sicurezza.
Hyper Protect Crypto Services Utilizza le autorizzazioni service - to - service per condividere chiavi di crittografia. Organizzare le chiavi nei file di chiavi per semplificare la gestione e migliorare la sicurezza.
Hyper Protect Crypto Services con Unified Key Orchestrator Collega la tua istanza Hyper Protect Crypto Services ai keystore in IBM Cloud e cloud di terze parti.
Secrets Manager Integrazioni per Secrets Manager
Rete
Transit Gateway Connetti tra account con Transit Gateway
DNS Services Condivisione di zone DNS tra account in DNS Services
Impostazioni account
Catalogo Limitazione dei servizi disponibili in un account utilizzando cataloghi privati e limitando il catalogo pubblico
Database
IBM Cloudant Replica dati tra account
Cloud Databases Ripristina backup tra account

Puoi trovare esempi di codice su come configurare la condivisione delle risorse per parte di questo servizio nel repository GitHub cross - account - resource - sharing.