Funções explícitas

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 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.

    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.
      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.

    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.

    Comportamento de glide.security.explicit_roles.do_not_fix

    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 é:
    Tabela 1. 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
    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

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

    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.

    Exclusão mútua: snc_external versus snc_internal

    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.

    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.

    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.

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

    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

    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é Tudo > Aplicações do sistema > Todas as aplicações disponíveis > Tudo.
    2. Na página Todas as Aplicações, selecione Solicitar plug-in para abrir o formulário Ativar plug-in em Now Support.
      Exibição de administrador do formulário Ativar plug-in para capturar detalhes para ativar o plug-in do espaço do CSM em uma instância selecionada. Para obter a descrição de texto, consulte a tabela do formulário Ativar plug-in.
    3. No Now Support, selecione o link para acessar o Now Support Portal de serviços Catálogo de serviços.
      Mensagem informando os clientes sobre o novo portal de serviços com um link fornecido.
    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.
      Tabela 2. Formulário Ativar plug-in
      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.

      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.

      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.

      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.

      Figura 1. Formulário Ativar plug-in
      Exibição de administrador do formulário para capturar detalhes do plug-in do espaço do CSM em uma instância selecionada. Para obter a descrição de texto, consulte a tabela do formulário Ativar plug-in.
    7. Selecione Enviar.
      Para obter detalhes adicionais sobre como solicitar um plug-in, consulte Artigo Solicitar um plug-in do Catálogo de serviços [KB0751715] na Now Support Base de conhecimento.