La route vers la sécurité des données : application de gestion des utilisateurs et des rôles Databend

Databend prend actuellement en charge les modèles de contrôle d'accès basé sur les rôles (RBAC) et de contrôle d'accès discrétionnaire (DAC) pour la fonctionnalité de contrôle d'accès.

Grâce à ce guide, nous comprendrons les concepts de base des autorisations et des rôles dans Databend, ainsi que la façon de gérer les rôles, d'hériter des rôles et d'établir des hiérarchies, de définir les rôles par défaut et l'importance de la propriété. Ces fonctions permettent aux utilisateurs de configurer et de gérer de manière flexible les autorisations d'accès aux données en fonction des besoins réels, simplifiant ainsi la complexité de la gestion des autorisations et améliorant l'efficacité du contrôle de sécurité des données.

concept de base

Lorsqu'un utilisateur accède à un objet de données dans Databend, l'utilisateur doit disposer des autorisations ou des rôles appropriés, ou il doit être propriétaire de l'objet de données. Les objets de données peuvent faire référence à divers éléments tels que des bases de données, des tables, des vues, des étapes ou des UDF.

  • Le privilège joue un rôle crucial lors de l'interaction avec des objets de données dans Databend. Ces autorisations, telles que la lecture, l'écriture et l'exécution, offrent un contrôle précis sur le comportement des utilisateurs, garantissant la cohérence avec les besoins des utilisateurs et maintenant la sécurité des données.
  • Les rôles simplifient le contrôle d’accès. Les rôles sont des ensembles prédéfinis d'autorisations attribuées aux utilisateurs, simplifiant la gestion des autorisations. Les administrateurs peuvent classer les utilisateurs en fonction de leurs responsabilités et accorder des autorisations efficacement sans avoir besoin d'une configuration séparée.
  • La propriété est une autorisation indépendante dans Databend et est utilisée pour contrôler l'accès aux données. Lorsqu'un utilisateur devient propriétaire d'un objet de données, il dispose du plus haut niveau de contrôle sur l'objet de données. Ce modèle de propriété directe permet aux utilisateurs de gérer plus directement leurs propres données.

Type d'autorisation

Les utilisateurs ont besoin d'autorisations spécifiques pour effectuer des opérations spécifiques dans Databend. Par exemple, pour interroger une table, l'utilisateur a besoin d'au moins l'autorisation SELECT sur la table, et pour lire l'ensemble de données dans la scène, l'utilisateur a besoin d'au moins l'autorisation READ sur la scène.

Les objets actuellement pris en charge par les types d'autorisation incluent DB, Table, UDF, STAGE

Autorisations Type d'objet décrire
TOUS mondial Accorde toutes les autorisations sur le type d'objet spécifié.
MODIFIER global, base de données, table, vue Modifier la base de données, la table, l'utilisateur ou l'UDF.
CRÉER global, base de données, table Créez une base de données, une table ou une UDF.
SUPPRIMER surface Supprimez ou tronquez des lignes dans le tableau.
BAISSE global, base de données, table, vue Supprimez une base de données, une table, une vue ou une UDF. Restaurez les tables supprimées.
INSÉRER surface Insérez des lignes dans le tableau.
SÉLECTIONNER Tableau de base de données Sélectionnez des lignes dans le tableau. Afficher ou utiliser la base de données.
MISE À JOUR surface Mettez à jour les lignes du tableau.
ACCORDER situation globale Accorder/révoquer des autorisations d'utilisateurs ou de rôles.
SUPER tableau global Terminez la requête. Définir la configuration globale. Optimisez les tableaux. Tableau d'analyse. Utiliser des étapes (lister les étapes. Créer, supprimer des étapes), des répertoires ou des partages.
USAGE situation globale Synonyme de « aucune autorisation ».
CRÉER UN RÔLE situation globale Création d'un rôle.
SUPPRIMER LE RÔLE situation globale Supprimez le rôle.
CRÉER UN UTILISATEUR situation globale Créez un utilisateur SQL.
SUPPRIMER L'UTILISATEUR situation globale Supprimez l'utilisateur SQL.
ÉCRIRE Scène Écrivez sur scène.
LIRE Scène Lire la scène.
USAGE FDU Utilisez la fonction UDF.

Pour accorder TOUTES les autorisations sur une table à un utilisateur/rôle, procédez comme suit :

grant all on db_name.table_name to role <role_name>;
grant all on db_name.table_name to <user_name>;

rôle de gestion

Les rôles jouent un rôle essentiel dans Databend et simplifient la gestion des autorisations. Lorsque plusieurs utilisateurs nécessitent le même ensemble d’autorisations, l’octroi d’autorisations individuellement peut s’avérer fastidieux. Les rôles fournissent une solution en permettant d'attribuer un ensemble d'autorisations à un rôle, qui peut ensuite être facilement attribué à plusieurs utilisateurs.

