Skip to content
Learni
View all tutorials
Backend

Comment configurer Hasura Enterprise avec Actions en 2026

18 minEXPERT

Introduction

Hasura transforme une base PostgreSQL en API GraphQL instantanée tout en offrant un contrôle fin sur les permissions et la logique métier. En 2026, les entreprises exigent des déploiements enterprise avec Actions personnalisées pour intégrer des microservices et des traitements asynchrones. Ce tutoriel couvre le déploiement avancé, la configuration des permissions row-level et l'implémentation d'Actions sécurisées. Vous apprendrez à gérer les événements et à monitorer les performances en production. Chaque étape inclut des exemples concrets et des fichiers de configuration complets.

Prérequis

  • Docker et Docker Compose v2.20+
  • PostgreSQL 15+ avec extensions
  • Compte Hasura Enterprise ou Cloud
  • Connaissances solides en GraphQL et TypeScript
  • Node.js 20+ pour les handlers d'Actions

Déploiement Docker Enterprise

docker-compose.yml
version: '3.8'
services:
  postgres:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: securepass
      POSTGRES_DB: hasura
    volumes:
      - pgdata:/var/lib/postgresql/data
  hasura:
    image: hasura/graphql-engine:v2.36.0-enterprise
    ports:
      - "8080:8080"
    environment:
      HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:securepass@postgres:5432/hasura
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true"
      HASURA_GRAPHQL_ADMIN_SECRET: myadminsecret
      HASURA_GRAPHQL_UNAUTHORIZED_ROLE: anonymous
    depends_on:
      - postgres
volumes:
  pgdata:

Ce fichier déploie PostgreSQL et Hasura Enterprise avec les variables requises pour la production. Le rôle anonymous est défini pour les requêtes publiques tout en protégeant l'admin secret.

Configuration initiale des métadonnées

Après le démarrage, connectez-vous à la console Hasura et créez les tables. Importez ensuite les métadonnées pour les relations et les permissions de base. Cela pose les fondations avant d'ajouter des Actions.

Définition des permissions avancées

metadata/tables.yaml
-
  table:
    schema: public
    name: articles
  select_permissions:
    -
      role: user
      permission:
        columns: ["id", "title", "content"]
        filter:
          author_id:
            _eq: "X-Hasura-User-Id"

Cette configuration applique un filtre row-level basé sur l'en-tête X-Hasura-User-Id. Seuls les articles de l'utilisateur authentifié sont visibles.

Création d'une Action personnalisée

Les Actions permettent d'étendre le schéma GraphQL avec des résolveurs custom. Nous allons créer une Action qui appelle un microservice externe pour la validation de contenu.

Déclaration de l'Action

metadata/actions.graphql
type Mutation {
  validateContent(content: String!): ValidationResult!
}

type ValidationResult {
  isValid: Boolean!
  errors: [String!]!
}

Cette déclaration étend le schéma GraphQL. Le type ValidationResult sera résolu par un handler externe.

Handler TypeScript pour l'Action

actions/validate.ts
import { Request, Response } from 'express';

export default async (req: Request, res: Response) => {
  const { content } = req.body.input;
  const isValid = content.length > 10 && !content.includes('spam');
  res.json({
    isValid,
    errors: isValid ? [] : ['Contenu trop court ou spam détecté']
  });
};

Le handler Express valide le contenu et retourne le résultat. Déployez-le sur une plateforme serverless et référencez l'URL dans Hasura.

Configuration de l'Event Trigger

metadata/event_triggers.yaml
-
  name: notify_on_article_publish
  table:
    schema: public
    name: articles
  webhook: https://your-webhook.example.com/notify
  insert:
    columns: "*"
  update:
    columns: ["published"]
  retry_conf:
    num_retries: 3
    interval_sec: 30

Cet Event Trigger envoie une notification à chaque publication d'article. La configuration inclut des retries pour garantir la fiabilité en production.

Bonnes pratiques

  • Toujours utiliser des secrets managés et ne jamais exposer l'admin secret
  • Versionner toutes les métadonnées dans Git avec des migrations
  • Limiter les colonnes exposées dans chaque rôle
  • Monitorer les requêtes via les logs et Prometheus
  • Tester les permissions avec le rôle impersonate dans la console

Erreurs courantes à éviter

  • Oublier de configurer les CORS sur les handlers d'Actions
  • Utiliser des filtres permissifs sans validation du user-id
  • Ignorer les limites de rate-limiting sur les webhooks
  • Ne pas activer TLS pour les connexions PostgreSQL en production

Pour aller plus loin

Approfondissez ces concepts avec nos formations Hasura Enterprise. Découvrez également les modules sur les performances et l'observabilité avancée.