Dans l'article sur les accès, on a posé la base des droits d'accès sauf qu'on n'a pas parlé des rôles système. Ceux que Snowflake te donne "par défaut" et il est essentiel de les connaître et de comprendre le rôle de chacun.

On peut voir les rôles système comme des rôles d’administration. Ils servent à gérer le compte, la sécurité, l'onboarding, la plateforme. Cependant, ils ne sont pas censés devenir les rôles métiers du quotidien.

Et dans une hiérarchie simple, Snowflake recommande de faire en sorte que tous les rôles métiers finissent rattachés à un rôle admin haut niveau et dans la majorité des cas, SYSADMIN fait très bien ce job.

ACCOUNTADMIN

ACCOUNTADMIN, c'est le rôle le plus puissant dans Snowflake. Il chapeaute notamment SYSADMIN et SECURITYADMIN, donc avec lui tu peux tout faire (et surtout vous donner les droits nécessaires). Si tu viens du monde Qlik, pense root admin.

Il est recommandé de ne pas l'utiliser au quotidien, et de le garder pour des opérations rares au niveau du compte (paramétrage global, actions exceptionnelles). À affecter uniquement à un groupe très restreint d'utilisateurs.

SECURITYADMIN

SECURITYADMIN, c'est le rôle des accès (RBAC = gestion des droits par rôles). Donc c’est le rôle qui vit dans les grants, les rôles, et qui répond à la question clé : qui a accès à quoi. En général, c'est porté par une équipe sécurité et gouvernance.

Petit point important, le rôle SECURITYADMIN sert surtout à gérer les droits donc pour la création/gestion des utilisateurs, tu passes plutôt par USERADMIN (et ensuite tu relies ça proprement avec les rôles et les grants). voir l'article sur les accès.

SYSADMIN

SYSADMIN, c'est le rôle pour piloter la plateforme au quotidien : warehouses, bases, schémas, objets, et l’organisation de tout ça. En pratique, c'est souvent le rôle racine "tech" sur lequel tu viens raccrocher tes rôles métiers et tes rôles de service. voir l'article sur les accès.

USERADMIN

USERADMIN, c'est le rôle "IAM" donc création des users, gestion des comptes, et tout le côté identité. L'idée est simple c'est de séparer clairement "je crée un utilisateur" de "je lui donne accès à des données".

Dans une gouvernance clean, il est recommandé de séparer l’équipe qui gère les identités (USERADMIN) et celle qui gère les accès/droits (SECURITYADMIN).

PUBLIC

PUBLIC, c'est le rôle que tout le monde a par défaut. Donc tout ce que tu mets dedans devient automatiquement global.

La règle simple : rien de sensible dans PUBLIC. Si c'est important, ça doit passer par des rôles dédiés.