Par exemple, au début, si l'utilisateur souhaite que l'utilisateur u1 lise les données des tables db.t et db.t2, il doit exécuter le SQL suivant :

grant select on db.t to u1;
grant select on db.t2 to u1;

À ce stade, le nouvel utilisateur u2 doit également lire les données de db.t et db.t2, et l'administrateur doit continuer à exécuter le SQL suivant :

grant select on db.t to u2;
grant select on db.t2 to u2;

S'il y a un flux continu de nouveaux utilisateurs qui ont besoin de lire les mêmes objets, l'administrateur sera plongé dans cette lourde gestion des droits d'utilisateur, et il est très probable qu'une mauvaise opération entraînera un accès. Ces opérations fastidieuses peuvent être optimisées par rôles :

-- 将 db.t 和 db.t2 的读取权限授权给角色 role1
grant select on db.t to role role1;
grant select on db.t2 to role role1;
-- 将 role1 的权限授予 u1
grant role role1 to u1;
-- 将 role1 的权限授予 u2
grant role role1 to u2;

Si vous souhaitez interroger davantage de tables telles que t3, vous ne devez autoriser role1 qu'une seule fois, et tous les utilisateurs disposant de role1 peuvent lire la table t3.

-- 执行此 grant 后,u1 和 u2 可以读取 t3 的数据
grant select on db.t3 to role role1;

Databend prend en charge l'interrogation des informations sur les utilisateurs et les rôles, voir Utilisateurs et rôles .

Rôles intégrés

Databend introduit deux rôles intégrés :

  • account-admin: dispose de toutes les autorisations, agit en tant que rôle parent pour tous les autres rôles et permet un basculement transparent vers n'importe quel rôle au sein du locataire.
  • public: n'hérite d'aucune autorisation, traite tous les rôles comme leurs rôles parents et permet à n'importe quel rôle de passer au rôle public.

Pour attribuer un rôle à un utilisateur dans Databend Cloud account-admin, sélectionnez le rôle lors de l'invitation de l'utilisateur. Vous pouvez également attribuer des rôles après l'adhésion des utilisateurs. Si vous utilisez Databend Community ou Enterprise Edition, configurez d'abord un account-adminutilisateur lors du déploiement, puis attribuez des rôles à d'autres utilisateurs si nécessaire. Pour plus d'informations sur la configuration des utilisateurs administrateurs, voir Configuration des utilisateurs administrateurs .

Hériter des rôles et créer des hiérarchies

Les rôles Databend introduisent un mécanisme puissant via la délégation de rôle, permettant à un rôle d'hériter des autorisations et des responsabilités d'un autre rôle. Cela permet de créer une hiérarchie flexible, similaire à une structure organisationnelle, dans laquelle il existe deux rôles intégrés : le rôle de niveau le plus élevé est account-adminet le rôle de niveau le plus bas est public.

Prenons un scénario dans lequel trois rôles sont créés : manager , ingénieur et stagiaire . Dans cet exemple, le rôle de stagiaire est accordé au rôle d'ingénieur . Par conséquent, les ingénieurs disposent non seulement de leur propre ensemble d’autorisations, mais héritent également des autorisations associées au rôle de stagiaire . En élargissant davantage cette hiérarchie, si le rôle d'ingénieur est accordé à un manager , celui-ci dispose désormais des autorisations inhérentes aux rôles d'ingénieur et de stagiaire .

Définir le rôle par défaut

Lorsqu'un utilisateur se voit attribuer plusieurs rôles, vous pouvez utiliser la commande CREATE USER ou ALTER USER pour définir un rôle par défaut pour l'utilisateur. Le rôle par défaut détermine le rôle automatiquement attribué à un utilisateur au début d'une session :

  • Les utilisateurs peuvent basculer vers d'autres rôles au sein d'une session à l'aide de la commande SET ROLE .
  • Les utilisateurs peuvent utiliser la commande SHOW ROLES pour vérifier leurs rôles actuels et afficher tous les rôles qui leur sont accordés.
  • Si vous ne définissez pas explicitement un rôle par défaut pour un utilisateur, Databend utilisera par défaut le rôle intégré publiccomme rôle par défaut.

Par exemple, accordez le rôle dba à l'utilisateur xiaoming et définissez le rôle dba comme rôle par défaut de xiaoming.

grant role dba to user xiaoming;
alter user xiaoming with DEFAULT_ROLE = dba;

la possession

