[firebase-br] Alter User PASSWORD 'xptyDb123'

Gladiston Santana gladiston em vidy.com.br
Ter Jan 21 11:59:10 -03 2014


O seu problema é que voce está colocando numa procedure que em teoria seria
executado por usuários comuns (já que é disparado por triggers), mas como
ele leva um comando que é administrativo então requer permissões especiais,
daí a ideia de usar uma espécie de 'runas' como administrador usando um
execute statement.

No FB2.5 um usuario1 que crie outro usuario2 em tese só é
modificado/alterado/excluido por usuario1 que é o dono, acho que nem o
sysadmin pode se apropriar de um usuario que ele não é o dono, daí voce
deve fazer com que seu programa faça a inclusão sempre pelo mesmo usuario
para que possa ser revertido ou alterado tambem pelo mesmo usuario usando a
clausula 'granted by dono' ou se que quiser simplificar, que tudo seja
feito pelo sysadmin e não precisará usar 'granted by'.


Teste usando apenas execute procedure para incluir/alterar/remover usuario
usando uma ferramenta isql (ibexpert) se funcionar, então deverá funcionar
usando trigger.


Em 20 de janeiro de 2014 13:13, Mário Reis <mariodosreyx em gmail.com>escreveu:

> Olá boa gente,
>
> Ou eu não entendo nada do leio ou qualquer coisa vai mal com o FB2.5 já que
> nos outros que conheço, o ultimo que useio PostgreSql basta, um simples
> sqlScript com um "ALTER USER XPTO WITH PASSWORD 'xptydb123' ", enquanto que
> no Fb2.5 é preciso dar uma volta e tanto, como demonstra o exemplo abaixo:
> CREATE OR ALTER PROCEDURE SP$USER_MANAGER (
> I$CMD_DDL_USER VARCHAR(255),
> I$USER_ADMIN TYPE OF COLUMN TB$USUARIO.NOME = 'ADM',
> I$PASSWORD TYPE OF COLUMN TB$USUARIO.SENHA = 'senha',
> I$ROLE_ADMIN VARCHAR(30) = 'RDB$ADMIN'
> )
> AS
> BEGIN
> EXECUTE STATEMENT I$CMD_DDL_USER
> WITH COMMON TRANSACTION
> AS USER :I$USER_ADMIN PASSWORD :I$PASSWORD ROLE :I$ROLE_ADMIN;
> END
>
> É necessário que o usuário passado como parâmetro de entrada para a
> procedure acima seja um "super usuário" com direitos
> equiparados ao SYSDBA,
> portanto estou utilizando um usuário que é membro da role Rdb$admin
> - que
> também é um novo recurso da versão 2.5.
> CREATE USER ADM
> PASSWORD 'senha'
> FIRSTNAME 'Administrador'
> MIDDLENAME 'do Sistema'
> LASTNAME 'QualquerUm'
> GRANT ADMIN ROLE
>
> Além disso, é necessário atribuir (em cada base de dados) a role
> rdb$admin ao usuário, assim:
>
> GRANT RDB$ADMIN TO ADM
>
> O Trigger abaixo é responsável por inserir, alterar e excluir o
> usuário no
> banco de dados Security2.fdb, condicional ao evento gerado na tabela
> TB$USUARIO.
> CREATE OR ALTER TRIGGER TRI$USER_MANAGER FOR TB$USUARIO
> ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
> AS
> BEGIN
> IF (INSERTING) THEN
> EXECUTE PROCEDURE SP$USER_MANAGER('CREATE USER ' || NEW.NOME ||
> ' PASSWORD ''' || NEW.SENHA || ''' ', 'ADM', 'senha');
> ELSE
> IF (UPDATING) THEN
> EXECUTE PROCEDURE SP$USER_MANAGER('ALTER USER ' || OLD.NOME ||
> ' PASSWORD ''' || NEW.SENHA || ''' ', 'ADM', 'senha');
> ELSE
> EXECUTE PROCEDURE SP$USER_MANAGER('DROP USER ' || OLD.NOME,
> 'ADM', 'senha');
> END
> Ou esquema identico ao exemplo supra, adptado e executado a partir de um
> cliente em Delphi ou C++.
> Depois não crie nunca um user "ADMIN", pois embora o systema aceite,
> também são só problemas. Crie qualquer outro menos "ADMIN" e em
> maiúsculas, sempre.
>
> É que, tanto quanto pude observar, mesmo o próprio para alterar a sua
> própria password sem problemas, tem de seguir o esquema supra com:
>
> Alter user MyUser Password 'xyzptb123' WITH COMMON TRANSACTION
> AS USER ADM PASSWORD 'senha' ROLE 'RDB$ADMIN'. Se cortar o WITH COMMON...
> são só problemas!!!
>
> Alguém me pode esclarecer, sobre o que estou a ver mal?
> Indicar algum lnk esclarecedor que os que vi afora o do exemplo
> supra são
> todos muito obscuros.
> Obrigado
>
>  Mário
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
--
B em B@BU     iB em M@B.  B em MBBO   MBBMMB em B@BZLr    E@@@@i      r@@@BU
vB em M@O     E em B@Bu   BBBM em 0   G em MMM@N8MBB em ZP5r  B em B@k      8B@@O
 OB em B@q   2 em BBBM    B em B@BO   BB em B@B,.:,7B em B@@L uB em B@,    OB em B@.
 ,@@@B@   @BBB@,    @BBB em 8   M em M@@@     PB em B@B  @@@BN   iB em B@L
  U em B@B2 LB em B@X     B em MBBO   MBBM em B     i em BBB@. 7 em B@Bi  B em B@E
   B@@@BiM em M@B.     @BBM em G   M em MMB@     v@@M em B,  G em B@Z v em B@B.
   7B em B@O em B@B5      B em B@B8   BBBM em B     Z@@@B@   iB@@@2 em B@Br
    NB em M@B em B8       @B em B@8   M em B@B em i:i75 em B@B em r    E@@B em B@Bq
    . em B@@@B@:       B em B@B@   @B@@@B em B@B@@@ME;     .BB em MBB@
     55.ANOS        OMOGBS   PBZGGOOMOO117,        7 em BBB@r
     ==============================================r@@@@F=====
     Gladiston Santana                             8 em B@B,
     Supervisor de TI                             G em B@B7
     Tel.:+551147873122 R:228                    :@B em B0
     Grupo VIDY - SGQ ISO9001 - 55 ANOS          @B em B@.
     Visite nosso site: www·vidy·com·br         BB@@@u
     Visite também : www·expolabor·com·br      GB em B@N



Mais detalhes sobre a lista de discussão lista