Cette page décrit le fonctionnement de Cloud SQL avec les utilisateurs et les rôles PostgreSQL. Les rôles PostgreSQL vous permettent de contrôler le type d'accès et les capacités dont dispose un utilisateur qui accède à votre instance PostgreSQL.
Pour obtenir la documentation complète sur les rôles PostgreSQL, consultez la section consacrée aux rôles de base de données dans la documentation PostgreSQL. Pour en savoir plus sur la création et la gestion des utilisateurs Cloud SQL, consultez la section Créer et gérer des utilisateurs.
Différence entre utilisateurs et rôles
Les rôles PostgreSQL peuvent fonctionner comme un rôle unique ou un groupe de rôles.
Un utilisateur correspond à un rôle doté d'une autorisation de connexion (le rôle possède l'attribut LOGIN
). Comme tous les rôles créés par Cloud SQL possèdent l'attribut LOGIN
, Cloud SQL utilise les termes rôle et utilisateur de manière interchangeable.
Toutefois, si vous créez un rôle à l'aide du client psql
, ce rôle n'est pas nécessairement doté de l'attribut LOGIN
.
Tous les utilisateurs PostgreSQL doivent disposer d'un mot de passe. Vous ne pouvez pas vous connecter avec un utilisateur sans mot de passe.
Restrictions et droits de super-utilisateur
Cloud SQL pour PostgreSQL est un service géré et il restreint l'accès à certaines tables et procédures système qui requièrent des privilèges avancés. Dans Cloud SQL, les clients ne peuvent pas créer d'utilisateurs disposant d'attributs de super-utilisateur ni accéder à ceux-ci.
Vous ne pouvez pas créer d'utilisateurs de base de données disposant de droits de super-utilisateur. Toutefois, vous pouvez créer des utilisateurs de base de données dotés du rôle cloudsqlsuperuser
, qui dispose de certains de ces droits, y compris :
- Créer des extensions nécessitant des droits de super-utilisateur.
- Créer des déclencheurs d'événements.
- Créer des utilisateurs de réplication.
- Créer des publications et des abonnements de réplication.
Exécuter les instructions
CREATE CAST
etDROP CAST
en tant qu'utilisateur de base de données avec le rôlecloudsqlsuperuser
. Toutefois, cet utilisateur doit disposer du droitUSAGE
sur les types de données source et cible. Par exemple, un utilisateur peut créer un cast qui convertit le type de données sourceint
en type de données cibleboolean
.- Avoir un accès complet à la table du catalogue
pg_largeobject
.
Utilisateurs PostgreSQL par défaut
Lorsque vous créez une instance Cloud SQL pour PostgreSQL, l'administrateur par défaut postgres
est créé, mais pas le mot de passe. Vous devez définir un mot de passe pour cet utilisateur avant de pouvoir vous connecter. Vous pouvez le faire dans la console Google Cloud ou à l'aide de la commande gcloud
suivante :
gcloud sql users set-password postgres \ --instance=INSTANCE_NAME \ --password=PASSWORD
L'utilisateur postgres
fait partie du rôle cloudsqlsuperuser
et possède les attributs (privilèges) suivants : CREATEROLE
, CREATEDB
et LOGIN
. Il n'est pas doté des attributs SUPERUSER
ou REPLICATION
.
Un utilisateur par défaut cloudsqlimportexport
est créé et doté de l'ensemble minimal de droits requis pour les opérations d'importation et d'exportation au format CSV. Vous pouvez créer vos propres utilisateurs pour effectuer ces opérations mais, en l'absence de compte créé par vos soins, l'utilisateur par défaut cloudsqlimportexport
est employé. L'utilisateur cloudsqlimportexport
est un utilisateur système, que les clients ne peuvent donc pas utiliser directement.
Utilisateurs IAM Cloud SQL pour l'authentification IAM
Identity and Access Management (IAM) est intégré à Cloud SQL via une fonctionnalité appelée Authentification IAM. Lorsque vous créez des instances à l'aide de cette fonctionnalité, les utilisateurs IAM peuvent se connecter à l'instance à l'aide de leur nom d'utilisateur et de leur mot de passe IAM. L'authentification IAM présente l'avantage de pouvoir utiliser les identifiants IAM existants d'un utilisateur lorsque vous lui accordez l'accès à une base de données. Lorsque l'utilisateur quitte l'organisation, son compte IAM est suspendu, et son accès est automatiquement supprimé.
Autres utilisateurs PostgreSQL
Vous pouvez créer d'autres utilisateurs ou rôles PostgreSQL. Tous les utilisateurs créés à l'aide de Cloud SQL bénéficient du rôle cloudsqlsuperuser
et disposent des mêmes attributs que l'utilisateur postgres
: CREATEROLE
, CREATEDB
et LOGIN
. Vous pouvez modifier les attributs de n'importe quel utilisateur à l'aide de la commande ALTER ROLE.
Si vous créez un utilisateur à l'aide du client psql
, vous pouvez l'associer à un rôle différent ou lui accorder des attributs différents.
Accéder à la vue pg_shadow
et à la table pg_authid
Vous pouvez utiliser la vue pg_shadow
pour utiliser les propriétés des rôles marqués comme rolcanlogin
dans la table du catalogue pg_authid
.
La vue pg_shadow
contient les mots de passe hachés et d'autres propriétés des rôles (utilisateurs) autorisés à se connecter à un cluster. La table du catalogue pg_authid
contient les mots de passe hachés et d'autres propriétés pour tous les rôles de base de données.
Dans Cloud SQL, les clients ne peuvent pas accéder à la vue pg_shadow
ni à la table pg_authid
en utilisant les droits par défaut. Toutefois, l'accès aux noms de rôle et aux mots de passe hachés est utile dans certaines situations, par exemple :
- Pour configurer des proxys ou l'équilibrage de charge avec des utilisateurs et des mots de passe existants
- Pour migrer des comptes utilisateur sans modifier les mots de passe
- Pour mettre en œuvre des solutions personnalisées pour la gestion des règles relatives aux mots de passe
Définir les options de la vue pg_shadow
et de la table pg_authid
Pour accéder à la vue pg_shadow
, définissez l'option cloudsql.pg_shadow_select_role
sur un nom de rôle PostgreSQL. Pour accéder à la table pg_authid
, définissez l'option cloudsql.pg_authid_select_role
sur un nom de rôle PostgreSQL.
Si cloudsql.pg_shadow_select_role
existe, il possède un accès en lecture seule (SELECT
) à la vue pg_shadow
. Si cloudsql.pg_authid_select_role
existe, il dispose d'un accès SELECT
à la table pg_authid
.
Si l'un des rôles n'existe pas, les paramètres n'ont aucun effet, mais aucune erreur ne se produit.
Cependant, une erreur est consignée lorsqu'un utilisateur tente d'accéder à la vue ou à la table.
L'erreur est consignée dans le journal de la base de données PostgreSQL, cloudsql.googleapis.com/postgres.log
.
Pour en savoir plus sur l'affichage de ce journal, consultez la section Afficher les journaux d'instance.
Assurez-vous que les rôles configurés existent et que la valeur de l'option cloudsql.pg_shadow_select_role
ou de l'option cloudsql.pg_authid_select_role
ne contient pas faute de frappe. Vous pouvez également utiliser la fonction pg_has_role
pour vérifier qu'un utilisateur est membre de ces rôles. Des informations sur cette fonction sont disponibles sur la page Fonctions et opérateurs d'informations système.
Vous pouvez utiliser l'option cloudsql.pg_shadow_select_role
ou l'option cloudsql.pg_authid_select_role
avec l'appartenance de rôle PostgreSQL pour gérer l'accès pg_shadow
ou pg_authid
pour plusieurs. utilisateurs.
Les modifications apportées à l'une ou l'autre des options ne nécessitent pas de redémarrer de base de données.
Pour en savoir plus sur les options compatibles, consultez la section Configurer des options de base de données.
Choisir un format de stockage des mots de passe
Cloud SQL pour PostgreSQL stocke les mots de passe utilisateur sous forme hachée.
Vous pouvez utiliser l'option password_encryption
pour définir l'algorithme de chiffrement sur md5
ou scram-sha-256
. L'algorithme md5
offre la compatibilité la plus étendue. scram-sha-256
est quant à lui plus sécurisé, mais peut être incompatible avec les clients anciens.
Lorsque vous activez l'accès pg_shadow
pour exporter les propriétés d'un rôle à partir d'une instance Cloud SQL, pensez à utiliser l'algorithme le plus sécurisé compatible avec vos clients.
Dans la documentation PostgreSQL, consultez également les pages suivantes :
Étapes suivantes
- Créez et gérez des utilisateurs.
- Créez et gérez des bases de données.
- Consultez la documentation PostgreSQL concernant les rôles.
- Découvrez les options de connexion à une instance.