Gestione dell'autenticazione alle tue istanze Event Streams
Event Streams supporta due meccanismi SASL (Simple Authentication and Security Layer) come metodi di autenticazione per Event Streams per impostazione predefinita: PLAIN e OAUTHBEARER.
Il client Kafka configurato con SASL PLAIN usa una chiave API IAM come password di testo semplice nel processo di autenticazione, Event Streams invia la chiave API a IAM per la verifica. Una volta autenticato, questo client manterrà la connessione e non richiederà una nuova autenticazione fino a quando non è disconnesso e non desidera riconnettersi.
Il client Kafka configurato con SASL OAUTHBEARER utilizza il token di accesso IAM nel processo di autenticazione, Event Streams verifica il token tramite la chiave pubblica IAM. Poiché un token di accesso IAM ha una scadenza (di solito a 1 ora), il client Kafka è richiesto per rigenerare un nuovo token e ripetere il processo di autenticazione quando il token precedente si sta avvicinando alla scadenza. Questo approccio fornisce una maggiore sicurezza rispetto a SASL PLAIN in due modi:
- La chiave API rimane sempre sul lato client per generare il token di accesso e non viene più inviata ai broker Kafka sulla rete, il che elimina il rischio di esposizione della chiave API.
- Il processo di autenticazione si verifica su base regolare quando il token di accesso è in scadenza e ciò riduce al minimo il rischio di esposizione del token.
Per un'autenticazione più sicura, SASL OAUTHBEARER è l'unico metodo di autenticazione consigliato per i clienti Kafka. Vedi Configurazione del tuo client API Kafka come configurare SASL OAUTHBEARER nei client Kafka.
Gli utenti aziendali hanno la possibilità di disabilitare SASL PLAIN nelle istanze aziendali. Utilizza il seguente comando:
ibmcloud resource service-instance-update <instance-name> -p '{"iam_token_only":true}'
Connessione a Event Streams
Per ulteriori informazioni su come ottenere una credenziale chiave di sicurezza per un'applicazione esterna, consultare Connessione a Event Streams.
Gestione dell'autorizzazione per le tue risorse Event Streams
Puoi proteggere le tue risorse Event Streams in modo dettagliato per gestire l'accesso che vuoi concedere a ogni utente per ogni risorsa.
Quando si modificano i criteri e le autorizzazioni IAM, a volte ci vogliono alcuni minuti prima che si riflettano nel servizio sottostante.
Cosa posso proteggere?
All'interno di Event Streams, si ha accesso sicuro alle seguenti risorse:
- Cluster (cluster): È possibile controllare quali applicazioni e utenti possono connettersi al servizio.
- Argomenti (topic): È possibile controllare la capacità di utenti e applicazioni di creare, eliminare, leggere e scrivere su un argomento.
- Gruppi di consumatori (gruppo): È possibile controllare la capacità di un'applicazione di unirsi a un gruppo di consumatori.
- Transazioni del produttore (txnid): È possibile controllare la capacità di utilizzare la funzionalità di produttore transazionale in Kafka (cioè, scritture singole e atomiche su più partizioni).
I livelli di accesso (detti anche ruoli) che si possono assegnare a un utente per ogni risorsa sono i seguenti.
| Ruolo di accesso | Descrizione delle azioni | Azioni di esempio |
|---|---|---|
| Lettore | Eseguire azioni di sola lettura all'interno di Event Streams, come la visualizzazione delle risorse. | Consentire a un'applicazione di connettersi a un cluster assegnando l'accesso in lettura al tipo di risorsa del cluster. |
| Scrittore | Gli scrittori hanno permessi che vanno oltre il ruolo di lettore, compresa la modifica delle risorse Event Streams. | Consentire a un'applicazione di produrre sugli argomenti assegnando l'accesso in scrittura ai tipi di risorsa e di nome dell'argomento. |
| Gestore | I gestori hanno autorizzazioni che vanno oltre quelle del ruolo scrittore per completare delle azioni privilegiate. Puoi inoltre creare e modificare risorse Event Streams. | Consentire l'accesso completo a tutte le risorse assegnando l'accesso manage all'istanza Event Streams. |
Come assegno l'accesso?
Le politiche Cloud IAM (Identity and Access Management) sono collegate alle risorse da controllare. Ogni criterio definisce il livello di accesso che un determinato utente deve avere e a quale risorsa o insieme di risorse. Una politica consiste nelle seguenti informazioni:
- Il tipo di servizio a cui si applica la politica. Ad esempio, Event Streams. Puoi definire l'ambito di una politica per includere tutti i tipi di servizio.
- L'istanza del servizio da proteggere. Puoi definire l'ambito di una politica per includere tutte le istanze di un tipo di servizio.
- Il tipo di risorsa da proteggere. I valori validi sono
cluster,topic,group,schemaotxnid. La specifica di un tipo è facoltativa. Se non specifichi un tipo, la politica si applica allora a tutte le risorse nell'istanza del servizio. Se vuoi specificare più di un tipo di risorsa, devi creare una politica per risorsa. - La risorsa da proteggere. Specificare per le risorse di tipo
topic,group,schemaetxnid. Se non specifichi la risorsa, la politica si applica allora a tutte le risorse del tipo specificato nell'istanza del servizio. - Il ruolo assegnato all'utente. Ad esempio, Lettore, Scrittore o Gestore.
Per ulteriori informazioni su IAM, vedi IBM Cloud Identity and Access Management.
Per un esempio di come impostare i criteri, vedere IBM Cloud IAM Service IDs and API Keys.
Utilizzo di caratteri jolly
Puoi avvalerti della funzionalità di utilizzo dei caratteri jolly IAM per impostare le politiche per i gruppi di risorse su Event Streams. Ad esempio, se si assegnano a tutti gli argomenti nomi come Dept1_Topic1 e Dept1_Topic2,
è possibile impostare criteri per gli argomenti che si chiamano Dept1_* e questi criteri vengono applicati a tutti gli argomenti con quel prefisso. Per ulteriori informazioni, vedere Assegnazione dell'accesso tramite criteri jolly.
Quali sono le impostazioni di sicurezza predefinite?
Per impostazione predefinita, quando viene eseguito il provisioning di Event Streams, all'utente che ne ha eseguito il provisioning viene concesso il ruolo di gestore per tutte le risorse dell'istanza. Inoltre, qualsiasi utente che abbia un ruolo di manager per i servizi "Tutti" o "Tutte" le istanze del servizio Event Streams nello stesso account ha accesso completo.
È quindi possibile applicare altri criteri per estendere l'accesso ad altri utenti. Puoi definire l'ambito di una politica da applicare a Event Streams nel suo inseme oppure a singole risorse in Event Streams. Per ulteriori informazioni, vedere Azioni comuni.
Solo gli utenti con un ruolo di amministrazione per un account possono assegnare criteri agli utenti. Assegnare le politiche utilizzando il dashboard IBM Cloud oppure utilizzando i comandi ** ibmcloud **.
Azioni comuni
Le seguenti tabelle riepilogano alcune azioni comuni Event Streams e l'accesso che devi assegnare.
Requisiti cluster
Controllando l'accesso alla risorsa cluster, è possibile stabilire quali applicazioni e utenti possono connettersi al servizio. Oltre alle politiche richieste per i seguenti tipi di risorsa, è richiesto l'accesso a ResourceType: Cluster e a Role: Reader, Writer, Manager.
Azioni del produttore
La seguente tabella descrive i requisiti di ruolo e di risorsa necessari a un utente o a una applicazione che produce messaggi a Event Streams. Oltre alle politiche richieste per questo tipo di risorsa, è richiesto l'accesso a ResourceType: Cluster e a Role: Reader, Writer, Manager.
| Azioni del produttore | Argomento | Gruppo | txnid |
|---|---|---|---|
| Inviare un messaggio a un argomento. | Scrittore | Scrittore [1] | |
| Consentire a un'applicazione di produrre su un argomento in modo transazionale. | Scrittore | Lettore | Scrittore |
| Inizializza una transazione. | Scrittore | ||
| Eseguire il commit di una transazione. | Scrittore | Scrittore | |
| Interrompere una transazione. | Scrittore | ||
| Inviare offset a una transazione. | Lettore | Scrittore |
Azioni del consumer
La seguente tabella descrive i requisiti del ruolo e della risorsa necessari a un utente o a un'applicazione che utilizza i messaggi da Event Streams. Oltre alle politiche richieste per questo tipo di risorsa, è richiesto l'accesso a ResourceType: Cluster e a Role: Reader, Writer, Manager.
| Azioni del consumer | Argomento | Gruppo | txnid |
|---|---|---|---|
| Consentire a un'applicazione di consumare un argomento (gruppo di consumatori). | Lettore | Lettore [2] | |
| Consentire a un'app di connettersi e consumare da un argomento specifico (nessun gruppo di consumatori). | Lettore | ||
| Consentire a un'app di connettersi e consumare da qualsiasi argomento (nessun gruppo di consumatori). | Lettore | ||
| Utilizza stream Kafka. | Gestore | Lettore | |
| Eliminare il gruppo di consumatori. | Gestore | ||
| Assegna. | Lettore | ||
| Commit asincrono. | Lettore | Lettore | |
| Sincronizzazione commit. | Lettore | Lettore | |
| Applica ribilanciamento. | Lettore | ||
| Scansione ciclica. | Lettore | ||
| Sottoscrivi. | Lettore | ||
| Annulla sottoscrizione. | Lettore | Scrittore |
Azioni di amministrazione
Oltre alle politiche richieste per questo tipo di risorsa, è richiesto l'accesso a ResourceType: Cluster e a Role: Reader, Writer, Manager.
| Azioni di amministrazione | Argomento | Gruppo | txnid |
|---|---|---|---|
| Modificare le configurazioni degli argomenti. | Gestore | ||
| Modifica gli offset del gruppo di consumatori. | Lettore | Lettore | |
| Creare partizioni. | Gestore | ||
| Creare argomenti. | Gestore | ||
| Eliminare gli offset del gruppo di consumatori. | Lettore | Gestore | |
| Eliminare i gruppi di consumatori. | Gestore | ||
| Eliminare i record. | Gestore | ||
| Elimina argomenti. | Gestore | ||
| Descrivere i produttori. | Lettore | ||
| Produttori di recinzioni. | Scrittore | ||
| Modificare in modo incrementale le configurazioni degli argomenti. | Gestore | ||
| Rimuovere i membri dal gruppo consumer. | Lettore |
Azioni registro schema
Con le azioni Registro di schema, è possibile modificare la versione dello schema, ad esempio creare, aggiornare ed eliminare le versioni della risorsa utente o della risorsa utente (solo piano Enterprise). Risorsa utente è il termine
che Event Streams utilizza per descrivere gli schemi correlati, spesso associati e utilizzati da un particolare argomento Kafka. Il termine soggetto viene utilizzato spesso per descrivere lo stesso concetto. Per ulteriori informazioni,
consultare Utilizzo di Event Streams Schema Registry. Oltre alle politiche richieste per questo tipo di risorsa, è richiesto l'accesso a ResourceType: Cluster e a Role: Reader, Writer, Manager.
| Azioni registro schema | Schema |
|---|---|
| Ottieni l'ultima risorsa utente. | Lettore |
| Elenca versioni. | Lettore |
| Ottieni versione. | Lettore |
| Ottenere i metadati in base al contenuto. | Lettore |
| Richiama metadati. | Lettore |
| Richiamare i metadati della versione. | Lettore |
| Richiamare la stringa di schema identificata dall'ID input. | Lettore |
| Richiamare solo lo schema identificato dall'ID di input. | Lettore |
| Ottieni le coppie soggetto - versione identificate dall'ID input. | Lettore |
| Ottenere un elenco di versioni registrate sotto l'oggetto specificato. | Lettore |
| Ottenere la regola di compatibilità della risorsa utente. | Lettore |
| Ottenere una versione specifica dello schema registrato in questo oggetto. | Lettore |
| Ottenere lo schema per la versione specificata di questo oggetto. | Lettore |
| Registrare un nuovo schema sotto l'oggetto specificato (se la versione esiste già). | Lettore |
| Controllare se uno schema è già stato registrato nell'oggetto specificato. | Lettore |
| Ottenere un elenco di ID degli schemi che fanno riferimento allo schema con l'oggetto e versione forniti. | Lettore |
| Verificare la compatibilità dello schema di input rispetto a una particolare versione dello schema di un soggetto. | Lettore |
| Eseguire un controllo di compatibilità sullo schema rispetto a una o più versioni nell'oggetto. | Lettore |
| Ottenere il livello di compatibilità per un oggetto. | Lettore |
| Registrare un nuovo schema nel soggetto specificato (se la versione deve essere creata). | Scrittore |
| Crea risorsa utente. | Scrittore |
| Aggiorna risorsa utente. | Scrittore |
| Disabilitare la risorsa utente. | Scrittore |
| Crea versione. | Scrittore |
| Elimina versione. | Gestore |
| Aggiornare lo stato della risorsa utente. | Gestore |
| Aggiorna stato versione. | Gestore |
| Elimina risorsa utente. | Gestore |
| Creare la regola di compatibilità della risorsa utente. | Gestore |
| Aggiornare la regola di compatibilità della risorsa utente. | Gestore |
| Aggiornare il livello di compatibilità per l'oggetto specificato. | Gestore |
| Eliminare la regola di compatibilità della risorsa utente. | Gestore |
| Elimina il soggetto specificato e il relativo livello di compatibilità associato, se registrato. | Gestore |
| Eliminare una versione specifica dello schema registrato in questo oggetto. | Gestore |
| Elimina la configurazione del livello di compatibilità del livello oggetto specificato e ritorna al valore predefinito globale. | Gestore |
| Aggiornare la regola di compatibilità globale. [3] | |
| Aggiornare il livello di compatibilità globale. [4] |
Azioni di compatibilità registro dello schema
Per l'interoperabilità con le applicazioni esistenti, il registro dello schema Event Streams supporta una sottoserie dell'API Confluent Schema Registry v7.2. Per eseguire queste operazioni, hai bisogno del seguente accesso a livello di risorsa.
| Azioni di compatibilità registro dello schema | Schema |
|---|---|
| Richiamare la stringa di schema identificata dall'ID input. | Lettore |
| Richiama solo lo schema identificato dall'ID di input. | Lettore |
| Ottenere i tipi di schema registrati con il registro schema. | |
| Ottieni le coppie soggetto - versione identificate dall'ID input. | Lettore |
| Ottenere un elenco di soggetti registrati. | |
| Ottenere un elenco di versioni registrate sotto l'oggetto specificato. | Lettore |
| Elimina il soggetto specificato e il relativo livello di compatibilità associato, se registrato. | Gestore |
| Ottenere una versione specifica dello schema registrato in questo oggetto. | Lettore |
| Ottenere lo schema per la versione specificata di questo oggetto. | Lettore |
| Registrare un nuovo schema nell'oggetto specificato. | Lettore / Scrittore [5] |
| Controllare se uno schema è già stato registrato nell'oggetto specificato. | Lettore |
| Elimina una versione specifica dello schema registrato in questo oggetto. | Gestore |
| Ottenere un elenco di ID degli schemi che fanno riferimento allo schema con l'oggetto e versione forniti. | Lettore |
| Verificare la compatibilità dello schema di input rispetto a una particolare versione dello schema di un soggetto. | Lettore |
| Eseguire un controllo di compatibilità sullo schema rispetto a una o più versioni nell'oggetto. | Lettore |
| Aggiornare il livello di compatibilità globale. [6] | |
| Ottenere il livello di compatibilità globale. | |
| Aggiornare il livello di compatibilità per l'oggetto specificato. | Gestore |
| Ottenere il livello di compatibilità per un oggetto. | Lettore |
| Elimina la configurazione del livello di compatibilità del livello oggetto specificato e ritorna al valore predefinito globale. | Gestore |
Gestione dell'accesso al registro dello schema
Il modello di autorizzazione per Schema Registry utilizza lo stesso stile di politiche descritte nella sezione Gestione dell'autorizzazione per le tue risorse Event Streams di questo documento.
Risorse IAM
Con il nuovo tipo di risorsa schema IAM, è possibile creare politiche che controllano l'accesso utilizzando diversi gradi di granularità, come nei seguenti esempi.
- Uno schema specifico.
- Una serie di schemi selezionata da un'espressione jolly.
- Tutti gli schemi archiviati da un'istanza di IBM Event Streams.
- Tutti gli schemi archiviati da tutte le istanze di IBM Event Streams in un account.
Event Streams ha già il concetto di tipo di risorsa cluster. Viene utilizzato per controllare tutti gli accessi all'istanza del servizio, con il ruolo minimo di Reader richiesto per accedere a qualsiasi endpoint Kafka o HTTPS. Questo utilizzo del tipo di risorsa cluster viene applicato anche al Registro schema, per cui è richiesto un ruolo minimo di Lettore per accedere al registro.