Bases de données personnelles¶
Qu’est-ce qu’une base de données personnelle ?¶
Une base de données personnelle (PDB) est une instance de base de données appartenant au système, gérée par l’utilisateur et provisionnée automatiquement par Snowflake. Elle sert d’emplacement de stockage personnel et dédié où les utilisateurs peuvent créer, organiser et gérer leurs propres objets de base de données.
Le provisionnement automatique supprime l’obligation administrative pour les utilisateurs de sélectionner manuellement une base de données partagée ou de demander un accès à une base de données partagée, ce qui garantit un environnement de développement dédié. Lorsqu’un utilisateur est supprimé du système, sa PDB associée et tous ses objets sont automatiquement transférés vers la propriété ACCOUNTADMIN.
Avantages d’une PDB¶
Organiser des projets personnels : les utilisateurs peuvent organiser leurs propres projets dans un environnement isolé, réduisant ainsi l’encombrement et les conflits de nom potentiels dans les bases de données partagées.
Gouvernance facile des administrateurs : tous les développements liés aux fichiers sont entièrement régis par RBAC.
Types d’objets PDB¶
Actuellement, les PDBs prennent en charge deux types d’objets principaux qui fournissent un environnement de développement dédié à l’utilisateur : les espaces de travail et les notebooks.
Espaces de travail¶
La PDB est créée lorsqu’un utilisateur interagit pour la première fois avec l”UI des espaces de travail. Les espaces de travail sont des entités basées sur des fichiers et nécessitent un stockage dans une base de données Snowflake.
Carnets¶
Les PDBs prennent en charge des services de calcul gérés pour les Snowflake Notebooks. Pour permettre l’exécution du code, un objet de service géré par Snowflake est automatiquement créé dans la PDB. Cela garantit que le contexte d’exécution du notebook est lié à tous les rôles et autorisations que l’utilisateur possède déjà. Cet objet connecte l’espace de travail à un pool de calcul Snowpark Container Services (SPCS), permettant aux développeurs d’exécuter leur code Snowflake Notebooks.
Important
L’utilisateur doit avoir le privilège USAGE sur le pool de calcul associé avant de pouvoir créer un service pour exécuter du code. Ce privilège peut être accordé par n’importe quel rôle possédant le privilège MANAGE GRANTS.
Sécurité¶
L’architecture de la PDB est intentionnellement rationalisée et respecte le principe du moindre privilège, ce qui garantit que toutes les opérations sont strictement limitées au contexte de sécurité existant de l’utilisateur :
Pas de nouvel accès aux données : les PDBs n’introduisent aucun accès nouveau ou étendu aux données, ni aucune capacité supplémentaire à partager des données. Les utilisateurs ne peuvent pas déplacer les données d’une base de données ordinaire vers une PDB.
Contexte des autorisations : toute requête SQL exécutée dans un espace de travail est exécutée avec exactement le même ensemble de rôles et d’autorisations que l’utilisateur possède déjà. Cela reflète l’environnement d’exécution d’un fichier d’espace de travail Snowflake standard.
Note
Les bases de données personnelles prennent également en charge les secrets personnels. Les Objets secrets appartiennent exclusivement à l’utilisateur. Cela garantit, par défaut, que le secret reste privé, n’est accessible qu’à l’utilisateur et n’est pas partagé par inadvertance.
Gestion et visibilité de la PDB¶
Les administrateurs peuvent surveiller et contrôler l’utilisation des PDBs, qui appartiennent au système et non à un rôle. L’utilisation sur une PDB est limitée à l’utilisateur auquel elle est affectée. Les objets dans une PDB ne peuvent pas être partagés.
Visibilité de l’administrateur¶
Les rôles avec le privilège MANAGE GRANTS ont une visibilité sur tous les objets du compte, y compris les objets personnels appartenant à des utilisateurs individuels. Par exemple, des rôles comme ACCOUNTADMIN peuvent afficher toutes les bases de données, y compris les bases de données personnelles, par défaut. Ces rôles peuvent également accéder à des détails sur les schémas et leurs objets dans des bases de données personnelles.
Pour visualiser les détails de toutes les bases de données personnelles d’un compte, effectuez une requête sur la vue DATABASES Account Usage :
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES WHERE DATABASE_NAME LIKE 'USER$%';
Pour voir les objets qui existent dans un espace de travail spécifique, utilisez le code suivant :
SHOW WORKSPACES IN DATABASE "USER$CMEYER";
Pour afficher la base de données personnelle d’un utilisateur spécifique, utilisez le code suivant :
SHOW DATABASES LIKE 'USER$BOBR';
Pour les bases de données personnelles, la valeur de la colonne
kindestPERSONAL DATABASE.Pour voir des objets dans une base de données personnelle spécifique, utilisez le code suivant :
SHOW OBJECTS IN DATABASE "USER$<username>";
Supprimer des objets¶
Pour supprimer des objets dans une base de données personnelle, utilisez le code suivant :
DROP WORKSPACE "USER$JSMITH_DROP_WS_TEST".PUBLIC."drop_this_ws";
Considérations relatives aux clients¶
Les utilisateurs ne peuvent pas stocker de données dans des tables de leurs PDBs.
Les coûts de stockage ne reflètent que la taille des fichiers d’espace de travail et des métadonnées associées.
Limitations¶
Les administrateurs ne peuvent pas effectuer les tâches suivantes :
Afficher les noms de fichiers ou le contenu des fichiers qui appartiennent à d’autres utilisateurs.
Voir la quantité de stockage utilisée pour les PDBs. Les PDBs n’apparaissent pas dans
DATABASE_STORAGE_USAGE_HISTORY.Limiter la quantité de stockage utilisée pour chaque PDB.
Supprimer des PDBs, ou empêcher des utilisateurs individuels de les utiliser.
Créer de nouvelles PDBs. Les PDBs sont créées à la demande lorsqu’un utilisateur crée un espace de travail.