Conceder permissões no Banco de Dados SQL do Azure para PostgreSQL

Concluído

Para permitir que os usuários acessem bancos de dados hospedados em seu Banco de Dados do Azure para servidor PostgreSQL, você deve criar funções (usuários) e conceder ou negar privilégios a objetos de banco de dados.

Criar usuários de banco de dados no Banco de Dados do Azure para PostgreSQL

  1. No Azure Data Studio (ou na sua ferramenta de cliente preferida), ligue-se à sua Base de Dados do Azure para servidor PostgreSQL com as credenciais de início de sessão de administrador.

  2. Com o banco de dados relevante como o banco de dados atual, use CREATE ROLE com as opções relevantes para criar uma nova função (usuário).

  3. Como exemplo, a seguinte consulta:

    1. Cria um novo banco de dados chamado testdb.
    2. Cria um novo usuário com uma senha forte.
    3. Concede privilégios de conexão ao banco de dados testdb.
    CREATE DATABASE testdb;
    CREATE ROLE <db_user> WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION PASSWORD '<StrongPassword!>';
    GRANT CONNECT ON DATABASE testdb TO <db_user>;
    

    Para tentar a consulta, você pode substituir os espaços reservados pelas informações do usuário.

  4. Em seguida, você pode conceder mais privilégios a objetos dentro do banco de dados. Por exemplo:

    GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <db_user>;
    

A sintaxe para CREATE ROLE é:

CREATE ROLE name [ [ WITH ] option [ ... ] ]

ONDE a opção pode ser:

SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]

Os parâmetros opcionais são:

  • SUPERUTILIZADOR | NOSUPERUSER - Não é possível atribuir privilégios de SUPERUSUÁRIO no Banco de Dados do Azure para PostgreSQL. Se não for especificado, NOSUPERUSER é o padrão.
  • CRIADOB | NOCREATEDB - se a função pode criar bancos de dados. O padrão é NOCREATEDB.
  • CREATEROLE | NOCREATEROLE - se a função pode criar novas funções, ou seja, executar CREATE ROLE. Se o privilégio CREATEROLE for concedido, a função também poderá alterar e descartar outras funções. NOCREATEROLE é o padrão.
  • HERDAR | NOINHERIT - se a função herda privilégios de funções das quais é membro direto ou indireto. INHERIT é o padrão.
  • INICIAR SESSÃO | NOLOGIN - se uma função tem permissão para entrar. Uma função com o atributo LOGIN é um usuário de banco de dados. As funções sem o atributo LOGIN podem ser usadas para gerenciar privilégios de banco de dados. NOLOGIN é o padrão.
  • REPLICAÇÃO | NOREPLICATION - se uma função é uma função de replicação. Uma função deve ter esse atributo para se conectar ao servidor no modo de replicação e para criar ou descartar slots de replicação. O atributo REPLICATION é uma função privilegiada que só deve ser usada para replicação. NOREPLICATION é o padrão. Você deve ser membro do azure_pg_admin para criar essa função.
  • DESVIOS | NOBYPASSRLS - se uma função ignora cada política de segurança em nível de linha (RLS). NOBYPASSRLS é o padrão. Você deve ser membro do azure_pg_admin para criar essa função.
  • CONNECTION LIMIT connlimit - especifica quantas conexões simultâneas uma função que pode entrar pode fazer. -1 é o padrão. Este parâmetro não coloca um limite em conexões simultâneas.
  • [ CRIPTOGRAFADO ] PASSWORD 'palavra-passe'| PASSWORD NULL - define a senha da função. Uma senha só é usada por funções com o atributo LOGIN. Se nenhuma senha for especificada, a senha será NULL e a autenticação de senha falhará. Como alternativa, indique explicitamente PASSWORD NULL.
  • VÁLIDO ATÉ 'timestamp' - a data e hora após a qual a senha da função não é mais válida. Se omitida, não há limite de tempo para a senha.
  • NA FUNÇÃO role_name - uma ou mais funções às quais a nova função é adicionada como um novo membro. Não há uma opção para adicionar uma nova função como administrador; use o comando GRANT.
  • IN GROUP role_name uma alternativa obsoleta ao IN ROLE.
  • FUNÇÃO role_name - uma ou mais funções são adicionadas como membros da nova função. (Essa alteração na prática torna a nova função um grupo.)
  • ADMIN role_name - a cláusula ADMIN é como ROLE, mas as funções nomeadas são adicionadas à nova função WITH ADMIN OPTION, dando-lhes o direito de conceder associação a outras pessoas.

Nota

Você pode alterar atributos de uma função com ALTER ROLE e remover uma função com DROP ROLE.