[firebase-br] Verifique sempre o USER tem GRANT EXECUTE para essa Function, Procedure ou qualquer outro objeto

Gladiston Santana gladiston.santana em gmail.com
Quinta Outubro 26 10:20:57 -03 2023


Numa situação assim, muitas pessoas fazem login com o usuário SYSDBA ou
similar com a role RDB$ADMIN e se esquivam desse problema de falta de
permissão, mas acho isso uma falha critica pq sabendo-se da senha eu
poderia usar uma ferramenta externa qualquer para causar danos à base.
Uma abordagem que faço no meu programa, é fazer o programa acme.exe usar
sempre a mesma ROLE, a ROLE têm permissão a tudo que o programa precisa e
então usuários que rodarão este programa são associados a essa role. O
usuário tem zero permissão em qualquer lugar do banco, mas internamente, o
programa faz a conexão desse usuário com essa ROLE e daí então o usuário
enquanto usa o programa herda as permissões da role. No login do usuário
ele informa o usuário e a senha, mas o acme.exe junta a ROLE secretamente.
Outra dica, durante o desenvolvimento do seu sistema, nada de usar
administrador ou  SYSDBA, use apenas um usuário normal do windows e usuário
normal de banco e assim saberá os GRANTs que a role precisará ou
pastas/registros que o Windows restringe o acesso.
Aqui no Brasil, boa parte dos programadores gostam de usar a conta de
administrador do Windows e repetem essa péssima prática usando as contas
sa, SYSDBA, dbo, root,.... dos outros bancos de dados, o qual divergirá do
cenário do ambiente de produção.

[]´s


Em qui., 26 de out. de 2023 às 07:12, Mário Reis via lista <
lista em firebase.com.br> escreveu:

> Bom dia a todos os Companheiros,
> *Cannot update. (No update query)*
> Estou aqui, não exatamente para reportar um erro, mas antes a sua
> resolução. Estou a migrar para o FB4 e comecei, exatamente, por migrar as
> minhas funções das DLL para Funções Sql que são possíveis desde o FB3.0.
> Concomitantemente, aproveitei para fazer algo que esta necessitando fazer
> com urgência, migrar um campo NIB (N.º Interbancário [nacional]) de 21
> digits, dois dos quais [check digits] para IBAN:
> All EU countries using the [IBAN] (
> https://es.wikipedia.org/wiki/International_Bank_Account_Number)
> (International Bank Account Number) - que, basicamente, em Portugal se
> mantém o mesmo, mas ao qual foram juntos na frente + 4 digits "PT50".
> Comecei por aí refiz a função testei parecia perfeito funcionava sem bugs
> passei o banco em migração e tudo OK com o user SYSDBA.
> Porém,  do lado meu cliente (Delphi) o USER em teste tem credenciais bem
> mais baixas. O erro custou-me uns dias de mal dormir essa falta devido à
> falta do *GRANT EXECUTE*. Normalmente em debug os clientes Delphi ou
> C.Sharp dão erro nas tabelas sem autoridade para o USER.
> Aqui não deu apenas me deixava a DataSet com um trigger associado à
> Validação da minha função em read only com "Cannot update. (No update
> query)".
> Obrigado a quantos tentaram ajudar.
>
>


Mais detalhes sobre a lista de discussão lista