Aller au contenu principal

Introduction à Supabase

Découvrir Supabase, une base de données dans le Cloud

Notions théoriques

Qu’est-ce que Supabase ?

Supabase est une plateforme open-source qui permet de créer et gérer des bases de données relationnelles, avec une interface moderne et de nombreuses fonctionnalités prêtes à l’emploi.

Supabase repose sur PostgreSQL (https://www.postgresql.org/), un système de gestion de base de données relationnelle puissant et très utilisé dans le monde professionnel.

Supabase est souvent comparée à Firebase (de Google), mais elle présente plusieurs avantages pour les développeurs qui préfèrent les technologies open-source, les bases de données relationnelles, ou qui veulent garder le contrôle sur leurs données.

Voici quelques fonctionnalités principales de Supabase :

  • Base de données PostgreSQL : chaque projet Supabase repose sur une base relationnelle robuste.
  • Éditeur SQL : permet d’écrire et d’exécuter des requêtes SQL.
  • Éditeur de tables : interface graphique pour créer et modifier les tables.
  • Authentification intégrée : gestion des utilisateurs avec email/mot de passe, OAuth, etc.
  • Stockage de fichiers : pour héberger des images, documents, etc.
  • API REST et GraphQL : générées automatiquement pour interagir avec les données.
  • Sécurité avec RLS (Row Level Security) : permet de définir finement qui peut accéder à quoi.
info

Supabase est hébergé sur l’infrastructure cloud (AWS, GCP, etc.), mais il est aussi possible de l’installer en local avec Docker.

Pourquoi utiliser Supabase dans un projet informatique ?

  • Pour centraliser les données d’une application web ou mobile.
  • Pour gérer des utilisateurs avec un système d’authentification intégré.
  • Pour développer rapidement sans devoir tout coder soi-même (API, sécurité, etc.).
  • Pour collaborer sur des projets avec une base de données partagée et accessible en ligne.

Interface de Supabase

Une fois connecté à Supabase, l'interface principale (appelée Dashboard) propose plusieurs sections :

  • Table Editor : interface pour visualiser et modifier les tables et leurs données.
  • SQL Editor : pour exécuter des requêtes SQL.
  • Auth : pour gérer les utilisateurs authentifiés.
  • Storage : pour gérer les fichiers.
  • API : documentation automatique de l’API générée.
  • Settings : pour configurer les clés API, les règles de sécurité, etc.

Création d’un compte Supabase

Pour utiliser Supabase, il faut créer un compte sur https://supabase.com.

L’inscription est gratuite et nécessite une adresse email valide.

astuce

Utiliser une adresse email professionnelle sécurisée, et éviter les adresses jetables ou non respectueuses de vos données personnelles.

Création d’un projet Supabase

Une fois connecté, il est possible de créer un nouveau projet.

Cela génère une instance PostgreSQL hébergée, avec un nom de projet, un mot de passe pour la base de données, et une région de déploiement.

Chaque projet Supabase dispose de :

  • Une URL publique pour accéder à l’API.
  • Une clé API (anon) pour les requêtes côté client.
  • Une clé secrète (service_role) pour les requêtes côté serveur.
attention

Ces clés sont sensibles, en particulier la clé service_role.

Ne jamais partager publiquement (sur GitHub par exemple) la clé service_role.

Bonnes pratiques cyber

  • Utiliser un mot de passe fort (au moins 12 caractères, avec majuscules, minuscules, chiffres et symboles).
  • Activer l’authentification à deux facteurs (2FA).
  • Ne jamais publier les clés API dans un dépôt public (GitHub, etc.).
  • Toujours vérifier les droits d’accès aux données (via RLS ou les permissions de la table).

Exemple pratique

Étapes pour créer un compte et un projet Supabase

Il est possible de créer un projet Supabase en suivant les étapes suivantes :

  1. Aller sur le site :
    Accéder à https://supabase.com et cliquer sur Start your project.

  2. Créer un compte :
    S’inscrire avec une adresse email et un mot de passe sécurisé.

  3. Activer la 2FA :
    Une fois connecté, aller dans les paramètres du compte et activer l’authentification à deux facteurs (via TOTP ou SMS).

  4. Créer un nouveau projet :

    • Cliquer sur New project.
    • Donner un nom au projet (par exemple : ma-base-donnees).
    • Choisir une organisation (créer une nouvelle si nécessaire).
    • Saisir un mot de passe base de données (à conserver précieusement).
    • Choisir une région de déploiement (ex : eu-west-1).
    • Valider la création.
  5. Attendre quelques secondes :
    Supabase va générer l’instance PostgreSQL, configurer l’API et l’interface.

  6. Explorer l’interface :

    • Aller dans Table Editor : aucune table n’est encore créée.
    • Aller dans SQL Editor : possibilité d’écrire des requêtes SQL.
    • Aller dans API : copier l’URL du projet et la clé anon.
  7. Créer une table de test (optionnel) :

    • Dans le SQL Editor, exécuter :
      create table ma_table (
      id serial primary key,
      nom text
      );
    • Vérifier que la table apparaît dans le Table Editor.
  8. Tester l’API REST :

    • Aller dans la section API.
    • Copier l’URL REST et la clé anon.
    • Tester une requête GET via un client HTTP (comme Postman ou curl).

Test de mémorisation/compréhension


Quel est le type de base de données utilisé par Supabase ?


Quel éditeur permet d'écrire des requêtes SQL dans Supabase ?


Quelle clé API ne doit jamais être exposée publiquement ?


Quelle fonctionnalité permet de gérer les utilisateurs dans Supabase ?


Quelle est la meilleure manière de protéger l’accès à son compte Supabase ?


Que permet de faire le Table Editor ?


Quel mot-clé SQL permet de créer une table ?


Quelle URL permet d’accéder à l’API REST générée par Supabase ?


Que signifie l’acronyme 2FA ?


Quelle est la principale utilisation de la clé `anon` dans Supabase ?


Dans quel cas l’utilisation de la clé `service_role` est-elle nécessaire ?


Quelle affirmation est correcte à propos de la clé `anon` ?


Pourquoi la clé `service_role` est-elle considérée comme sensible ?


Où peut-on trouver la clé `anon` dans l’interface Supabase ?


Que risque-t-on si on publie la clé `service_role` sur un dépôt public ?


Quelles sont les deux clés API générées automatiquement lors de la création d’un projet Supabase ?


Quelle bonne pratique est recommandée concernant les clés API dans Supabase ?


Quelle est la différence principale entre la clé `anon` et la clé `service_role` ?


Lors d’un test de l’API REST dans Postman, quelle clé doit-on utiliser pour simuler un accès client classique ?



TP pour réfléchir et résoudre des problèmes

Objectif du TP

Ce TP vous guide pas à pas pour :

  • Créer un compte Supabase sécurisé,
  • Créer un projet Supabase vide,
  • Explorer l’interface Dashboard,
  • Identifier les clés API générées automatiquement,
  • Vérifier que la base est prête à accueillir les prochaines tables.

À la fin de ce TP, vous aurez un projet Supabase fonctionnel, prêt à être utilisé dans les prochaines séances.


Étape 1 — Créer un compte Supabase sécurisé

  1. Rendez-vous sur https://supabase.com.
  2. Cliquez sur Start your project.
  3. Inscrivez-vous avec votre adresse email professionnelle (évitez les adresses jetables).
  4. Choisissez un mot de passe fort :
    • Au moins 12 caractères,
    • Contenant majuscules, minuscules, chiffres et symboles.
  5. Une fois connecté, allez dans les paramètres de votre compte et activez la 2FA (authentification à deux facteurs), en choisissant l’option TOTP (Google Authenticator, Authy, etc.).
Une solution

Étape 2 — Créer un projet Supabase

  1. Une fois connecté, cliquez sur New Project.
  2. Renseignez les champs suivants :
    • Nom du projet : tp-supabase-intro
    • Organisation : créez-en une si besoin.
    • Mot de passe de la base de données : choisissez un mot de passe fort et conservez-le.
    • Région : choisissez eu-west-1 (ou la région la plus proche géographiquement).
  3. Cliquez sur Create new project et attendez que Supabase initialise l’environnement.
Une solution

Étape 3 — Explorer l’interface Dashboard

Une fois le projet créé, vous accédez au Dashboard. Explorez les sections suivantes :

  • Table Editor : vérifiez que la base est vide (aucune table encore créée).
  • SQL Editor : ouvrez-le pour voir où vous pourrez écrire des requêtes SQL.
  • Auth : regardez comment Supabase gère les utilisateurs.
  • Storage : pour héberger des fichiers (images, PDF, etc.).
  • API : repérez l’URL de votre projet et la clé anon.
Une solution

Étape 4 — Identifier et sécuriser les clés API

Rendez-vous dans la section API et repérez :

  • L’URL REST de votre projet,
  • La clé anon (clé publique),
  • La clé service_role (clé secrète).

Notez ces informations dans un fichier .env local (ne pas les publier).

Une solution

Étape 5 — Vérifier que la base est prête à accueillir les tables

  1. Dans le SQL Editor, tapez la requête suivante pour lister les tables existantes dans le schéma public :
    SELECT table_name FROM information_schema.tables 
    WHERE table_schema = 'public';
  2. Vérifiez que la base est vide (aucune table personnalisée n’a encore été créée).
Une solution

Étape 6 — (Optionnel) Créer une table de test pour valider l’environnement

  1. Dans le SQL Editor, créez une table temporaire :
    CREATE TABLE test_table (
    id SERIAL PRIMARY KEY,
    nom TEXT
    );
  2. Rafraîchissez le Table Editor pour vérifier que la table apparaît.
  3. Supprimez-la ensuite :
    DROP TABLE test_table;
Une solution

Fin du TP

Vous avez maintenant :

  • Un compte Supabase sécurisé,
  • Un projet Supabase fonctionnel,
  • Une base de données vide et prête à l’emploi,
  • Les clés API correctement identifiées et protégées.

Vous êtes prêt pour la séance suivante, où vous créerez vos premières tables dans Supabase.