Explicação detalhada dos recursos de segurança 3A dos data warehouses

Este artigo é compartilhado pela comunidade Huawei Cloud " GaussDB (DWS) 3A Security Capabilities ", autor: yd_281561943.

1. Introdução

  • Versão aplicável: [8.0.0 (e superior)]

A segurança do banco de dados refere-se à tecnologia que protege os bancos de dados para evitar que usuários não autorizados roubem, adulterem e destruam informações de dados no banco de dados. A tecnologia de segurança de banco de dados pode ser simplesmente dividida em três As:

  • Autenticação: A autenticação resolve o problema de quem tem permissão para entrar (entrada)
  • Autorização: Autorização para resolver o problema do que pode ser feito (trabalho)
  • Auditoria: A auditoria resolve o problema do que foi feito (monitoramento)

2. Autenticação —— Autenticação

A autenticação de conexão resolve o problema de os usuários poderem efetuar login no banco de dados. Este produto oferece suporte aos seguintes métodos de autenticação:

  • Autenticação baseada em host: O servidor verifica o arquivo de configuração com base no endereço IP do cliente, nome de usuário e banco de dados a ser acessado para determinar se o usuário passou na autenticação.
  • Autenticação por senha: incluindo autenticação por senha criptografada para conexões remotas e autenticação por senha não criptografada para conexões locais.
  • Autenticação de certificado: Este modo requer configuração de conexão SSL e o cliente precisa fornecer um certificado SSL válido, não sendo necessária nenhuma senha de usuário.
  • Autenticação de terceiros: ldap, oneaccess, etc.

Todos esses métodos precisam configurar o arquivo "pg_hba.conf", formato de arquivo pg_hba.conf, pg_hba consiste em várias linhas de registros HBA:

O significado de um registro HBA é quais usuários (USER) são permitidos, de quais endereços IP (ADDRESS), em qual tipo de conexão (TYPE), em qual método de autenticação (METHOD) e a quais bancos de dados (DATABASE) conectar.

Durante a autenticação, os registros no arquivo hba são verificados de baixo para baixo para cada solicitação de conexão. Se o registro atual corresponder, ele será retornado. A ordem dos registros do HBA é muito crítica. Essa lógica do hba é muito importante e não deve ser alterada facilmente, caso contrário causará problemas muito sérios.

Caso: Problemas causados ​​por alterações na lógica hba

Houve um problema com a conexão ldap Durante o processo de atualização, os registros no arquivo pg_hba.conf foram classificados, fazendo com que a ordem das linhas de configuração ldap antes e depois da atualização mudasse para o final da linha de configuração sha256. Devido ao mecanismo de passagem sequencial do pg_hba.conf, após a atualização, o usuário ldap corresponde incorretamente à linha de configuração sha256 e a conexão falha.

Para resolver os problemas causados ​​pela mudança de ordem, a primeira versão do plano de modificação é colocar a lógica de julgamento ldap no início da travessia do loop: primeiro observe o tipo de autenticação. Se for autenticação ldap, julgue se o tipo de autenticação. O campo de método da linha de configuração é ldap. Caso contrário, pule para A próxima linha é até que o método seja ldap.

Nesta versão do plano de modificação, as conexões de autenticação ldap correspondem a todos os registros ldap hba. Quando o usuário se conecta ao banco de dados, a conexão pode ser bem-sucedida, mas o negócio não pode ser executado e uma mensagem de erro é relatada: "Nome de usuário/senha inválidos, login negado". A razão é que quando os nós internos executam instruções, a autenticação entre os nós será realizada. O tipo de autenticação é confiável e nenhuma senha será fornecida. Após a modificação, apenas os registros ldap serão correspondidos e o método ldap requer uma senha, reportando assim um erro.

Antes e depois da atualização, os locais das linhas de configuração ldap e sha256 são os seguintes:

Antes de atualizar:
hospedar todos @/etc/ldap/ldap_user 0.0.0.0/0 ldap ldapserver=xxx.xxx.xxx.xxx ldapport=xxx ldapprefix="CN=" ldapsuffix="OU=test_dmj_group,DC=com"
hospedar todos todos 0.0.0.0/0 sha256
Após a atualização:
hospedar todos todos 0.0.0.0/0 sha256
hospedar todos @/etc/ldap/ldap_user 0.0.0.0/0 ldap ldapserver=xxx.xxx.xxx.xxx ldapport=xxx ldapprefix="CN=" ldapsuffix="OU=test_dmj_group,DC=com"

TYPE : type é um dos quatro tipos: local, host, hostssl e hostnossl.

Respectivamente:

