---
sourceDocument: Yokohama Customer Service Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/yokohama/customer-service-management

 Release :

    - yokohama

ft:locale :

    - pt-BR

ft:publication_title :

    - Yokohama Customer Service Management

ft:clusterId :

    - csm

bundleId :

    - csm

workflow :

    - Customer and Industry


---

# Funções explícitas em CSM

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

* Versão de lançamento: Yokohama
* 
* Atualizado 30 de jan. de 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 12 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-in-csm__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.

## Funções de CSM recomendadas para usuários internos e externos {#explicit-roles-in-csm__section_utr_jhr_qgb}

Os clientes (usuários externos) que usam a aplicação Gestão de atendimento ao cliente devem receber a função sn_customerservice.customer ou sn_customerservice.consumer. Os agentes de atendimento ao cliente (usuários internos) devem receber a função sn_customerservice_agent ou sn_customerservice_consumer_agent. O sistema garante que o mesmo usuário não seja atribuído a uma função de cliente (externo) e agente (interno).

## Plug-in Explicit Roles {#explicit-roles-in-csm__section_hpv_vtg_5fb}

O plug-in do Atendimento ao cliente (com.sn_customerservice) ativa o plug-in Explicit Roles (com.glide.explicit_roles), que adiciona as funções snc_external e snc_internal. Quando o plug-in é 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.
* 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-in-csm__ul_q1b_wsf_5fb}Fazer o anterior 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.
* 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 as funções existentes foram atribuídas à 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 é atribuída automaticamente aos contatos externos do Portal de atendimento ao cliente. Se o Portal de atendimento ao cliente não estiver ativado, essa função deverá ser concedida manualmente a usuários externos. O acesso aos registros é concedido por meio de ACLs.  
  Nota:  
  Você pode usar a função `isPublic ()` em scripts do Portal de atendimento ao cliente para alterar a configuração de privacidade de uma única inclusão de script do cliente chamável. Para obter mais detalhes, consulte [Inclusões de script](https://www.servicenow.com/docs/access?context=c_ScriptIncludes&version=yokohama&pubname=yokohama-application-development&ft:locale=en-US).
* O acesso ao site do [Sistema de gestão de conteúdo](https://www.servicenow.com/docs/access?context=c_ContentManagementSystem&version=yokohama&pubname=yokohama-platform-user-interface&ft:locale=en-US) também é afetado. O CMS está configurado com Sites (content_site), Páginas (content_page) e outros recursos. Alguns dos sites podem ter a página de Login configurada.
  * Se os sites do CMS não tiverem a página de Login configurada, a função pública será adicionada automaticamente ao campo Funções de leitura em Páginas (content_page) se o campo estiver vazio.
  * Se os sites do CMS tiverem a página de Login configurada, a função snc_internal será adicionada automaticamente ao campo Funções de leitura em Páginas (content_page) se o campo estiver vazio.
  {#explicit-roles-in-csm__ul_r1b_wsf_5fb}
* O acesso ao site do [Portal de serviços](https://www.servicenow.com/docs/access?context=c_ServicePortal&version=yokohama&pubname=yokohama-platform-user-interface&ft:locale=en-US) também é afetado.

  A função snc_internal não é adicionada automaticamente aos registros sp_page, sp_widget ou sp_instance. Se desejar, você pode atribuir a função a novos registros atribuindo snc_internal como um valor padrão no campo Funções dos registros. Para obter detalhes sobre este processo, consulte [Especificar um valor de campo padrão](https://www.servicenow.com/docs/access?context=t_SpecifyingADefaultValue&version=yokohama&pubname=yokohama-platform-administration&ft:locale=en-US).

{#explicit-roles-in-csm__ul_p1b_wsf_5fb}

Não mova [Conjuntos de atualizações do sistema](https://www.servicenow.com/docs/access?context=system-update-sets&version=yokohama&pubname=yokohama-application-development&ft:locale=en-US) entre instâncias com e sem o plug-in Explicit Roles habilitado.  
Nota:  
Este plug-in também requer o plug-in [Contextual Security Manager](https://www.servicenow.com/docs/access?context=r_ContextualSecurity&version=yokohama&pubname=yokohama-platform-security&ft:locale=en-US).

## A propriedade glide.security.explicit_roles.internal_user_blacklist {#explicit-roles-in-csm__section_kjx_qyk_1mb}

O plug-in Explicit Roles assume que todos os usuários existentes na tabela sys_user no momento em que o plug-in é instalado são clientes internos. Um script de correção atribui a função snc_internal a todos os usuários existentes e a qualquer ACL que não tenha uma função.

O script de correção pode falhar ou não terminar a tempo para um usuário que não foi atualizado com a função e que tente acessar um recurso. Para preencher essa possível lacuna, o Contextual Security Manager (CSM) atribui automaticamente a função snc_internal a qualquer usuário que se conecte e não tenha uma função explícita (interna ou externa).

Além disso, o CSM tem um processo de regra de negócios que atribui a função snc_external a uma classificação de seus usuários. No entanto, ao importar grandes conjuntos de clientes externos de CSM, o fluxo de trabalho será definido como falso, portanto, as regras de negócios não serão executadas. Conforme esses usuários tentam acessar um recurso, eles não têm nenhuma função explícita. O Gerente de segurança contextual atribui a função snc_internal por meio de um trabalho agendado chamado Relatório de conflitos e lacunas do plantão que é executado a cada 7 dias. Quando o plug-in Explicit Roles está ativo, este trabalho atribui a função snc_internal ao usuário externo do CSM, já que o usuário não tem a função snc_internal nem a snc_external.

Para evitar o fornecimento inadvertidamente da função snc_internal a usuários externos, o plug-in Funções explícitas inclui um glide.security.explicit_roles.internal_user_blacklistpropriedade para impedir que os tipos de usuário se tornem snc_internal. Se não houver tipos de usuários na tabela glide.security.explicit_roles.internal_user_blacklist, por padrão o Contextual Security Manager atribuirá a função snc_internal a todos os usuários. Se houver nomes de classe na tabela lista de bloqueios e se o tipo de classe sys_user estiver na tabela lista de bloqueios, o CSM atribuirá a função snc_external. Caso contrário, o CSM atribuirá a função snc_internal padrão como de costume.

Para ParisEsta propriedade é habilitada por padrão para instâncias zBoot e desabilitada por padrão para upgrades.

## Fornecendo acesso a tabelas para usuários externos {#explicit-roles-in-csm__section_whp_stf_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 [Forneça aos usuários externos acesso a uma tabela](https://servicenow-prod.fluidtopics.net/q5Lc34SMrkt~RrauKSsahg "Para permitir que usuários apenas com a função snc_external acessem a exibição de lista de uma tabela, você deve criar uma série de ACLs.").

## O método hasRoles() {#explicit-roles-in-csm__section_rg5_ttf_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-in-csm__ul_vxv_c51_5fb}

## Exclusão mútua: snc_external versus snc_internal {#explicit-roles-in-csm__section_pq4_xdg_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-in-csm__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-in-csm__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-in-csm__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-in-csm__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-in-csm__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-in-csm__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-in-csm__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-in-csm__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-in-csm__ol_ecs_krf_flb} | A ação é anulada. Repita para grupos já aninhados, com a mesma expectativa. |
[ ]

{#explicit-roles-in-csm__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.

