Authentification et autorisation dans Spanner Omni

Ce document explique comment les déploiements Spanner Omni sécurisés contrôlent l'accès par le biais de l'authentification et de l'autorisation. Vous créez et gérez les utilisateurs, et vous leur attribuez des rôles qui définissent leurs autorisations. Les utilisateurs peuvent s'authentifier à l'aide de l'une des méthodes suivantes :

  • Authentification par mot de passe : utilise le protocole de mot de passe OPAQUE. Ce protocole renforce la sécurité en fournissant des jetons d'accès signés pour les requêtes ultérieures.
  • Authentification par certificat client : utilise des certificats signés par la même autorité de certification que celle qui a signé les certificats du serveur d'API. Le Common Name du certificat identifie l'utilisateur.

L'autorisation dans Spanner Omni utilise des noms de rôles et d'autorisations Identity and Access Management (IAM), comme Spanner. Vous attribuez des rôles aux utilisateurs, ce qui leur accorde des autorisations spécifiques. L'IAM Spanner Omni est différent de l'IAM Spanner. Par exemple, il n'est pas compatible avec les rôles personnalisés et inclut des autorisations Spanner Omni spécifiques.

Utilisateurs

Dans un déploiement sécurisé, un utilisateur est nécessaire pour accéder aux API Spanner Omni. Vous pouvez créer, modifier et supprimer des utilisateurs à l'aide de la CLI Spanner Omni. Chaque déploiement Spanner Omni crée un seul utilisateur admin par défaut avec le mot de passe admin.

Créer des utilisateurs

Créez des utilisateurs pour pouvoir leur attribuer différents rôles et auditer l'utilisation. La commande suivante attribue le rôle roles/spanner.databaseUser à un nouvel utilisateur afin qu'il puisse lire et écrire dans une base de données Spanner Omni.

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

Supprimer des comptes utilisateur

Supprimez les utilisateurs obsolètes du système :

spanner users delete USER_NAME

Mettre à jour les comptes utilisateur

Mettez à jour l'état et les rôles d'un utilisateur. Cette commande écrase l'état et les rôles existants :

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

Authentification

Dans un déploiement sécurisé, les utilisateurs doivent se connecter avant d'accéder à un déploiement Spanner Omni.

Spanner Omni fournit deux mécanismes d'authentification des utilisateurs :

Mécanisme Description
Mots de passe Les utilisateurs saisissent leur nom d'utilisateur et leur mot de passe.
Certificats clients Les clients utilisent des certificats signés par la même autorité de certification (CA) que celle qui a signé les certificats du serveur d'API.

Mots de passe

L'authentification par mot de passe vous oblige à saisir votre nom d'utilisateur et votre mot de passe. Il ne fonctionne que lorsque TLS est activé sur le serveur.

spanner auth login USER_NAME

Spanner Omni utilise une implémentation du protocole OPAQUE pour éviter d'envoyer des mots de passe au serveur, ce qui protège le système contre les attaques de l'homme du milieu. Spanner Omni ne stocke aucun mot de passe sur le serveur. Par conséquent, un accès non autorisé au serveur ne compromet pas les identifiants utilisateur. Une fois l'authentification réussie, Spanner Omni renvoie un jeton d'accès signé. Associez le jeton d'accès à toutes les requêtes suivantes. La CLI Spanner Omni stocke le jeton d'accès dans ~/.config/spanner/access_token/token.txt. Pour la sécurité de votre système, ne communiquez pas ce jeton à d'autres personnes.

Par défaut, le jeton d'accès expire au bout de 60 minutes. Au bout de 60 minutes, le serveur n'accepte plus le jeton d'accès et vous devez vous reconnecter. Spanner Omni signe le jeton d'accès pour éviter toute falsification.

Pour éviter que les mots de passe n'apparaissent là où vous pourriez les voir, comme dans les variables d'environnement ou les options de ligne de commande, les commandes Spanner Omni CLI acceptent les mots de passe de deux manières :

  • Requêtes qui masquent votre saisie.
  • Chaînes dans les fichiers. Spanner Omni vérifie que les autorisations d'accès aux fichiers sont définies sur 600, remplace les fichiers par des données aléatoires et les supprime après les avoir lus.

Pour en savoir plus, exécutez spanner auth --help.

Certificats clients

L'authentification par certificat client exige que les clients utilisent des certificats signés par la même autorité de certification que celle qui a signé les certificats du serveur d'API. Incluez le nom d'utilisateur d'un utilisateur actif et valide dans le champ Common Name du certificat. Lors de l'autorisation, les rôles que vous attribuez déterminent si vous êtes autorisé à effectuer l'opération demandée. Pour joindre un certificat client à une requête, utilisez les options --ca-certificate-file et --client-certificate-directory. Voici un exemple de liste de bases de données :

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

Vous pouvez également utiliser des certificats client pour vous connecter :

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

Autorisation

Spanner Omni utilise la plupart des noms de rôles et d'autorisations IAM de Spanner. Lorsque vous créez un utilisateur, vous pouvez lui attribuer un ou plusieurs rôles. Chaque rôle contient une ou plusieurs autorisations.

Pour lister les rôles disponibles dans Spanner Omni, utilisez la commande suivante :

spanner roles list

Pour en savoir plus sur les autorisations IAM dans Spanner Omni, consultez la présentation d'IAM.