Vue d’ensemble
- Les comptes de service peuvent se voir attribuer plusieurs rôles, mais n’activer que celui nécessaire pour une requête donnée.
- Si le compte de service est compromis, les attaquants ne peuvent utiliser que les permissions du rôle actif.
- Un même compte peut exécuter diverses tâches en changeant de rôle, plutôt qu’en nécessitant des identifiants distincts pour chaque tâche.
- Les permissions peuvent être mises à jour pour toute une catégorie de comptes de service en modifiant un seul rôle, au lieu de mettre à jour chaque utilisateur individuellement.
- Les journaux peuvent indiquer précisément quel rôle était actif pendant une requête, ce qui fournit un contexte plus clair pour les audits de sécurité.
- Concevez des rôles qui définissent les limites autorisées (
read_only,maintenance, etc.) - Les accordez au compte de service
- Au moment de la connexion, choisissez le ou les rôles actifs via
SET ROLE(ou le paramètre de rôle), ce qui limite ainsi ce que cette session peut faire
Configurer un rôle de service
1
Accorder des rôles au compte de service
Commencez par créer des rôles avec les privilèges/paramètres souhaités, puis accordez-les au compte de service.2
Utiliser SET ROLE pour définir les limites de la session
Au début d’une session, le compte de service choisit quels rôles sont actifs :SET ROLE active les rôles pour l’utilisateur actuel ; les privilèges effectifs correspondent à l’union de tous les rôles actifs, plus ceux accordés directement à l’utilisateur.Vous pouvez également désactiver tous les rôles :system.current_roles.3
Définir les rôles par défaut pour le compte de service
Pour garantir que le compte de service démarre toujours dans un mode restreint, configurez les rôles par défaut :4
Utiliser SET ROLE via HTTP / par programmation
Si le compte de service se connecte via HTTP, vous ne pouvez pas envoyer SET ROLE; SELECT … sous forme de requête multi-instruction. À la place, transmettez le rôle comme paramètre de requête :?role=… équivaut à exécuter SET ROLE read_only_role avant l’instruction. Plusieurs paramètres de rôle se comportent comme SET ROLE role 1, role 2.Certains drivers (par exemple ClickHouse Connect for Python) exposent également un paramètre de rôle envoyé avec chaque requête, que le serveur utilise comme rôle de session.