En termes simples, la propriété signifie qu'un certain rôle possède entièrement un certain objet de données. Avoir la propriété signifie que le rôle peut effectuer n'importe quelle opération d'accès sur l'objet de données (y compris la suppression de l'objet de données).

La propriété n’agira que sur le rôle et est unique. Par conséquent, l’octroi ou la révocation de la propriété d’un objet de données à un utilisateur ne sont pas des opérations prises en charge.

-- 在 Databend 中为非法操作
grant ownership on db.t to user u1;
revoke ownership on db.t from user u1;

La propriété facilite l’autorisation. Tant qu'il s'agit d'un objet de données créé par l'utilisateur actuel, il est accessible directement. Il n'est pas nécessaire d'effectuer des opérations d'autorisation sur le même objet de données à plusieurs reprises :

-- 由管理员进行用户和角色的创建,并且将角色授予对应的用户
create role role1;
create user u1 identified by '123' with DEFAULT ROLE 'role1';
grant create on db.* to role role1;
grant role role1 to u1;

-- u1 登陆数据库后,此时 role1 已经被授予了 u1 ,所以u1 可以访问自己在 db 下创建的表:
u1> create table db.t(id int);
u1> insert into db.t values(1);
u1> select * from db.t;
u1> select * from db.t_old_exists -- 失败,因为该表的 owner 并不是角色 role1

A ce moment, si u2 souhaite également accéder aux ressources créées par u1, l'administrateur n'a qu'à exécuter un SQL :

-- 管理员将角色 role1 授予用户 u2
grant role role1 to u2;

Lorsque nous ne voulons plus que u1 accède à ces objets, l'administrateur n'a qu'à exécuter un seul SQL :

-- 管理员撤销用户 u1 的角色 role1
revoke role role1 from u1;

Vous pouvez utiliser SHOW GRANTS pour afficher des informations détaillées sur les utilisateurs et les rôles.

Remarque : la propriété est une autorisation spécialisée qui indique qu'un rôle possède entièrement un objet de données spécifique dans Databend (incluant actuellement les bases de données, les tables, les UDF et les étapes). La propriété d'un objet de données est automatiquement accordée au rôle actuel de l'utilisateur qui l'a créé. Les utilisateurs qui partagent le même rôle sont également propriétaires de l'objet et peuvent ensuite accorder la propriété de l'objet de données à d'autres rôles via l'administrateur (reportez-vous à la commande GRANT ).

  • La propriété ne peut être accordée qu'aux rôles ; la propriété ne peut pas être accordée aux utilisateurs. Une fois transférée d'un rôle à un autre, la propriété est transférée au nouveau rôle.
  • Si le rôle qui détient la propriété d'un objet est supprimé, account_admin peut accorder la propriété de l'objet à un autre rôle.
  • La propriété ne peut pas être accordée pour defaultune table de la base de données car elle account_adminappartient à un rôle intégré.

Pour des raisons de sécurité, il n'est pas recommandé d'accorder la propriété aux rôles intégrés public. Si un utilisateur occupe le rôle lors de la création d'un objet public, tous les utilisateurs seront propriétaires de l'objet car chaque utilisateur Databend a publicle rôle par défaut. Databend recommande de créer et d'attribuer des rôles personnalisés aux utilisateurs plutôt que d'utiliser publicdes rôles pour gérer clairement la propriété. L'exemple suivant account-adminattribue des rôles aux utilisateurs nouveaux et existants :

-- 将默认角色 account_admin 授予现有用户作为 root
root ALTER USER u1 WITH DEFAULT_ROLE = 'account_admin';
root grant role u1 to writer;

-- 作为 root 创建一个默认角色为 account_admin 的新用户
root create user u2 identified by '123' with DEFAULT_ROLE='account_admin';
root grant role account_admin to u2;

La suppression d'un objet de données révoque la propriété de l'objet de données du rôle de propriétaire. La restauration (UNDROP, si disponible) d'un objet de données supprimé ne restaurera pas la propriété. Dans ce cas, vous devrez account_adminà nouveau accorder la propriété au rôle.

Conclusion

Grâce à la gestion des autorisations et des rôles, Databend fournit un cadre flexible de gestion et de contrôle de la sécurité des données. Permet aux utilisateurs de gérer efficacement l'accès aux données et les autorisations d'exploitation en fonction de leurs propres besoins. Assurer la sécurité et l’intégrité des données.

Linus a pris les choses en main pour empêcher les développeurs du noyau de remplacer les tabulations par des espaces. Son père est l'un des rares dirigeants capables d'écrire du code, son deuxième fils est directeur du département de technologie open source et son plus jeune fils est un noyau. contributeur à l'open source. Huawei : Il a fallu 1 an pour convertir 5 000 applications mobiles couramment utilisées Migration complète vers Hongmeng Java est le langage le plus sujet aux vulnérabilités tierces Wang Chenglu, le père de Hongmeng : l'open source Hongmeng est la seule innovation architecturale. dans le domaine des logiciels de base en Chine, Ma Huateng et Zhou Hongyi se serrent la main pour « éliminer les rancunes ». Ancien développeur de Microsoft : les performances de Windows 11 sont « ridiculement mauvaises » " Bien que ce que Laoxiangji est open source, ce ne soit pas le code, les raisons qui le sous-tendent. sont très réconfortants. Meta Llama 3 est officiellement publié. Google annonce une restructuration à grande échelle.
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/u/5489811/blog/11051868
conseillé
Classement