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
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
-
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
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
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
-
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: 30Cet 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.