Exemplos de segurança no nível da linha PostGresql

Exemplos de segurança no nível da linha PostGresql

PostGresql tem sido um sistema de banco de dados amplamente usado em todo o mundo e é altamente seguro. PostGresql veio com os dois tipos de valores mobiliários, e.g. Nível de coluna e nível de linha. Nosso tópico principal é a segurança no nível da linha no PostgreSQL. Diz-se que a segurança no nível da linha é uma ferramenta simples e necessária em segurança pós-férresql. Foi usado para controlar o acesso do usuário a determinadas tabelas e registros com base em algumas políticas. Ao aplicar a segurança no nível da linha, restringiremos os usuários a visualizar ou manipular apenas os registros da tabela que contêm os dados sobre eles, em vez de fazer alterações nos registros de outros usuários.

Você precisa abrir o shell SQL para PostgreSQL 13 da barra de início do Windows 10. Depois de abri -lo, você receberá a tela preta do shell SQL. Adicione o nome do servidor, o nome do banco de dados, o número da porta, o nome de usuário e a senha quando perguntado um por um. O shell SQL estará pronto para seu uso adicional.

O usuário do banco de dados “PostGres”Já é um superusuário do seu sistema. Se você não estiver conectado a partir de um superusuário, você deve fazer login a partir dele. O método para fazer login a partir de uma conta de superusuário é usando o comando declarado abaixo no shell com sinal “\ c” com o nome de um banco de dados a ser usado, e.g. Postgres, junto com o nome de um superusuário, e.g. PostGres. Pode exigir a senha de uma conta se ainda não estiver conectada.

Criar a tabela:

Você precisa criar uma nova tabela no superusuário e no banco de dados “PostGres”. Então, nós usamos o CRIAR A TABELA Consulta para criar uma tabela “teste”Com algumas colunas como mostrado.

Depois de criar uma tabela “teste”, Inserimos três registros para 3 usuários diferentes, e.g. Aqsa, Raza e Rimsha, através do “INSIRA DENTRO DE”Instrução na concha.

A tabela e seus registros podem ser vistos na tela do shell SQL usando o Selecione consulta.

Crie usuários:

Temos trabalhado no SQL Shell no teste da tabela com o SuperUser “PostGres”, Mas temos que criar outros usuários, conforme mencionado na tabela, e.g. Aqsa, Raza e Rimsha. Então, nós usamos o Criar usuário comando para fazer isso ao atribuir a senha. Depois disso, concedemos Selecione privilégios em todos esses usuários após a criação.

Quando usamos os usuários recém -criados para buscar os registros de uma tabela “teste”, A saída mostra que um usuário pode acessar facilmente todas as linhas de uma tabela em vez de uma linha tendo seu nome. A saída abaixo mostra a saída para acessar o teste da tabela com um usuário "aqsa".

A saída abaixo demonstra a saída para acessar o teste da tabela com um usuário “Raza”.

A saída abaixo é para um teste de tabela com um usuário “Rimsha”.

Criar política:

O objetivo da segurança no nível da linha é restringir os usuários apenas para buscar os registros com as informações sobre si mesmas. Queremos segurança no nível da linha para os usuários não buscarem os registros de outros usuários. Vamos começar fazendo login do superusuário “PostGres”No shell SQL.

Após o login, usamos a instrução Create Policy mostrada abaixo para criar uma política chamada “novo" na mesa "teste”. Nós usamos o “TODOSPalavra -chave aqui representando todos os privilégios, e.g. Insira, atualize, modifique, etc. Você pode torná -lo específico adicionando uma inserção, selecione, atualizar ou qualquer palavra -chave. O papel público foi indicar todos os papéis. Você pode especificar o usuário ou a função aqui também. Estamos usando o “USANDO”Expressão aqui. Isso comparará o nome de usuário atualmente conectado com a tabela "Teste" na coluna "Nome".

Ativar segurança no nível da linha:

Somente a criação da política e foi aplicada a funções e tabelas não é suficiente para obter uma mudança. Você deve ter que permitir a segurança no nível da linha na tabela "teste" que tem uma política definida antes de. Então, nós usamos o superusuário “PostGres”Para ativar a segurança no nível da linha em uma tabela“teste" com o ALTERAR A TABELA Comando mostrado na captura de tela anexada.

Como atualmente efetuamos login do superusuário “PostGres", o comando "Selecione”Junto com a palavra -chave“usuário atual”Está mostrando o nome de usuário na saída. Ao acessar a tabela com o comando select enquanto conectado no superusuário, ele mostra todos os registros de uma tabela "teste". Isso significa que a política e a segurança no nível da linha não afetam o superusor.

Agora, estaremos fazendo login nos novos papéis criados há um tempo. Nós conectamos do usuário “aqsa”E verifiquei o usuário atualmente conectado. Ele retorna “aqsa”Como usuário atual. Ao buscar a mesa “teste”Registros por um comando select, ele retorna as linhas pertenciam apenas ao nome de usuário“aqsa”Combinou com uma coluna“ Nome ”na tabela. Todas as outras linhas foram garantidas e não podem ser vistas por um usuário “aqsa”.

Vamos fazer login do outro usuário, “Raza”Do terminal e verifique o usuário atual. Voltou “Raza”Como usuário atual. A saída para o comando select mostra apenas o registro para um usuário “Raza" Da mesa "teste”.

A segurança no nível da linha funcionou da mesma forma no usuário “Rimsha”Conforme a imagem de saída abaixo.

Bypass de segurança no nível da linha:

As permissões de desvio podem ser usadas para anular a segurança no nível da linha por alguns superusores e outros usuários privilegiados. O usuário que tem privilégios de desvio de segurança no nível da linha pode anular a segurança no nível da linha para qualquer tabela e acessar os registros de outros usuários também. Então, nós conectamos a partir da conta do superusuário no primeiro terminal.

Depois disso, alteramos os direitos de um usuário "Raza”Por um comando alternativo, aplicado nele. Atribuímos o usuário "Raza", os privilégios de ignorar a segurança no nível da linha por "Bypassrls”Mencionado na consulta de usuário alterada como mostrado.

Faça login do usuário “Raza”Da concha. Você pode ver que o usuário “Raza” agora pode superar a política de segurança no nível da linha e pode ver e modificar facilmente os registros de todos os outros usuários da tabela “teste”Através da consulta selecionada.

Política de queda:

Vamos fazer login do superusuário mais uma vez para lançar uma política “novo”Que foi aplicado na tabela“ teste ”.

O comando Drop Policy foi usado no shell para lançar uma política chamada “novo"Da tabela" teste ".

Depois de abandonar uma política, fizemos login de um dos usuários para verificar se ainda funciona ou não. Descobrimos que pingar uma política não poderia mudar o usuário "aqsa"Ou outros para buscar os registros de uma tabela"teste”. Isso ocorre porque ainda não desativamos a segurança no nível da linha na mesa.

Desative a segurança no nível da linha:

Para desativar a segurança no nível da linha em uma mesa “teste”, Faça login como um superusuário e use a consulta mostrada no snap abaixo.

Após o login do outro usuário, você poderá visualizar e modificar os registros facilmente.

Conclusão:

Este tutorial contém uma breve demonstração da segurança no nível da linha usada para restringir os usuários após o acesso a dados para fins de segurança. A segurança no nível da linha foi alcançada criando usuários, políticas e depois permitir a segurança. O artigo também contém a implementação sobre a queda de uma política e a segurança de no nível da linha. Portanto, este artigo é um pacote de bônus para nossos usuários fazer de tudo, desde a possibilidade de desativar a segurança no nível da linha em uma tomada.