O caminho para a segurança de dados: aplicativo de gerenciamento de funções e usuários Databend

Atualmente, o Databend oferece suporte a modelos de controle de acesso baseado em função (RBAC) e controle de acesso discricionário (DAC) para funcionalidade de controle de acesso.

Através deste guia, entenderemos os conceitos básicos de permissões e funções no Databend, bem como como gerenciar funções, herdar funções e estabelecer hierarquias, definir funções padrão e a importância da propriedade. Essas funções permitem que os usuários configurem e gerenciem com flexibilidade as permissões de acesso aos dados de acordo com as necessidades reais, simplificando a complexidade do gerenciamento de permissões e melhorando a eficiência do controle de segurança dos dados.

conceito básico

Quando um usuário acessa um objeto de dados no Databend, o usuário deve receber as permissões ou funções apropriadas ou precisa ter a propriedade do objeto de dados. Os objetos de dados podem referir-se a vários elementos, como bancos de dados, tabelas, visualizações, estágios ou UDFs.

  • O privilégio desempenha um papel crucial ao interagir com objetos de dados no Databend. Essas permissões, como leitura, gravação e execução, fornecem controle preciso sobre o comportamento do usuário, garantindo consistência com as necessidades do usuário e mantendo a segurança dos dados.
  • As funções simplificam o controle de acesso. As funções são conjuntos predefinidos de permissões atribuídas aos usuários, simplificando o gerenciamento de permissões. Os administradores podem classificar os usuários de acordo com suas responsabilidades e conceder permissões de forma eficiente, sem a necessidade de configuração separada.
  • A propriedade é uma permissão independente no Databend e é usada para controlar o acesso aos dados. Quando um usuário assume a propriedade de um objeto de dados, ele tem o nível mais alto de controle sobre o objeto de dados. Este modelo de propriedade direta permite que os usuários gerenciem seus próprios dados de forma mais direta.

Tipo de permissão

Os usuários precisam de permissões específicas para realizar operações específicas no Databend. Por exemplo, para consultar uma tabela, o usuário precisa de pelo menos a permissão SELECT na tabela, e para ler o conjunto de dados no palco, o usuário precisa de pelo menos a permissão READ no palco.

Os objetos atualmente assumidos pelos tipos de permissão incluem DB, Table, UDF, STAGE

Permissões Tipo de objeto descrever
TODOS global Concede todas as permissões no tipo de objeto especificado.
ALTERAR global, banco de dados, tabela, visualização Modifique banco de dados, tabela, usuário ou UDF.
CRIAR global, banco de dados, tabela Crie um banco de dados, tabela ou UDF.
EXCLUIR superfície Exclua ou trunque linhas na tabela.
DERRUBAR global, banco de dados, tabela, visualização Elimine um banco de dados, tabela, visualização ou UDF. Restaure tabelas excluídas.
INSERIR superfície Insira linhas na tabela.
SELECIONAR Tabela de banco de dados Selecione linhas da tabela. Exibir ou usar o banco de dados.
ATUALIZAR superfície Atualize as linhas da tabela.
CONCEDER situação geral Conceda/revogue permissões de usuários ou funções.
SUPER tabela global Encerre a consulta. Defina a configuração global. Otimizar tabelas. Tabela de Análise. Operar Estágios (listar Estágios. Criar, excluir Estágios), diretórios ou compartilhamentos.
USO situação geral Sinônimo de "sem permissões".
CRIAR PAPEL situação geral Criando uma função.
PAPEL DE QUEDA situação geral Exclua a função.
CRIAR USUÁRIO situação geral Crie um usuário SQL.
DEIXAR USUÁRIO situação geral Excluir usuário SQL.
ESCREVER Estágio Escreva para o palco.
LER Estágio Leia o estágio.
USO UDF Usar UDF.

Para conceder TODAS as permissões de uma tabela a um usuário/função é o seguinte:

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

função de gestão

As funções desempenham um papel vital no Databend e simplificam o gerenciamento de permissões. Quando vários usuários exigem o mesmo conjunto de permissões, conceder permissões individualmente pode ser complicado. As funções fornecem uma solução ao permitir que um conjunto de permissões seja atribuído a uma função, que pode então ser facilmente atribuída a vários usuários.

Por exemplo, no início, se o usuário deseja que o usuário u1 leia os dados das tabelas db.t e db.t2, ele precisa executar o seguinte SQL:

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

Neste momento, o novo usuário u2 também precisa ler os dados de db.t e db.t2, e o administrador precisa continuar executando o seguinte SQL:

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

Se houver um fluxo contínuo de novos usuários que precisam ler os mesmos objetos, o administrador ficará imerso nesse complicado gerenciamento de direitos do usuário e é muito provável que a operação incorreta leve ao acesso. Essas operações tediosas podem ser otimizadas por funções:

-- 将 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;

Se quiser consultar mais tabelas, como t3, você só precisará autorizar a função1 uma vez, e todos os usuários que receberem a função1 poderão ler a tabela t3.

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

O Databend oferece suporte à consulta de informações de usuários e funções, consulte Usuários e funções .

Funções integradas

Databend apresenta duas funções integradas:

  • account-admin: tem todas as permissões, atua como função pai para todas as outras funções e permite a alternância perfeita para qualquer função no locatário.
  • public: não herda nenhuma permissão, trata todas as funções como funções pai e permite que qualquer função mude para a função pública.

Para atribuir uma função a um usuário no Databend Cloud account-admin, selecione a função ao convidar o usuário. Você também pode atribuir funções após a adesão dos usuários. Se você estiver usando o Databend Community ou Enterprise Edition, primeiro configure um account-adminusuário durante a implementação e depois atribua funções a outros usuários conforme necessário. Para obter mais informações sobre como configurar usuários administradores, consulte Configurando usuários administradores .

