Rôles Snowflake Postgres

Postgres dispose de son propre système d’authentification basé sur les rôles pour gérer les connexions aux bases de données et utiliser les bases de données sur un serveur Postgres. Ces rôles sont distincts des rôles Snowflake. Les rôles Postgres sont utilisés pour accéder et gérer les bases de données, les tables et d’autres objets au sein des instances Snowflake Postgres.

Lorsque vous créez une instance, Snowflake crée automatiquement deux rôles gérés spéciaux que vous pouvez utiliser, décrits ci-dessous.

Pour plus d’informations sur la gestion des rôles Postgres, consultez la documentation Postgres.

Note

Ici et dans de nombreux autres endroits, vous verrez les termes « rôle » et « utilisateur » utilisés de manière interchangeable dans le contexte de la gestion des utilisateurs Postgres. En effet, un utilisateur Postgres est simplement un rôle qui possède l’attribut LOGIN associé au rôle Postgres.

Rôles gérés Snowflake Postgres

Snowflake Postgres fournit deux rôles gérés qui sont automatiquement créés au moment de la création de l’instance.

Le rôle snowflake_admin

Le rôle snowflake_admin est un rôle Postgres à haut privilège utilisé pour administrer votre instance Snowflake Postgres. Il ne s’agit pas d’un super-utilisateur Postgres complet ; certaines opérations restent restreintes et sont gérées par Snowflake. Cependant, il dispose de privilèges élevés qui incluent :

  • Création et gestion de rôles Postgres.

  • Création et gestion de bases de données.

  • Gestion de la réplication pour votre instance Snowflake Postgres.

  • Contournement des politiques de sécurité au niveau des lignes (RLS) le cas échéant.

En outre, snowflake_admin est un membre de plusieurs rôles Postgres intégrés qui offrent des capacités de surveillance et opérationnelles, notamment :

  • pg_signal_backend

  • pg_use_reserved_connections

  • pg_create_subscription

  • pg_read_all_settings

  • pg_read_all_stats

  • pg_stat_scan_tables

  • pg_monitor

  • snowflake_admin_group

Le rôle application

Le rôle application est un rôle non super-utilisateur qui dispose par défaut des autorisations nécessaires pour créer des objets dans la base de données postgres. Les nouvelles autorisations ou la propriété pour ce rôle doivent être accordées par le rôle snowflake_admin.

Sécurité des mots de passe Postgres

Régénération des identifiants de connexion pour les rôles gérés Snowflake Postgres

Les identifiants de connexion pour les rôles snowflake_admin et application sont générés lorsque vous créez l’instance et ne sont affichés qu’une seule fois. Ces identifiants de connexion peuvent être régénérés à tout moment, invalidant les identifiants de connexion existants.

À partir du tableau de bord, vous pouvez régénérer les identifiants de connexion pour le rôle snowflake_admin de votre instance.

  1. Dans le menu de navigation, sélectionnez Postgres.

  2. Sélectionnez votre instance.

  3. Dans le menu Manage en haut à droite, sélectionnez Regenerate credentials.

  4. Cliquez sur le bouton Acknowledge & continue pour confirmer l’action.

Définition de mots de passe pour d’autres rôles Postgres

Les instances Snowflake Postgres sont configurées pour l’authentification par mot de passe scram-sha-256. Lorsque de nouveaux mots de passe sont définis, un hachage scram-sha-258 est généré et stocké par le serveur, mais lorsque le paramètre Postgres log_statement est défini sur une valeur autre que none, alors les commandes CREATE ROLE et ALTER ROLE DDL sont entièrement consignées dans le journal du serveur Postgres. Par conséquent, vous devez vous assurer que les mots de passe en texte clair ne sont pas enregistrés dans le cadre de ces instructions.

Désactivation de la journalisation des instructions pour les commandes DDL Postgres CREATE ROLE et ALTER ROLE

La méthode la plus simple pour empêcher les mots de passe en texte clair utilisés dans les instructions CREATE ROLE et ALTER ROLE DDL d’apparaître dans le journal du serveur Postgres consiste à désactiver le paramètre log_statement pour la transaction dans laquelle vous les exécutez en utilisant SET LOCAL :

BEGIN;
SET LOCAL log_statement = 'none';
CREATE USER mynewrole PASSWORD 'mynewpassword';
COMMIT;
Copy

Utilisation de la commande psql \password du client Postgres

La psql de Postgres dispose d’une méta-commande password <https://www.postgresql.org/docs/current/app-psql.html>_ qui peut être utilisée pour modifier le mot de passe des utilisateurs existants. Elle précalcule le hachage scram-sha-256 du mot de passe saisi et utilise ce dernier dans la commande ALTER ROLE envoyée au serveur. Pour utiliser cette méthode, vous devez d’abord créer de nouveaux utilisateurs sans mot de passe, puis définir le mot de passe de chaque utilisateur avec la méta-commande psql \password.

postgres=# CREATE ROLE mynewrole LOGIN;
CREATE ROLE

postgres=# \password mynewrole
Enter new password for user "mynewrole":
Enter it again:
Copy

Si log_statement est défini sur une valeur autre que « none », alors l’entrée de journal pour la commande ALTER ROLE envoyée par psql pour la commande \password ci-dessus affichera le hachage scram-sha-256 calculé plutôt que le mot de passe réel en texte clair. Cette méthode peut être combinée avec la désactivation complète de log_statement comme décrit ci-dessus, afin d’empêcher même ce hachage d’apparaître dans le journal Postgres :

postgres=# CREATE ROLE mynewrole LOGIN;
CREATE ROLE

postgres=# BEGIN;
BEGIN

postgres=# SET LOCAL log_statement = 'none';
SET

postgres=# \password mynewrole
Enter new password for user "mynewrole":
Enter it again:

postgres=# COMMIT;
COMMIT
Copy

Limitations des rôles

Dans Snowflake Postgres, certaines opérations sont réservées au service lui-même et ne peuvent être effectuées par aucun rôle géré par le client, notamment snowflake_admin. Les exemples incluent :

  • Modification des paramètres de configuration au niveau du serveur protégé gérés par Snowflake

  • Modification ou désactivation des composants ou des extensions de base gérés par Snowflake

  • Accès ou modification des bases de données du système gérées par Snowflake ou des schémas utilisés par le service

  • Accès ou modification du système de fichiers de l’instance Snowflake Postgres

  • Modification directe des tables du catalogue système

  • Création d’autres super-utilisateurs

  • Création de plus de 64 rôles dans l’instance

  • Création de plus de 32 bases de données dans l’instance

  • Exécution de la commande ALTER SYSTEM

  • Accès aux fonctions génériques d’accès aux fichiers Postgres qui autorisent l’accès au système de fichiers.

L’extension Snowflake Postgres peut introduire des restrictions supplémentaires sur ce que snowflake_admin et application peuvent faire dans une instance. Ces limitations spécifiques aux extensions peuvent évoluer avec le temps et seront documentées avec le comportement correspondant de l’extension. Si une opération est bloquée, vous recevrez une erreur indiquant qu’elle n’est pas autorisée dans Snowflake Postgres.