Questo documento descrive in che modo i deployment sicuri di Spanner Omni controllano l'accesso tramite autenticazione e autorizzazione. Puoi creare e gestire gli utenti e assegnare loro ruoli che definiscono le relative autorizzazioni. Gli utenti possono autenticarsi utilizzando uno dei seguenti metodi:
- Autenticazione password: utilizza il protocollo password OPAQUE. Questo protocollo migliora la sicurezza fornendo token di accesso firmati per le richieste successive.
- Autenticazione con certificato client: utilizza certificati firmati dalla stessa
autorità di certificazione (CA) che ha firmato i certificati del server API. Il
Common Namedel certificato identifica l'utente.
L'autorizzazione in Spanner Omni utilizza i nomi di ruoli e autorizzazioni di Identity and Access Management (IAM), in modo simile 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 specifiche di Spanner Omni.
Utenti
In un deployment sicuro, l'accesso alle API Spanner Omni richiede un utente. Puoi creare, aggiornare ed eliminare gli utenti utilizzando la CLI Spanner Omni. Per impostazione predefinita, ogni deployment di Spanner Omni crea un singolo utente admin con la password admin.
Crea utenti
Crea nuovi utenti in modo da 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
Elimina 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 di Spanner Omni.
Spanner Omni fornisce due meccanismi per l'autenticazione degli utenti:
| Meccanismo | Descrizione |
|---|---|
| Password | Gli utenti inseriscono sia il nome utente sia 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 del nome utente e della password. Funziona solo quando TLS è abilitato sul server.
spanner auth login USER_NAME
Spanner Omni utilizza un'implementazione del protocollo OPAQUE per evitare di inviare password al server, proteggendo così il sistema dagli attacchi Man-in-the-Middle. Spanner Omni non memorizza password sul server, quindi l'accesso non intenzionale al server non compromette le credenziali utente.
Dopo 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 sistema, non condividere questo token con altri.
Per impostazione predefinita, il token di accesso ha un tempo di 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 manomissioni.
Per evitare che le password vengano visualizzate in posizioni in cui potresti visualizzarle, ad esempio variabili di ambiente o flag della riga di comando, i comandi della CLI Spanner Omni 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 con certificato client richiede che i client utilizzino 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.
Quando esegui l'autorizzazione, i ruoli che assegni determinano se hai le 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
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 Panoramica di IAM.