Compartilhando conhecimento com o mundo

Com tecnologia do Blogger.

Pesquisa

Download

Blogger Tricks

Blogger Themes

Visitas

Assuntos

11/25/2013

Como evitar privilégios na tabela padrão concedidos para PUBLIC - Informix


O usuário mandou criar uma tabela e dar a permissão de select public, depois de criar a tabela com a permissão fui checar e descobri que as permissões (delete, insert e update) estavam liberadas também mais como isso pode ocorrer? Vou simular o que ocorreu e mostrar duas soluções para este problema, primeiro vamos criar uma tabela com a permissão de select public (somente)
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.
----------------------- dw_sig@sefaz_sig ------- Press CTRL-W for Help --------

drop table nl2020 ;

CREATE TABLE dba.nl2020 (
     conta              DECIMAL(9,0),
     ug_id              DECIMAL(6,0),
     gestao_id          DECIMAL(5,0),
     data_lanc          DATE,
     num_doc            VARCHAR(11),
     evento             DECIMAL(6),
     qdd                DECIMAL(4),
     ug_ident           DECIMAL(6),
     gestao_ident       DECIMAL(5),
     dt_emis            DATE,
     dc                 VARCHAR(1),
     valor              FLOAT,
     insc_evento        VARCHAR(22),
     observacao         CHAR(231)
     );

grant select on "dba".nl2020 to "public" as "dba";
Checando as permissões dessa tabela o public esta liberado pra tudo - não deveria;
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      15:13:01
-------------------------------------------------------------------------------------------------

grant select on "dba".nl2020 to "public" as "dba";
grant update on "dba".nl2020 to "public" as "dba";
grant insert on "dba".nl2020 to "public" as "dba";
grant delete on "dba".nl2020 to "public" as "dba";
grant index on "dba".nl2020 to "public" as "dba";

Pressione qualquer tecla para continuar...
Solução 1

Criando desse jeito dá certo
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.
----------------------- dw_sig@sefaz_sig ------- Press CTRL-W for Help --------
CREATE TABLE dba.nl2020 (    
     conta              DECIMAL(9,0),
     ug_id              DECIMAL(6,0),
     gestao_id          DECIMAL(5,0),
     data_lanc          DATE,
     num_doc            VARCHAR(11),
     evento             DECIMAL(6),
     qdd                DECIMAL(4),
     ug_ident           DECIMAL(6),
     gestao_ident       DECIMAL(5),
     dt_emis            DATE,
     dc                 VARCHAR(1),
     valor              FLOAT,
     insc_evento        VARCHAR(22),
     observacao         CHAR(231)
     );

revoke all on "dba".nl2020 from "public" as "dba";

grant select on "dba".nl2020 to "public" as "dba";
Ela fica com essas permissões corretas
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      15:13:01
-------------------------------------------------------------------------------------------------

grant select on "dba".nl2020 to "public" as "dba";

Pressione qualquer tecla para continuar...
Solução 2

Adicionando esta variável de ambiente
[s343:informix]$/opt/informix64/etc> export NODEFDAC=yes
Executando o script que vai criar a tabela e dando a permissão de grant select
SQL:   New  Run  Modify  Use-editor  Output  Choose  Save  Info  Drop  Exit
Run the current SQL statements.
----------------------- dw_sig@sefaz_sig ------- Press CTRL-W for Help --------
CREATE TABLE dba.nl2020 (    
     conta              DECIMAL(9,0),
     ug_id              DECIMAL(6,0),
     gestao_id          DECIMAL(5,0),
     data_lanc          DATE,
     num_doc            VARCHAR(11),
     evento             DECIMAL(6),
     qdd                DECIMAL(4),
     ug_ident           DECIMAL(6),
     gestao_ident       DECIMAL(5),
     dt_emis            DATE,
     dc                 VARCHAR(1),
     valor              FLOAT,
     insc_evento        VARCHAR(22),
     observacao         CHAR(231)
     );

grant select on "dba".nl2020 to "public" as "dba";
Ficou assim a permissão, correta
-------------------------------------------------------------------------------------------------
25/11/2013                      ***** INFORMIX BASIC SERVICES *****                      15:13:01
-------------------------------------------------------------------------------------------------

grant select on "dba".nl2020 to "public" as "dba";

Pressione qualquer tecla para continuar...
A variável de ambiente NODEFDAC, quando definido como YES, impede o public de receber automaticamente esses privilégios no nível de tabela.

Referencia1 - Referencia2

0 comentários:

Enviar um comentário