local: Somente conexões de soquete de domínio unix são permitidas.

host: permite conexões TCP/IP e pode corresponder a solicitações de conexão SSL e não SSL.

hostssl: Permite conexões TCP/IP e corresponde apenas a solicitações de conexão SSL.

hostnossl: permite conexões TCP/IP e corresponde apenas a solicitações de conexão não SSL.

DATABASE : Você pode usar all para representar todos os bancos de dados ou pode especificar bancos de dados explicitamente separando-os com vírgulas.

USUÁRIO : você pode usar all para representar todos os usuários ou pode especificar usuários explicitamente separando-os com vírgulas. Pode ser o nome de um usuário específico do banco de dados ou um nome de grupo precedido por +. A marca + na verdade significa "corresponder a qualquer função que pertença direta ou indiretamente a esta função", enquanto um nome sem a marca + corresponde apenas a essa função específica.

ENDEREÇO : O endereço ao qual o registro da declaração corresponde e ao qual permite acesso. Quando o tipo é local, significa conexão local e nenhum endereço IP precisa ser especificado.

MÉTODO : Os métodos de autenticação incluem confiança, rejeição, md5, sha256, ldap, cert, oneaccess, etc.

confiança: lista de permissões, permitindo conexões incondicionalmente.

Rejeitar: lista negra, rejeita conexões incondicionalmente.

md5: o método de autenticação de senha do pg não é seguro.

sha256: Autenticação por senha para gaussdb.

ldap: Use LDAP para autenticação de terceiros.

cert: modo de autenticação de certificado de cliente. Este modo requer configuração de conexão SSL e exige que o cliente forneça um certificado SSL válido.

oneaccess: Use oneaccess para autenticação de terceiros.

3. Autorização —— Autorização

As permissões indicam se as operações de um usuário em um objeto de banco de dados são permitidas. As permissões no GaussDB (DWS) incluem três cenários: permissões do sistema, permissões de objetos de dados e permissões de usuário.

3.1 Permissões do sistema

3.1.1 Separação de poderes

Por padrão, os administradores do sistema com o atributo SYSADMIN possuem a autoridade mais alta no sistema. Na gestão empresarial real, a fim de evitar altos riscos causados ​​​​pela concentração excessiva de direitos dos administradores do sistema, a separação de poderes pode ser configurada, e as permissões do atributo CREATEROLE e do atributo AUDITADMIN do administrador do sistema são concedidas ao administrador de segurança e ao administrador de auditoria, respectivamente .

3.1.2 Autorização de permissão do sistema

As permissões do sistema também são chamadas de atributos do usuário, incluindo SYSADMIN, CREATEDB, CREATEROLE, AUDITADMIN e LOGIN.

As permissões do sistema podem ser autorizadas ao criar ou modificar funções ou usuários Na opção da instrução de opção CREATE/ALTER ROLE/USER user_name [WITH], os campos a seguir podem ser configurados para implementar a autorização de permissão do sistema.

SISADMIN | NOSYSADMIN

Determine se uma nova função é um "administrador do sistema". A função com o atributo SYSADMIN possui a autoridade mais alta no sistema. O padrão é NOSYSADMIN.

AUDITADMINISTRAÇÃO | NOAUDITADMIN

Defina se a função possui atributos de gerenciamento de auditoria. O padrão é NOAUDITADMIN.

CRIADODB | NOCREATEDB

Determina se uma nova função pode criar bancos de dados. A nova função não tem permissão para criar bancos de dados. O padrão é NOCREATEDB.

CRIAROL | NOCREATEROLE

Determina se uma função pode criar novas funções (ou seja, executar CREATE ROLE e CREATE USER). Uma função com permissões CREATEROLE também pode modificar e excluir outras funções. O padrão é NOCREATEROLE.

ENTRAR | NOLOGIN

Somente funções com o atributo LOGIN podem efetuar login no banco de dados. Uma função com o atributo LOGIN pode ser considerada um usuário. O padrão é NOLOGIN.

3.2 Permissões de objetos de dados

Os objetos de dados incluem tabelas e visualizações, campos designados, bancos de dados, funções, esquemas, etc. Operações como criar, adicionar, excluir, modificar e consultá-los são permissões de objetos de dados. O formato da sintaxe de autorização é: GRANT [privilégios] ON [objetos] TO [usuários], e o formato da sintaxe de revogação de permissão é REVOKE [privilégios] ON [objetos] FROM [usuários].

3.3 Permissões do usuário

3.3.1 Autorização de direitos do usuário

