Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||
|
4D v20
GRANT
|
GRANT [READ | READ_WRITE | ALL] ON nom_sql TO nom_sql |
||
O comando GRANT permite definir os direitos de acesso associados ao esquema nom_sql (primeiro parâmetro). Estes direitos serão atribuídos ao grupo de usuários 4D designados pelo segundo parâmetro nom_sql.
As palavras chaves READ, READ_WRITE e ALL permitem definir os tipos de acesso autorizados para a tabela:
Note que cada tipo de acesso está definido independentemente dos outros. Em particular, se atribui só os direitos READ a um grupo, isto não terá nenhum efeito já que o grupo como também os outros continuarão se beneficiando do acesso READ_WRITE (atribuído a todos os grupos por padrão). Para definir o acesso READ, deve chamar duas vezes o comando GRANT (ver exemplo 2).
O controle de acesso só aplica as conexões externas. O código SQL executado ao interior de 4D via as etiquetas Begin SQL/End SQL ou os comandos tais como SQL EXECUTE tem acesso total.
Nota de compatibilidade: Durante a conversão de uma base anterior a versão 11.3 ou superior, os direitos de acesso globais (tais como os definidos na página SQL das Preferências da aplicação) se transferem ao esquema por padrão.
O segundo parâmetro nom_sql deve conter o nome do grupo de usuários 4D ao que deseja atribuir direitos de acesso ao esquema. Este grupo deve existir na base 4D.
Nota: 4D permite definir os nomes de grupos incluindo espaços e/ou caracteres acentuados que não são aceitos por SQL padrão. Neste caso, deve colocar o nome entre os caracteres [ e ]. Por exemplo: GRANT READ ON [meu esquema] TO [os administradores]
Somente o Designer e o Administrador da base podem modificar os esquemas.
Aviso: A implementação do esquema SQL exige que o sistema de manejo de acesso de 4D esteja ativado (em outras palavras, uma senha foi atribuida ao Designer). Senão, todos os usuários podem ter acesso aos dados sem restrição
4D garante o princípio de integridade referencial independentemente dos direitos de acesso. Por exemplo, vamos supor que tenha duas tabelas, Tabela1 e Tabela2, conectadas por uma relação de tipo Muitos a Um (Tabela2 -> Tabela1). Tabela1 pertence ao esquema S1 e Tabela2 ao esquema S2. Um usuário que tenha direitos de acesso ao esquema S1 mas não ao S2 pode excluir os registros na Tabela1. Neste caso, para respeitar os princípios de integridade referencial, todos os registros de Tabela2 que estão relacionados com os registros excluídos da Tabela1 também serão removidos.
Você quer autorizar o acesso em leitura escritura de dados do esquema MeuEsquema1 ao grupo "Power_Users":
GRANT READ_WRITE ON MeuEsquema1 TO POWER_USERS
Você quer autorizar um acesso em leitura unicamente ao grupo "Readers". Este caso requer atribuir pelo menos um grupo com direitos READ_WRITE (aquí "Admins") de forma que já não se atribui a todos os grupos por padrão:
GRANT READ ON MySchema2 TO Readers /*Atribuição do acesso em leitura unicamente */
GRANT READ_WRITE ON MySchema2 TO Admins /*Deter o acesso a todos em leitura escritura*/
Produto: 4D
Tema: Comandos SQL
Manual de SQL ( 4D v20)