Herdar funções e criar hierarquias

As funções do Databend introduzem um mecanismo poderoso por meio da delegação de funções, permitindo que uma função herde as permissões e responsabilidades de outra função. Isso ajuda a criar uma hierarquia flexível, semelhante a uma estrutura organizacional, onde há duas funções integradas : a função de nível mais alto é account-admine a função de nível mais baixo é public.

Considere um cenário onde são criadas três funções: gerente , engenheiro e estagiário . Neste exemplo, a função de estagiário é concedida à função de engenheiro . Portanto, os engenheiros não apenas possuem seu próprio conjunto de permissões, mas também herdam as permissões associadas à função de estagiário . Estendendo ainda mais essa hierarquia, se a função de engenheiro for concedida a um gerente , o gerente agora terá as permissões inerentes das funções de engenheiro e estagiário .

Definir função padrão

Quando um usuário recebe diversas funções, você pode usar o comando CREATE USER ou ALTER USER para definir uma função padrão para o usuário. A função padrão determina a função atribuída automaticamente a um usuário no início de uma sessão:

  • Os usuários podem alternar para outras funções dentro de uma sessão usando o comando SET ROLE .
  • Os usuários podem usar o comando SHOW ROLES para verificar suas funções atuais e visualizar todas as funções concedidas a eles.
  • Se você não definir explicitamente uma função padrão para um usuário, o Databend usará como padrão a função integrada publiccomo padrão.

Por exemplo, conceda a função dba ao usuário xiaomiing e defina a função dba como a função padrão de xiaomiing.

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

propriedade

Simplificando, propriedade significa que uma determinada função possui completamente um determinado objeto de dados. Ter propriedade significa que a função pode executar qualquer operação de acesso no objeto de dados (incluindo a exclusão do objeto de dados).

A propriedade atuará apenas de acordo com a função e é única. Portanto, conceder ou revogar a propriedade de um objeto de dados a um usuário não são operações suportadas.

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

A propriedade facilita a autorização. Desde que seja um objeto de dados criado pelo usuário atual, ele pode ser acessado diretamente. Não há necessidade de realizar operações de autorização repetidamente no mesmo objeto de dados:

-- 由管理员进行用户和角色的创建,并且将角色授予对应的用户
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

Neste momento, se u2 também quiser acessar os recursos criados por u1, o administrador só precisa executar um SQL:

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

Quando não quisermos mais que u1 acesse esses objetos, o administrador só precisa executar um SQL:

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

Você pode usar SHOW GRANTS para visualizar informações detalhadas sobre usuários e funções.

Observação : propriedade é uma permissão especializada que indica que uma função possui totalmente um objeto de dados específico no Databend (atualmente incluindo bancos de dados, tabelas, UDFs e estágios). A propriedade de um objeto de dados é concedida automaticamente à função atual do usuário que o criou. Os usuários que compartilham a mesma função também possuem a propriedade do objeto e podem posteriormente conceder a propriedade do objeto de dados a outras funções por meio do administrador (consulte o comando GRANT ).

  • A propriedade só pode ser concedida a funções; a propriedade não pode ser concedida a usuários. Depois de transferida de uma função para outra, a propriedade é transferida para a nova função.
  • Se a função que detém a propriedade de um objeto for removida, account_admin poderá conceder a propriedade do objeto a outra função.
  • A propriedade não pode ser concedida a defaultuma tabela no banco de dados porque ela account_adminpertence a uma função interna.

Por motivos de segurança, não é recomendado conceder propriedade a funções integradas public. Se um usuário estiver na função ao criar um objeto public, todos os usuários terão propriedade do objeto porque cada usuário do Databend tem publica função por padrão. A Databend recomenda criar e atribuir funções personalizadas aos usuários em vez de usar publicfunções para gerenciar claramente a propriedade. O exemplo a seguir account-adminatribui funções a usuários novos e existentes:

-- 将默认角色 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;

A exclusão de um objeto de dados revoga a propriedade do objeto de dados da função de proprietário. A restauração (UNDROP, se disponível) de um objeto de dados excluído não restaurará a propriedade. Nesse caso, você precisará account_adminconceder propriedade à função novamente.

Conclusão

Por meio de permissões e gerenciamento de funções, o Databend fornece uma estrutura flexível de gerenciamento e controle de segurança de dados. Permite que os usuários gerenciem com eficiência o acesso aos dados e as permissões de operação de acordo com suas próprias necessidades. Garanta a segurança e integridade dos dados.

Linus resolveu resolver o problema por conta própria para evitar que os desenvolvedores do kernel substituíssem tabulações por espaços. Seu pai é um dos poucos líderes que sabe escrever código, seu segundo filho é o diretor do departamento de tecnologia de código aberto e seu filho mais novo é um núcleo. contribuidor de código aberto Huawei: Demorou 1 ano para converter 5.000 aplicativos móveis comumente usados ​​A migração abrangente para Hongmeng Java é a linguagem mais propensa a vulnerabilidades de terceiros Wang Chenglu, o pai de Hongmeng: Hongmeng de código aberto é a única inovação arquitetônica. no campo de software básico na China. Ma Huateng e Zhou Hongyi apertam as mãos para "remover rancores". Ex-desenvolvedor da Microsoft: o desempenho do Windows 11 é "ridiculamente ruim" " Embora o que Laoxiangji seja de código aberto não seja o código, as razões por trás disso são muito emocionantes. Meta Llama 3 é lançado oficialmente. Google anuncia uma reestruturação em grande escala.
{{o.nome}}
{{m.nome}}

Acho que você gosta

Origin my.oschina.net/u/5489811/blog/11051868
Recomendado
Clasificación