Funções explícitas
Você pode conceder acesso à sua instância a usuários internos e externos. No entanto, talvez você não queira que os dois tipos de usuários tenham o mesmo nível de acesso. Para fornecer segurança adicional, cada usuário deve ter pelo menos uma função para que a instância possa distinguir entre usuários internos e externos.
A partir da versão Paris, nenhum usuário pode ter ambas as funções explícitas (snc_internal e snc_external). Os grupos e a contenção de função não podem incluir as duas funções, já que isso faria com que qualquer membro do grupo ou usuário atribuído a esse grupo ou função tenha automaticamente as ambas as funções. O ServiceNow AI Platform cancela qualquer operação que crie esse cenário.
- Tabelas sem a função que herda a função snc_external ou a função pública.
- Recursos do tipo sem registro, como processadores e páginas de IU sem ter acesso à função snc_external ou uma função que herde a função snc_external.
- Painéis Análise da plataforma.
Não marque a função snc_internal como elevada. Caso contrário, os usuários internos não poderão acessar a instância.
Plug-in Explicit Roles
Quando o plug-in Explicit Roles é ativado:
- Todos os usuários devem ter a função snc_internal para acessar recursos internos ou a função snc_external para acessar recursos externos. Usuários sem nenhuma função explícita podem acessar somente recursos públicos.
- Todos os usuários existentes são atribuídos automaticamente à função snc_internal. Esta função não muda os níveis de acesso existentes ou o comportamento do sistema. Em vez disso, ela fornece uma categoria para diferenciar usuários internos de usuários externos. Todos os usuários internos mantêm o mesmo nível de acesso de antes da ativação do plug-in.Dica:Para impedir a mudança da funcionalidade existente para os usuários, a ativação do plug-in Explicit Roles atribui a função do usuário snc_internal a todos os usuários existentes na instância. Isso inclui todos os usuários externos adicionados antes da ativação do plug-in Explicit Roles. Depois que o plug-in Explicit Roles for ativado, faça o seguinte para todos os usuários externos adicionados antes da ativação do plug-in Explicit Roles:
- Remova a função snc_internal.
- Adicione a função snc_external.
- Usuários recém-criados são atribuídos automaticamente à função snc_internal quando eles tentam se conectar à instância pela primeira vez, a menos que a função snc_external seja explicitamente atribuída a eles. Você pode adicionar a função snc_external a um novo usuário antes de ele se conectar à instância para fornecer direitos de usuário externo. Importante:
Ative este plug-in durante uma janela de manutenção ou quando poucos usuários estiverem conectados. Os usuários conectados no momento em que o plug-in for ativado não serão atribuídos dinamicamente à função snc_internal. Em vez disso, os usuários devem sair e conectar-se novamente para serem atribuídos à função snc_internal. Quando o plug-in estiver ativado, você pode adicionar ou remover as funções snc_internal e snc_external a qualquer momento para alterar os direitos do usuário.
Depois que o plug-in é ativado, sempre que um usuário se conecta, ele recebe a função snc_internal se a conta ainda não tiver essa função, ou a função snc_external. Isso inclui usuários conectados por meio de representação.
- Todas as ACLs existentes que não tenham um requisito de função são atribuídas automaticamente à função snc_internal. Como as ACLs e os usuários existentes foram atribuídos à função snc_internal, os níveis de acesso existentes não mudam.
- As ACLs recém-criadas que não tenham um requisito de função são atribuídas automaticamente à função snc_internal. Esta atribuição de função não se aplica a uma ACL recém-criada com uma função atribuída.
- Para todos os registros de Processador [sys_processor] existentes ou registros de Processador [sys_processor] recém-criados com Type=script, a função snc_internal será adicionada automaticamente ao campo Funções se este estiver vazio.
- Para restringir o acesso a páginas de IU a usuários internos, o plug-in atribui automaticamente a função snc_internal à * ACL com um Tipo de ui_page.
- Para restringir o acesso a processadores a usuários internos, o plug-in atribui automaticamente a função snc_internal à * ACL com um Tipo de processador.
- Usuários externos devem obter, no mínimo, a função snc_external para acessar a instância. Esta função deve ser concedida manualmente a usuários externos. O acesso aos registros é concedido por meio de ACLs.
Não mova Conjuntos de atualizações do sistema entre instâncias com e sem o plug-in Explicit Roles habilitado. Para obter mais informações, consulte Conjuntos de atualizações do sistema.
Comportamento de glide.security.explicit_roles.do_not_fix
glide.security.explicit_roles.do_not_fix passou por ajustes e mudou para snc_internal. Agora, a função snc_internal é a mesma na memória e em sys_user_has_role. O novo comportamento de glide.security.explicit_roles.do_not_fix é:| Valor | Resultado |
|---|---|
| Falso | Adicionar a função snc_internal à memória e a sys_user_has_role |
| Verdadeiro | Não adicionar a função snc_internal à memória nem a sys_user_has_role |
glide.security.explicit_roles.ignore.snc_internal.exclude_role_list. glide.security.explicit_roles.do_not_fix, use a propriedade glide.security.explicit_roles.do_not_fix_in_memory.Fornecendo acesso a tabelas para usuários externos
Você pode fornecer a usuários externos acesso a uma tabela adicionando uma função à tabela que herda a função snc_external. Para obter mais informações, consulte Provide external users access to a table.
O método hasRoles()
O método hasRoles() ainda está disponível, mas será descontinuado na versão Geneva. Em vez disso, use o método hasRole(nome da função).
hasRoles(), observe estas mudanças:- Este método exclui automaticamente a função snc_internal ao verificar as funções. Isso significa que se um usuário tiver apenas a função snc_internal, o método
hasRoles()ainda retornará falso. - Se o usuário tiver a função snc_external, o método retornará falso porque a instância considera que os usuários externos não têm uma função.
Exclusão mútua: snc_external versus snc_internal
- Atribua ao usuário Abel Tuter a função snc_internal.
- Atribua ao usuário Abel Tuter a função snc_external.
Resultado: a adição da função snc_external falhará porque Abel Tuter tem a função snc_internal.
Exemplo: adicionar as duas funções explícitas a um grupo (colisão direta):
- Considere um grupo chamado Grupo de Teste que atualmente não tem funções explícitas atribuídas a ele.
- Adicione Abel Tuter ao Grupo de Teste.
- Adicione a função snc_external ao Grupo de Teste.
Resultado: a adição da função snc_external falhará porque Abel Tuter já tem a função snc_internal e não pode ter as duas funções.
- Atribua ao usuário Abel Tuter a função snc_internal.
- Considere um grupo chamado Grupo de Teste que atualmente não tem funções explícitas atribuídas a ele.
- Adicione Abel Tuter ao grupo de teste.
- Adicione a função snc_external ao Grupo de Teste.
Resultado: a adição da função snc_external ao grupo falhará porque Abel Tuter herdaria a função snc_external por sua associação ao grupo. As duas funções explícitas seriam atribuídas ao mesmo usuário, o que não é permitido.
Para outros exemplos, consulte a tabela a seguir:
| Função | Tentativa de ação | Resultado |
|---|---|---|
| Colisão direta | ||
| O usuário tem a função snc_internal. | Adicione a função snc_external. | A ação é anulada. |
| O usuário tem a função snc_external. | Adicione a função snc_internal. | A ação é anulada. |
| O usuário não tem função explícita. | Adicione a função snc_internal ou snc_external. | A função é adicionada. |
| O usuário tem ambas as funções explícitas (colisão existente). | Adicione o usuário a um grupo sem funções. | A ação é anulada. |
| Uma função não associada a nenhum usuário contém a função snc_internal. | Adicione a função snc_external. | A ação é anulada. |
| Uma função não associada a nenhum usuário contém a função snc_external. | Adicione a função snc_internal. | A ação é anulada. |
| Uma função tem ambas as funções explícitas (colisão existente). | Adicione a função a um usuário, função ou grupo. | A ação é anulada. |
| Um grupo sem membros tem a função snc_internal. | Adicione a função snc_external. | A ação é anulada. |
| Um grupo sem membros tem a função snc_external. | Adicione a função snc_internal. | A ação é anulada. |
| Um grupo sem membros não tem funções. | Adicione a função snc_internal ou snc_external. | A função é adicionada. |
| Colisão indireta | ||
| Contenção de função com colisão |
|
A ação é anulada. |
| Contenção de função sem colisão |
|
A função é adicionada ao usuário e à Função de Teste. |
| Contenção de grupo com colisão |
|
A ação é anulada. |
| Contenção de grupo sem colisão |
|
A função é adicionada ao grupo primário, ao grupo secundário e ao usuário. |
| Contenção de grupo com colisão mais contenção de função com colisão | Adicione contains_external ao Grupo de Teste 1, o primário do Grupo de Teste 2. | O Grupo de Teste 1 e o Grupo de Teste 2 obtêm contains_external, mas não obtêm explicitamente a função snc_external. |
| Adicione a função snc_internal ao Grupo de Teste 2, o secundário do Grupo de Teste 1. | A ação é anulada. | |
| Mudança de grupo primário mais contenção de grupo |
|
A ação é anulada. Repita para grupos já aninhados, com a mesma expectativa. |
A causa de uma ação anulada aparece na mensagem de erro e deve ser resolvida antes que outra tentativa seja bem-sucedida.
Para casos diretos, como adicionar uma função explícita a um usuário individual, verifique qual função explícita o usuário deve ter. Se o usuário tiver a função explícita incorreta, ele deverá ser removido primeiro e, em seguida, a função explícita correta deverá ser adicionada.
Para casos indiretos, como adicionar uma função explícita a um grupo (para que um membro do grupo receba as duas funções explícitas), avalie se esse usuário deve estar no grupo. Além disso, determine se o grupo deve receber a função explícita, incluindo qualquer herança por meio da hierarquia de grupo e contenção de função.
Observe que o ServiceNow AI Platform relata somente a primeira colisão possível encontrada. Se as tentativas repetidas continuarem a falhar após a correção, com uma causa raiz diferente a cada vez, reavalie a interdependência de usuário / grupo / função relevante de forma mais ampla. Talvez seja necessário repensar como os grupos e as contenções de função estão estruturados.
Como solicitar Funções explícitas
Ative Funções explícitas solicitando o plug-in "Explicit Roles" (com.glide.explicit_roles) por meio do Now Support Catálogo de serviços.
Antes de Iniciar
Função necessária: administrador