[firebase-br] Seguranca

Antônio Carvalho Portela antoniocarvalhoportela em hotmail.com
Qui Set 7 21:33:39 -03 2006


*******************************
PROTEGER BANCO
*******************************
Primeiro acesse o IBCONSOLE ou qualquer outra ferramenta que preferir 
criamos então um usuário qualquer exemplo: "PROTEGIDO" e coloque uma senha 
de sua preferencia exemplo: "123456"

Logo após crie um banco de dados com o usuário "PROTEGIDO"
Exemplo: create database 'C:\teste.gbd' page_size 1024 user 'PROTEGIDO' 
password '123456';

Crie também um Role para SYSDBA.
CREATE ROLE SYSDBA;

Agora que começa o macete !

A partir daqui vamos garantir os direitos do usuário 'PROTEGIDO' e revogar 
todos os direitos do usuário 'SYSDBA'.

Os comandos que devem ser executados são os seguintes:

GRANT ALL ON CLIENTES TO PROTEGIDO WITH GRANT OPTION;
REVOKE ALL ON CLIENTES FROM PUBLIC;
GRANTO ALL ON FORNEC TO PROTEGIDO WITH GRANT OPTION;
REVOKE ALL ON CLIENTES FROM PUBLIC;

Atenção !!!
Estes comando devem ser repetidos para cada tabela criada no seu banco de 
dados, isso que vai garantir o seu acesso total as tabelas.
Feito isso vamos mais alem os direitos de cria qualquer coisa, como 
SP,Trigger,Funçoes, indices, etc.
Para este banco também ficará restrito ao usuário 'PROTEGIDO'

Vejamos como:
GRANT ALL ON RDB$CHARACTER_SETS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$CHECK_CONSTRAINTS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$COLLATIONS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$DATABASE TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$DEPENDENCIES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$EXCEPTIONS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$FIELDS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$FIELD_DIMENSIONS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$FILES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$FILTERS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$FORMATS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$FUNCTIONS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$FUNCTION_ARGUMENTS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$GENERATORS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$INDEX_SEGMENTS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$INDICES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$LOG_FILES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$PAGES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$PROCEDURES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$PROCEDURE_PARAMETERS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$REF_CONSTRAINTS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$RELATIONS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$RELATION_CONSTRAINTS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$RELATION_FIELDS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$ROLES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$SECURITY_CLASSES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$TRANSACTIONS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$TRIGGERS TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$TRIGGER_MESSAGES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$TYPES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$USER_PRIVILEGES TO PROTEGIGO WITH GRANT OPTION;
GRANT ALL ON RDB$VIEW_RELATIONS TO PROTEGIGO WITH GRANT OPTION;

REVOKE ALL ON RDB$CHARACTER_SETS FROM PUBLIC;
REVOKE ALL ON RDB$CHECK_CONSTRAINTS FROM PUBLIC;
REVOKE ALL ON RDB$COLLATIONS FROM PUBLIC;
REVOKE ALL ON RDB$DATABASE FROM PUBLIC;
REVOKE ALL ON RDB$DEPENDENCIES FROM PUBLIC;
REVOKE ALL ON RDB$EXCEPTIONS FROM PUBLIC;
REVOKE ALL ON RDB$FIELDS FROM PUBLIC;
REVOKE ALL ON RDB$FIELD_DIMENSIONS FROM PUBLIC;
REVOKE ALL ON RDB$FILES FROM PUBLIC;
REVOKE ALL ON RDB$FILTERS FROM PUBLIC;
REVOKE ALL ON RDB$FORMATS FROM PUBLIC;
REVOKE ALL ON RDB$FUNCTIONS FROM PUBLIC;
REVOKE ALL ON RDB$FUNCTION_ARGUMENTS FROM PUBLIC;
REVOKE ALL ON RDB$GENERATORS FROM PUBLIC;
REVOKE ALL ON RDB$INDEX_SEGMENTS FROM PUBLIC;
REVOKE ALL ON RDB$INDICES FROM PUBLIC;
REVOKE ALL ON RDB$LOG_FILES FROM PUBLIC;
REVOKE ALL ON RDB$PAGES FROM PUBLIC;
REVOKE ALL ON RDB$PROCEDURES FROM PUBLIC;
REVOKE ALL ON RDB$PROCEDURE_PARAMETERS FROM PUBLIC;
REVOKE ALL ON RDB$REF_CONSTRAINTS FROM PUBLIC;
REVOKE ALL ON RDB$RELATIONS FROM PUBLIC;
REVOKE ALL ON RDB$RELATION_CONSTRAINTS FROM PUBLIC;
REVOKE ALL ON RDB$RELATION_FIELDS FROM PUBLIC;
REVOKE ALL ON RDB$ROLES FROM PUBLIC;
REVOKE ALL ON RDB$SECURITY_CLASSES FROM PUBLIC;
REVOKE ALL ON RDB$TRANSACTIONS FROM PUBLIC;
REVOKE ALL ON RDB$TRIGGERS FROM PUBLIC;
REVOKE ALL ON RDB$TRIGGER_MESSAGES FROM PUBLIC;
REVOKE ALL ON RDB$TYPES FROM PUBLIC;
REVOKE ALL ON RDB$USER_PRIVILEGES FROM PUBLIC;
REVOKE ALL ON RDB$VIEW_RELATIONS FROM PUBLIC;

Pronto está tudo feito, se o usuário SYSDBA tentar acessar o banco de dados 
criado pelo usuário 'PROTEGIDO' o mesmo irá repudiá-lo mesmo que se copie 
este banco de dados para outro computador.

Mas como nem tudo é perfeito vamos ver uma pequena pedra de tropeço. Se 
copiamos o banco para outro computador ele realmente não será aberto pelo 
usuário 'SYSDBA' porem se eu criar o mesmo usuário chamado 'PROTEGIDO' e até 
mesmo colocar uma senha diferente ele permitira que o mesmo seja aberto 
tranqüilamente.

Portando nada disso feito valerá se você tiver boca grande demais e falar 
qual foi usuário que você usou para criar ou seu banco de dados ou até mesmo 
se tem vários usuários que tem a sua senha 'SYSDBA' e possa ver qual usuário 
que você criou no seu computador.

Espero que tenha ajudado vocês, abraços !!!


----- Original Message ----- 
From: "Wainer" <wainer em megasinal.com.br>
To: <lista em firebase.com.br>
Sent: Thursday, September 07, 2006 8:56 PM
Subject: [firebase-br] Seguranca


Amigos

   Se alguem copiar o fdb de meu cliente e levar para outra maquina 
(logicamente com o fb instalado e etc), so com a senha
de sysdba da maquina dele ja da para abrir o meu banco?
  O que eu entendi é que o controle de usuario é fora da base e o sysdba 
acessaria todas as tabelas independente de quem criou, estou errado?
  Caso isto for verdadeiro, existe alguma forma de bloquear isto?

  obrigado

  Wainer

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista