Como revogar a permissão CONNECT ON DATABASE de um usuário?
Cenário
Em um serviço, a permissão do usuário u1 para se conectar a um banco de dados precisa ser revogada. Depois que o comando REVOKE CONNECT ON DATABASE gaussdb FROM u1; é executado com sucesso, o usuário u1 ainda pode se conectar ao banco de dados. Isso significa que a revogação não terá efeito.
Análise de causa
Se você executar o comando REVOKE CONNECT ON DATABASE gaussdb from u1 para revogar as permissões do usuário u1, a revogação não terá efeito porque a permissão CONNECT do banco de dados é concedida ao PUBLIC. Portanto, você precisa especificar PUBLIC.
- GaussDB(DWS) fornece um grupo implicitamente definido PUBLIC que contém todas as funções. Por padrão, todos os novos usuários e funções têm as permissões de PUBLIC. Para revogar permissões de PUBLIC de um usuário ou função, ou conceder novamente essas permissões a eles, adicione a palavra-chave PUBLIC na instrução REVOKE ou GRANT.
- GaussDB(DWS) concede as permissões para objetos de certos tipos ao PUBLIC. Por padrão, as permissões em tabelas, colunas, sequências, fontes de dados externas, servidores externos, esquemas e tablespaces não são concedidas ao PUBLIC, mas as seguintes permissões são concedidas ao PUBLIC;
- Permissão CONNECT de um banco de dados
- permissão CREATE TEMP TABLE de um banco de dados
- Permissão EXECUTE de uma função
- Permissão USAGE para idiomas e tipos de dados (incluindo domínios)
- Um proprietário de objeto pode revogar as permissões padrão concedidas a PUBLIC e conceder permissões a outros usuários conforme necessário.
Exemplo de operações
Execute o seguinte comando para revogar a permissão do usuário u1 para acessar o banco de dados gaussdb:
- Conecte-se ao banco de dados GaussDB(DWS) gaussdb.
1 2
gsql -d gaussdb -p 8000 -h 192.168.x.xx -U dbadmin -W password -r gaussdb=>
- Crie usuário u1.
1
gaussdb=> CREATE USER u1 IDENTIFIED BY 'xxxxxxxx';
- Verifique se o usuário u1 pode acessar o GaussDB.
1 2
gsql -d gaussdb -p 8000 -h 192.168.x.xx -U u1 -W password -r gaussdb=>
- Conecte-se ao banco de dados gaussdb como administrador dbadmin e execute o comando REVOKE para revogar a permissão connect on database do usuário public.
1
gsql -d gaussdb -h 192.168.x.xx -U dbadmin -p 8000 -r
1 2
gaussdb=> REVOKE CONNECT ON DATABASE gaussdb FROM public; REVOKE
- Verifique o resultado. Use u1 para se conectar ao banco de dados. Se as seguintes informações forem exibidas, a permissão connect on database do usuário u1 foi revogada com êxito:
1 2 3
gsql -d gaussdb -p 8000 -h 192.168.x.xx -U u1 -W password -r gsql: FATAL: permission denied for database "gaussdb" DETAIL: User does not have CONNECT privilege.