Conceda as permissões de uma função ou usuário a uma ou mais funções ou usuários. Uma função ou usuário autorizado tem as permissões da função ou usuário autorizado. Quando WITH ADMIN OPTION é declarado, o usuário autorizado pode conceder a permissão novamente a outras funções ou usuários e revogar todas as permissões herdadas pela função ou usuário. Quando uma função ou usuário autorizado é alterado ou revogado, as permissões de todos os usuários que herdam a função ou as permissões de usuário serão alteradas de acordo. O formato da sintaxe é GRANT role TO user.

3.3.2 Funções predefinidas

GaussDB (DWS) fornece um conjunto de funções predefinidas, nomeadas começando com "gs_role_". Essas funções predefinidas têm algumas permissões fixas. Quando alguns usuários precisam realizar operações relacionadas, eles só precisam conceder as funções predefinidas aos usuários. As funções predefinidas atuais do GaussDB (DWS) são as seguintes:

4. Auditoria —— Auditoria

Auditoria refere-se ao registro do login e saída do usuário, bem como do comportamento e operações no banco de dados após o login, para que o administrador de segurança do banco de dados possa usar essas informações de log para descobrir o usuário, horário e conteúdo das operações ilegais.

4.1 Definir itens de configuração de auditoria

Para permitir que o banco de dados audite uma determinada função, você precisa ativar a chave principal de auditoria (audit_enabled) e a chave de item de auditoria correspondente (audit_operation_exec). A modificação do valor deste item de configuração durante a operação do banco de dados terá efeito. imediatamente. Não há necessidade de reiniciar o banco de dados.

Há dois pontos a serem observados. Primeiro, se você auditar operações ddl, será necessário configurar audit_system_object para auditar as operações ddl de um objeto específico. itens de configuração específicos são configurados. Controle de parâmetros de itens de auditoria:

4.2 Ver registros de auditoria

O comando de consulta de auditoria é pgxc_query_audit:

selecione * em pgxc_query_audit(timestamptz starttime,timestamptz endtime,audit_log);

starttime e endtime representam respectivamente o horário de início e término do registro de auditoria audit_log representa o novo caminho do arquivo físico do log de auditoria que está sendo visualizado. Quando audit_log não é especificado, as informações do log de auditoria conectadas à instância atual são visualizadas por padrão. Os resultados da consulta de auditoria são os seguintes:

postgres=# cria tabela t1(id int);
ERRO: a relação "t1" já existe
postgres=# select * from pgxc_query_audit('2021-03-21','2021-03-30') ordenar por limite de descrição de horário de término 1;
-[REGISTRO 1]---+--------------------------------
horário de início | 2021-03-21 11:49:41.643+08
hora final | 2021-03-21 11:49:41.652+08
tipo_operação | ddl
tipo_auditoria | ddl_table
resultado | fracassado
nome de usuário | perfadm
banco de dados | postgres
cliente_conninfo | gsql@[local]
nome_objeto | t1
texto_comando | criar tabela t1(id int);
detalhe_info | a relação "t1" já existe
transação_xid | 0
consulta_id | 1062177
nome_do_nó | cn_5001
thread_id | 139916885260032@669613657906735
porta_local | 6.000
porta_remota |

5. Outras tecnologias de segurança de data warehouse

Exibição de segurança de dados: dessensibilização de dados, controle de acesso em nível de linha.

Armazenamento de segurança de dados: criptografia de armazenamento de dados, criptografia transparente.

 

Clique para seguir e conhecer as novas tecnologias da Huawei Cloud o mais rápido possível~

Um programador nascido na década de 1990 desenvolveu um software de portabilidade de vídeo e faturou mais de 7 milhões em menos de um ano. O final foi muito punitivo! Alunos do ensino médio criam sua própria linguagem de programação de código aberto como uma cerimônia de maioridade - comentários contundentes de internautas: Contando com RustDesk devido a fraude desenfreada, serviço doméstico Taobao (taobao.com) suspendeu serviços domésticos e reiniciou o trabalho de otimização de versão web Java 17 é a versão Java LTS mais comumente usada no mercado do Windows 10 Atingindo 70%, o Windows 11 continua a diminuir Open Source Daily | Google apoia Hongmeng para assumir o controle de telefones Android de código aberto apoiados pela ansiedade e ambição da Microsoft; Electric desliga a plataforma aberta Apple lança chip M4 Google exclui kernel universal do Android (ACK) Suporte para arquitetura RISC-V Yunfeng renunciou ao Alibaba e planeja produzir jogos independentes na plataforma Windows no futuro
{{o.nome}}
{{m.nome}}

Acho que você gosta

Origin my.oschina.net/u/4526289/blog/11093720
Recomendado
Clasificación