Conceder permissões no Banco de Dados SQL do Azure para PostgreSQL
Para permitir que os usuários acessem bancos de dados hospedados em seu servidor do Banco de Dados do Azure para PostgreSQL, você precisa 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
No Azure Data Studio (ou sua ferramenta de cliente preferencial), conecte-se ao servidor do Banco de Dados do Azure para PostgreSQL com as credenciais de entrada do administrador.
Com o banco de dados relevante como o banco de dados atual, use
CREATE ROLE
com as opções relevantes para criar uma função (usuário).Por exemplo, a seguinte consulta:
- Cria um banco de dados chamado testdb.
- Cria um usuário com uma senha forte.
- 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 experimentar a consulta, você pode substituir os espaços reservados pelas suas informações de usuário.
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 de CREATE ROLE é:
CREATE ROLE name [ [ WITH ] option [ ... ] ]
WHERE option 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:
- SUPERUSER | NOSUPERUSER – Você não pode atribuir privilégios SUPERUSER no Banco de Dados do Azure para PostgreSQL. Se não for especificado, NOSUPERUSER será o padrão.
- CREATEDB | NOCREATEDB – se a função pode ou não 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 remover outras funções. NOCREATEROLE é o padrão.
- INHERIT | NOINHERIT - se a função herda privilégios de funções da qual é um membro direto ou indireto. INHERIT é o padrão.
- LOGIN | NOLOGIN - se uma função tem permissão para entrar. Uma função com o atributo LOGIN é um usuário de banco de dados. Funções sem o atributo LOGIN podem ser usadas para gerenciar privilégios de banco de dados. NOLOGIN é o padrão.
- REPLICATION | NOREPLICATION – se uma função é uma função de replicação. Uma função precisa ter esse atributo para se conectar ao servidor no modo de replicação e criar ou descartar slots de replicação. O atributo REPLICATION é uma função com privilégios que só deve ser usada para replicação. NOREPLICATION é o padrão. Você precisa ser membro de azure_pg_admin para criar essa função.
- BYPASSRLS | NOBYPASSRLS – se uma função ignora ou não todas as políticas de RLS (segurança em nível de linha).
- CONNECTION LIMIT connlimit - especifica quantas conexões simultâneas uma função que pode fazer logon. -1 é o padrão. Esse parâmetro não coloca um limite em conexões simultâneas.
- [ ENCRYPTED ] PASSWORD 'senha'| PASSWORD NULL – define a senha da função. Uma senha é usada apenas 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, declare explicitamente a PASSWORD NULL.
- VALID UNTIL 'carimbo de data/hora' – a data e hora após a qual a senha da função não é mais válida. Se omitido, não haverá limite de tempo na senha.
- IN ROLE nome_da_função – 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 nome_da_função uma alternativa obsoleta para IN ROLE.
- ROLE nome_da_função – uma ou mais funções são adicionadas como membros da nova função. (Essa alteração de fato torna a nova função um grupo.)
- ADMIN nome_da_função – a cláusula ADMIN é como ROLE, mas as funções nomeadas são adicionadas à nova função WITH ADMIN OPTION, dando a elas o direito de conceder associação nessa função a outras pessoas.
Observação
Você pode alterar os atributos de uma função com ALTER ROLE e remover uma função com DROP ROLE.