---
sourceDocument: Segurança da plataforma Yokohama
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/yokohama/platform-security

 Release :

    - yokohama

ft:locale :

    - pt-BR

ft:publication_title :

    - Segurança da plataforma Yokohama

ft:clusterId :

    - psec

bundleId :

    - psec

workflow :

    - Platform


---

# Funções explícitas

# Funções explícitas {#ariaid-title1}

* Versão de lançamento: Yokohama
* 
* Atualizado 30 de jan. de 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 11 min. de leitura

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 Now Platform cancela qualquer operação que crie esse cenário.
Usuários externos devem obter, no mínimo, a função snc_external. A função snc_external indica que o usuário é externo à organização. Eles não devem ter nenhum acesso aos recursos, a não ser os permitidos explicitamente por meio de ACLs para a função snc_external ou funções adicionais que herdam a função snc_external. Por padrão, os usuários com a função snc_external não podem acessar:

* Recursos Scripted REST APIs que não estejam marcados como externos.
* 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.
{#explicit-roles__ul_gry_ldh_b2b}

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 {#explicit-roles__section_dsv_ltf_5fb}

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.
  {#explicit-roles__ul_jlw_rsf_5fb}Fazer isso garante que os usuários externos adicionados antes de ativar o plug-in Explicit Roles não tenham acesso a recursos internos que devem estar disponíveis somente para usuários internos.
* 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.

{#explicit-roles__ul_ilw_rsf_5fb}

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.  
Nota:  
Este plug-in também requer o plug-in [Contextual Security Manager](https://servicenow-prod.fluidtopics.net/lpHstQSAWYJ5A4bjUZ1t6Q "O Contextual Security Manager protege seus dados ao controlar a autorização de leitura, gravação, criação e exclusão.").

## Comportamento de glide.security.explicit_roles.do_not_fix {#explicit-roles__section_rlc_t1m_zbc}

A partir da versão Xanadu, `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` é:{#explicit-roles__table_nyh_rbm_zbc__entry__2}

| 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 |
[Tabela 1. Novo comportamento de glide.security.explicit_roles.do_not_fix]

{#explicit-roles__table_nyh_rbm_zbc}Para excluir a função snc_internal de determinados usuários, use a propriedade `glide.security.explicit_roles.ignore.snc_internal.exclude_role_list`.  
Dica:  
Para reverter para o comportamento anterior de `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 {#explicit-roles__section_d5y_vtf_5fb}

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 .

## O método hasRoles() {#explicit-roles__section_azp_wtf_5fb}

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)`.  
Se você usar o método `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.
{#explicit-roles__ul_vxv_c51_5fb}

## Exclusão mútua: snc_external versus snc_internal {#explicit-roles__section_u5n_zdg_flb}

Now Platform impede que os usuários tenham as funções snc_external e snc_internal. Now Platform aplica esta exclusão mútua em todos os lugares do sistema e grava mensagens de erro nos logs de cada conflito.  
Nota:  
As ACLs podem ter ambas as funções se os recursos de ACL devem ser acessíveis a todos os usuários.  
Exemplo: adicionar as duas funções explícitas a um usuário (colisão direta):

1. Atribua ao usuário Abel Tuter a função snc_internal.
2. Atribua ao usuário Abel Tuter a função snc_external.
{#explicit-roles__ol_ub1_scb_3lb}

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):

1. Considere um grupo chamado Grupo de Teste que atualmente não tem funções explícitas atribuídas a ele.
2. Adicione Abel Tuter ao Grupo de Teste.
3. Adicione a função snc_external ao Grupo de Teste.

{#explicit-roles__ol_jck_4db_3lb}

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.  
Exemplo: adicionar uma função explícita a um grupo em que um membro do grupo tem a função explícita conflitante (colisão indireta):

1. Atribua ao usuário Abel Tuter a função snc_internal.
2. Considere um grupo chamado Grupo de Teste que atualmente não tem funções explícitas atribuídas a ele.
3. Adicione Abel Tuter ao grupo de teste.
4. Adicione a função snc_external ao Grupo de Teste.
{#explicit-roles__ol_eby_n2b_3lb}

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:  
{#explicit-roles__table_eqm_tt2_flb__entry__3}

| 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 | 1. Conceda uma função chamada Função de Teste a um usuário com a função snc_internal. 2. Adicione a função snc_external à Função de Teste. {#explicit-roles__ol_tfn_zpf_flb} | A ação é anulada. |
| Contenção de função sem colisão | 1. Conceda uma função chamada Função de Teste a um usuário sem funções. 2. Adicione a função snc_external à Função de Teste. {#explicit-roles__ol_sbc_2qf_flb} | A função é adicionada ao usuário e à Função de Teste. |
| Contenção de grupo com colisão | 1. Adicione um usuário que tenha a função snc_internal a um grupo chamado Grupo de Teste 2 (secundário do Grupo de Teste 1). 2. Adicione a função snc_external ao Grupo de Teste 2. 3. Adicione a função snc_external a um grupo primário chamado Grupo de teste 1 (primário do Grupo de Teste 2). {#explicit-roles__ol_htb_kqf_flb} | A ação é anulada. |
| Contenção de grupo sem colisão | 1. Adicione um usuário sem funções a um grupo chamado Grupo de Teste 2 (secundário do Grupo de Teste 1). 2. Adicione a função snc_external ou snc_internal ao Grupo de Teste 1 (primário do Grupo de Teste 2). {#explicit-roles__ol_fpx_nqf_flb} | 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. |
| Contenção de grupo com colisão mais contenção de função com colisão | 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 | 1. Remova o Grupo de Teste 1 como primário do Grupo de Teste 2. 2. Adicione a função snc_internal ao Grupo de Teste 1. 3. Adicione a função snc_external ao Grupo de Teste 2. 4. No Grupo de Teste 2, defina o Grupo de Teste 1 como o grupo primário e salve. {#explicit-roles__ol_ecs_krf_flb} | A ação é anulada. Repita para grupos já aninhados, com a mesma expectativa. |
[ ]

{#explicit-roles__table_eqm_tt2_flb}

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 Now 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 {#ariaid-title2}

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. {#activate-explicit-roles__activate-explicit-roles-info}

### Antes de Iniciar

Função necessária: administrador  
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.

### Procedimento

1. Navegar até TudoAplicações do sistemaTodas as aplicações disponíveisTudo. {#activate-explicit-roles__navigate-plugins}
{#activate-explicit-roles__navigate-plugins}
2. Na página Todas as Aplicações, selecione Solicitar plug-in para abrir o formulário Ativar plug-in em Now Support.  
   {#activate-explicit-roles__request-plugin}
{#activate-explicit-roles__request-plugin}
3. No Now Support, selecione o link para acessar o Now Support Portal de serviços Catálogo de serviços.  
   {#activate-explicit-roles__redirect-hi}
{#activate-explicit-roles__redirect-hi}
4. Selecione sua instância.
5. Selecione Ações \> Ativar plug-in.
6. No formulário Ativar plug-in, forneça as seguintes informações.  
   {#activate-explicit-roles__table_awx_bhf_ygb__entry__2}{#activate-explicit-roles__p_ub1_nfg_h1c}{#activate-explicit-roles__p_vb1_nfg_h1c}{#activate-explicit-roles__p_yb1_nfg_h1c}

   | Campo | Descrição |
   |-|-|
   | Qual é a sua instância de destino | Instância na qual o plug-in será ativado. |
   | Qual plug-in você deseja ativar | Nome do plug-in a ser ativado.{#activate-explicit-roles__p_wb1_nfg_h1c} Nota: Se o sistema não listar o plug-in desejado ou se você estiver ativando o plug-in em uma instância do OEM ou no local, marque a caixa de seleção O plug-in que estou procurando não está listado e insira o nome do plug-in. |
   | Selecionar data e hora de manutenção | A data e a hora para ativar o plug-in.{#activate-explicit-roles__p_zb1_nfg_h1c} Nota: Os plug-ins são ativados em dois lotes, uma pela manhã e outra à noite, em todos os dias úteis no fuso horário do Pacífico dos EUA. Se o plug-in deve ser ativado em um momento específico, insira a solicitação no campo Motivo/Comentários. |
   [Tabela 2. Formulário Ativar plug-in]

   {#activate-explicit-roles__table_awx_bhf_ygb}  
   Por exemplo, consulte o formulário a seguir para ativar o plug-in Espaço de trabalho CSM em uma instância chamada Minha instância.{#activate-explicit-roles__p_bc1_nfg_h1c}
   Figura 1. Formulário Ativar plug-in {#activate-explicit-roles__request-form}
{#activate-explicit-roles__request-form}
7. Selecione Enviar.  
   Para obter detalhes adicionais sobre como solicitar um plug-in, consulte [Solicitando um plug-in do catálogo de serviços \[KB0751715\] artigo no Now Support
   Base de conhecimento.](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB0751715) {#activate-explicit-roles__submit-request}
{#activate-explicit-roles__submit-request}{#activate-explicit-roles__steps_ljr_zwf_bwb}

