PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Limitar o acesso de usuários do PostgreSQL usando esquema e visualizações


Para limitar o acesso do PostgreSQL a tabelas e colunas específicas, você pode usar o esquema e as instruções GRANT seletivas.

Consulte as instruções a seguir sobre como limitar o acesso a determinadas tabelas.

No entanto, se você precisar limitar o acesso a colunas específicas, talvez seja necessário usar uma combinação de esquemas e exibições para restringir o acesso. Você também pode fazer isso se seu banco de dados tiver mais de 1.000 tabelas e você estiver tentando se conectar ao Chartio.

  1. Conecte-se ao seu banco de dados PostgreSQL usando psql ou pgadmin. Execute o seguinte para retornar uma lista de tabelas em seu banco de dados.

    sudo -u postgres psql c databasename;

  2. Crie um esquema específico para o usuário somente leitura do Chartio, execute o seguinte:

    CRIAR ESQUEMA chartio_read_only; CREATE ROLE chartio_schema_user LOGIN PASSWORD ‘secure_password’; GRANT CONNECT ON DATABASE databasename TO chartio_schema_user; CONCEDER USO NO SCHEMA chartio_read_only PARA chartio_schema_user;

  3. Dê uma olhada nas relações do banco de dados usando o comando d.

    d

    Esquema | Nome          | Tipo  | Proprietário ———-+————————-+———-+————– público | Contas      | mesa | público postgres | Visitantes      | mesa | público postgres | Usuários         | mesa | público postgres | Assinaturas | mesa | postgres

  4. Sua tabela Contas contém informações confidenciais e você deseja que o Chartio acesse apenas as colunas Account_ID e Data__Created ._ Execute o seguinte para adicionar uma visualização ao esquema chartio_read_only e conceder acesso a essa visualização ao chartio_schema_user.

    CREATE VIEW chartio_read_only.”Accounts” AS SELECT Account_ID, Date_Created FROM Accounts; GRANT SELECT ON chartio_read_only.”Contas” TO chartio_schema_user;

  5. Conceda permissões para selecionar todos os dados da tabela Visitantes.

    CREATE VIEW chartio_read_only.”Visitantes” AS SELECT * FROM Visitantes; GRANT SELECT ON chartio_read_only.”Visitantes” TO chartio_schema_user;

Agora, se você conectar o chartio_schema_user ao seu banco de dados, ele só poderá acessar as duas visualizações limitadas que você concedeu ao esquema.

Para obter mais informações, consulte a documentação do PostgreSQL.