Autenticazione e autorizzazione in Spanner Omni

Questo documento descrive in che modo i deployment di Spanner Omni sicuri controllano l'accesso tramite autenticazione e autorizzazione. Crea e gestisci gli utenti e assegna loro ruoli che definiscono le loro autorizzazioni. Gli utenti possono autenticarsi utilizzando uno dei seguenti metodi:

  • Autenticazione password: utilizza il protocollo OPAQUE per le password. Questo protocollo migliora la sicurezza fornendo token di accesso firmati per le richieste successive.
  • Autenticazione del certificato client: utilizza certificati firmati dalla stessa autorità di certificazione (CA) che ha firmato i certificati del server API. Il Common Name del certificato identifica l'utente.

L'autorizzazione in Spanner Omni utilizza nomi di ruoli e autorizzazioni di Identity and Access Management (IAM), simili a Spanner. Assegni ruoli agli utenti che concedono autorizzazioni specifiche. IAM Spanner Omni è diverso da IAM Spanner. Ad esempio, non supporta i ruoli personalizzati e include autorizzazioni Spanner Omni specifiche.

Utenti

In un deployment sicuro, l'accesso alle API Spanner Omni richiede un utente. Puoi creare, aggiornare ed eliminare utenti utilizzando Spanner Omni CLI. Per impostazione predefinita, ogni deployment Spanner Omni crea un singolo utente admin con la password admin.

Crea utenti

Crea nuovi utenti per poter assegnare ruoli diversi e controllare l'utilizzo. Il seguente comando assegna a un nuovo utente il ruolo roles/spanner.databaseUser in modo che possa leggere e scrivere in un database Spanner Omni.

spanner users create USER_NAME --roles=roles/spanner.databaseUser

Eliminare utenti

Elimina gli utenti obsoleti dal sistema:

spanner users delete USER_NAME

Aggiorna utenti

Aggiorna lo stato e i ruoli di un utente. Questo comando sovrascrive lo stato e i ruoli esistenti:

spanner users update USER_NAME --roles=NEW_ROLES --state=ACTIVE

Autenticazione

In un deployment sicuro, gli utenti devono accedere prima di accedere a un deployment Spanner Omni.

Spanner Omni fornisce due meccanismi per l'autenticazione degli utenti:

Meccanismo Descrizione
Password Gli utenti inseriscono sia il nome utente che la password.
Certificati client I client utilizzano certificati firmati dalla stessa autorità di certificazione (CA) che ha firmato i certificati del server API.

Password

L'autenticazione con password richiede l'inserimento di nome utente e password. Funziona solo quando TLS è abilitato sul server.

spanner auth login USER_NAME

Spanner Omni utilizza un'implementazione del protocollo OPAQUE per evitare l'invio di password al server, il che protegge il sistema da attacchi Man-in-the-Middle. Spanner Omni non memorizza password sul server, quindi l'accesso non intenzionale al server non compromette le credenziali utente. Una volta eseguita l'autenticazione, Spanner Omni restituisce un token di accesso firmato. Allega il token di accesso a tutte le richieste successive. La CLI Spanner Omni memorizza il token di accesso in ~/.config/spanner/access_token/token.txt. Per mantenere la sicurezza del tuo sistema, non condividere questo token con altri.

Per impostazione predefinita, il token di accesso ha una scadenza di 60 minuti. Dopo 60 minuti, il server non accetta il token di accesso e devi accedere di nuovo. Spanner Omni firma il token di accesso per impedire la manomissione.

Per evitare che le password vengano visualizzate in posizioni in cui potresti vederle, ad esempio variabili di ambiente o flag della riga di comando, i comandi Spanner Omni CLI accettano le password in due modi:

  • Prompt che mascherano l'input.
  • Stringhe nei file. Spanner Omni verifica che le autorizzazioni dei file siano 600, sovrascrive i file con dati casuali ed elimina i file dopo la lettura.

Per maggiori dettagli, esegui spanner auth --help.

Certificati client

L'autenticazione del certificato client richiede ai client di utilizzare certificati firmati dalla stessa autorità di certificazione (CA) che ha firmato i certificati del server API. Includi il nome utente di un utente valido e attivo nel campo Common Name del certificato. Durante l'esecuzione dell'autorizzazione, i ruoli che assegni determinano se disponi delle autorizzazioni per eseguire l'operazione richiesta. Per allegare un certificato client a una richiesta, utilizza i flag --ca-certificate-file e --client-certificate-directory. Di seguito è riportato un esempio di elenco di database:

spanner databases list --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR

Puoi anche utilizzare i certificati client per accedere:

spanner auth login USER_NAME --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR

Autorizzazione

Spanner Omni utilizza la maggior parte degli stessi nomi di ruoli e autorizzazioni IAM di Spanner. Quando crei un utente, puoi assegnargli uno o più ruoli. Ogni ruolo contiene una o più autorizzazioni.

Per elencare i ruoli disponibili in Spanner Omni, utilizza il seguente comando:

spanner roles list

Per scoprire di più sulle autorizzazioni IAM in Spanner Omni, consulta la panoramica di IAM.