Controle da ACL de campos de função
Ao avaliar o acesso a um campo de função, além de verificar o acesso ao campo de função em si, o sistema também verifica o acesso aos campos de contribuição da função. Campos de contribuição são aqueles usados como argumentos em uma determinada definição de função.
Para obter mais informações sobre campos de função, consulte Campo de função.
Em Rome e anteriores, o sistema simplesmente verifica o acesso ao campo de função em si (assim como em qualquer outro campo). Se as ACLs nesse campo permitirem o acesso, o usuário receberá o valor resultante, independentemente de ter acesso aos campos de contribuição.
No Xanadu e em versões posteriores, o sistema também requer acesso a todos os campos de contribuição para permitir acesso ao campo da função. Se uma ou mais das ACLs de campo de contribuição recusarem o acesso, o campo de função também recusará o acesso.
As únicas operações afetadas pelo novo requisito são leitura e report_view. Report_view tem seus próprios requisitos adicionais.
| Operação | Descrição |
|---|---|
| operação de leitura | Um usuário tem acesso de leitura a um campo de função somente se as seguintes condições forem verdadeiras:
|
| operação report_view | Um usuário tem acesso report_view a um campo de função somente se todas seguintes condições forem verdadeiras:
|
Exemplos
- Tabela: salário
- Colunas: base, bônus, total (todos são números inteiros neste exemplo)
- Campo de função: a coluna total é marcada como um campo de função, com a definição de função
glidefunction:add(base, bonus). - Campos de contribuição: base e bônus, uma vez que já são usados na definição da função
- Funções: salary_admin, bonus_admin
| ACLs | Resultado |
|---|---|
| total, base, bônus: leitura e report_view para a função salary_admin, sem condições ou scripts | Um usuário com a função salary_admin recebe acesso de leitura e report_view ao total porque eles possuem a função necessária. |
| ACLs | Resultado |
|---|---|
|
Foi recusado a um usuário com a função salary_admin o acesso de leitura e report_view para total, porque bônus recusa acesso de leitura a suas funções. |
| ACLs | Resultado |
|---|---|
|
Um usuário com a função salary_admin recebe acesso de leitura para total, porque eles possuem a função necessária para todos os campos. Mas o mesmo usuário com salary_admin não recebe acesso ao report_view, porque a ACL de leitura com o script recusa o acesso por padrão para este caso, mesmo que ele tenha a função necessária. |