Aller au contenu principal
Version: 3.19.0

Gestion des permissions pour le backend de stockage SQL

Ce document explique comment configurer et gérer les permissions lors de l'utilisation du backend de stockage SQL.

Introduction

Pour gérer les permissions, Helm s'appuie sur la fonctionnalité RBAC de Kubernetes. Lorsque vous utilisez le backend de stockage SQL, les rôles Kubernetes ne peuvent pas être utilisés pour déterminer si un utilisateur peut accéder à une ressource donnée ou non. Ce document explique comment créer et gérer ces permissions.

Initialisation

La première fois que le CLI Helm se connectera à votre base de données, le client s'assurera qu'elle a été préalablement initialisée. Si ce n'est pas le cas, il effectuera automatiquement la configuration nécessaire. Cette initialisation nécessite des privilèges d'administrateur sur le schéma public, ou au minimum la capacité de :

  • créer une table
  • accorder des privilèges sur le schéma public

Une fois la migration exécutée sur votre base de données, tous les autres rôles peuvent utiliser le client.

Accorder des privilèges à un utilisateur non administrateur dans PostgreSQL

Pour gérer les permissions, le pilote du backend SQL utilise la fonctionnalité RLS (Row Security Level) de PostgreSQL. RLS permet à tous les utilisateurs de lire et écrire dans la même table, sans pouvoir manipuler les mêmes lignes s'ils n'y sont pas explicitement autorisés. Par défaut, tout rôle qui n'a pas reçu explicitement les privilèges appropriés obtiendra toujours une liste vide lors de l'exécution de helm list et ne pourra ni récupérer ni modifier aucune ressource dans le cluster.

Voyons comment accorder à un rôle donné l'accès à des namespaces spécifiques :

CREATE POLICY <name> ON releases_v1 FOR ALL TO <role> USING (namespace = 'default');

Cette commande accordera au rôle role les permissions de lecture et d'écriture sur toutes les ressources qui respectent la condition namespace = 'default'. Après la création de cette politique, l'utilisateur connecté à la base de données pour le compte du rôle role pourra voir toutes les releases présentes dans le namespace default lors de l'exécution de helm list, ainsi que les modifier et les supprimer.

Les privilèges peuvent être gérés de manière granulaire avec RLS, et vous pouvez restreindre l'accès en fonction des différentes colonnes de la table :

  • key
  • type
  • body
  • name
  • namespace
  • version
  • status
  • owner
  • createdAt
  • modifiedAt