Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 13251|Resposta: 0

[Fonte] Controle de permissões em nível de coluna no banco de dados Oracle

[Copiar link]
Publicado em 11/12/2015 23:47:14 | | |
O cliente tem uma necessidade, uma tabela com mais de 150 campos, o cliente precisa que apenas alguns campos sejam vistos pelas pessoas da empresa de digitalização, essa exigência pode ser facilmente realizada com uma visualização, o cliente também solicita esses campos, a empresa de digitalização só pode modificar campos individuais, realmente nunca tinha encontrado tanta necessidade de controle de permissões no nível da coluna antes, fiz um experimento, me sinto muito interessante, registre

O cliente tem umDemanda, uma tabela com mais de 150 campos, o cliente pediu para mostrar apenas alguns campos para as pessoas que escanearam a empresa, issoDemandaPode ser facilmente implementado com uma visualização, e o cliente solicita que esses campos, a empresa de digitalização só possa modificar campos individuais, realmente nunca tinha encontrado tanta necessidade de controle de permissão no nível da coluna antes, fiz um experimento, me sinto muito interessante, registreTesteprocesso.

1. Criar uma tabela de teste e inserir dados de teste pontual:

  SQL> criar table test( número de id, table_name varchar2(50),

proprietário varchar2(50),TABLESPACE_NAME varchar2(50));

Mesa criada.

SQL> insira em teste selecione rownum, table_name, proprietário,

TABLESPACE_NAME de dba_tables;

5490 linhas criadas.

SQL> commit;

Commit completo.

2. Crie um usuário de teste e conceda permissões básicas:

SQL> CONN / AS SYSDBA

Conectado.

SQL> criar fluxo de usuário identificado pelos usuários padrão do espaço de tabela do fluxo;

Criado pelo usuário.

SQL> conceder conectar, recurso para stream;

Grant teve sucesso.

3. Conceder permissões de nível de couna aos usuários de teste:

SQL> autenticação/autenticação de conn.

Conectado.

SQL> conceder atualização (id) ao testar para stream;

Grant teve sucesso.

SQL> conceder insert (table_name) no teste para stream;

Grant teve sucesso.

SQL>

SQL> conceder seleção no teste para stream;

Grant teve sucesso.

4. Consultar informações de configuração de permissões em nível de coluna:

SQL> selecione GRANTEE,PROPRIETÁRIO,TABLE_NAME,COLUMN_NAME,CONCEDENTE,PRIVILÉGIO,

CONCEDÍVEL de user_col_privs;

PROPRIETÁRIO GENEROSO TABLE_NAME COLUMN_NAME PRIVILÉGIO DE CONCEDENTE GRA

------- ----- ---------- ----------- ------- --------- ---

TESTE DE AUTENTICAÇÃO EM FLUXO TABLE_NAME INSERA NÃO

AUT-AUTH TEST ID AUTH INSERT NÃO

AUTENTICAÇÃO AUT, ID DO TESTE DE AUTENTICAÇÃO, ATUALIZAÇÃO DE AUTENTICAÇÃO NÃO

STREAM AUTH ID DE TESTE DE AUTENTICAÇÃO ATUALIZAÇÃO NÃO

5. Usuário de teste de login verifica permissão SELECT:

SQL> stream/stream conn

Conectado.

SQL> selecione * de(selecione * da ordem do teste auth.por 1) onde rownum< =10;

ID TABLE_NAME PROPRIETÁRIO DO ESPAÇO NA MESA

---------- -------------------- ---------- ----------

1 SISTEMA SYS ICOL$

SISTEMA SYS 2 IND$

3 COL$ SISTEMA SYS

4 CLU$ SISTEMA SYS

SISTEMA SYS 5 TAB$

6 LOB$ SISTEMA SYS

7 SISTEMA SYS$ COLTYPE$

8 SISTEMA SYS SUBCOLTYPE$

SISTEMA SYS 9 NTAB$

10 SISTEMA REFCON$ SYS

10 linhas selecionadas.

6. Verificar controle de permissões UPDATE em nível de coluna:

SQL> update auth.test set owner='STREAM' onde id = 1;

update auth.test set owner='STREAM' onde id = 1

  *

ERRO na linha 1:

  ORA-01031: insufficient privileges

Pode-se ver que o valor do campo OWNER da tabela de teste não pode ser modificado, relatório ORA-01031: Permissão insuficiente, já que o acima dá ao usuário do teste permissão para modificar o campo ID da tabela de teste, sendo possível modificar o campo ID.

SQL> atualizar auth.test set id=10 onde id=1;

1 linha atualizada.

Rollback > SQL;

Reversão completa.

7. Verificar controle de permissão INSERT em nível de coluna:

SQL> inserir valores de auth.test (1, 'stream', 'stream', 'users');

inserir em auth.test values(1,'stream', 'stream', 'users')

  *

ERRO na linha 1:

  ORA-01031: insufficient privileges

Como o acima dá ao usuário de teste a permissão de inserção para modificar o campo TABLE_NAME da tabela de teste, é possível inserir TABLE_NAME campo, mas somente se os outros campos não tiverem NÃO ALGUMAS restrições.

SQL> inserir valores em auth.test(table_name) ('stream');

1 linha criada.

Rollback > SQL;

Reversão completa.






Anterior:Tutorial detalhado passo a passo para instalação do Oracle 10G
Próximo:Depois que o Tencent Analytics for ativado, o sistema fica ocupado, por favor, tente novamente mais tarde
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com