Skip to content

$securedAccess() - Campos Seguros

Esta keyword é usada para apresentar, dentro da instância atual, valores que estão guardados numa definição separada e com acesso controlado, sem nunca duplicar esses valores na definição atual. Ao contrário de $restricted(), que esconde um campo da instância atual aos utilizadores fora de um determinado grupo, $securedAccess() mantém os dados sensíveis numa definição própria — com as suas próprias permissões a controlar o acesso direto — e traz esses valores, mascarados, apenas para onde são necessários.

$securedAccess() é aplicada a um campo do tipo grupo. Os campos dentro desse grupo usam $securedInfo() para escolher quais os campos da definição segura que são apresentados.

Utilização:

$securedAccess(definition_name,reference_field)

Opções:

  • definition_name: o nome da definição segura que contém os campos sensíveis
  • reference_field: o nome do campo de referência na definição segura que aponta de volta para a definição atual. O RecordM usa-o para descobrir qual a instância da definição segura que pertence à instância que está a ser apresentada
ParâmetroDescrição
definition_nameA definição segura onde os valores sensíveis estão guardados. As suas próprias keywords de campo ($restricted(), $editForGroup(), …) e permissões continuam a aplicar-se.
reference_fieldO campo de referência declarado na definição segura, a apontar para a definição atual. A instância segura é aquela cujo reference_field corresponde à instância atual.

WARNING

$securedAccess() tem de ser usada num campo que esteja também declarado como $group. A keyword não tem efeito num campo normal. É habitualmente combinada com $expanded, para que o bloco seguro fique aberto quando a instância é apresentada.

$securedInfo() - Mostrar um campo seguro

Cada campo dentro de um grupo $securedAccess() declara qual o campo da definição segura que apresenta.

$securedInfo(remote_field)

Opções:

  • remote_field: o nome do campo na definição segura cujo valor é apresentado na instância atual

WARNING

$securedInfo() só é válida num campo filho direto de um grupo configurado com $securedAccess(). Não é resolvida em campos colocados fora desse grupo, nem em campos aninhados um nível mais abaixo, dentro de um subgrupo — os valores seguros têm de ser listados imediatamente sob o grupo $securedAccess().

Como os valores são apresentados

Um grupo $securedAccess() é apresentado como um bloco destacado, visualmente separado do resto da instância, com um botão de revelar (o olho riscado) que alterna os valores seguros entre a sua forma mascarada e o valor real.

INFO

Os valores dentro do grupo estão mascarados por omissão — cada um é apresentado como ************ — pelo que abrir ou imprimir uma instância nunca expõe acidentalmente os dados sensíveis. Os valores nunca são guardados na definição atual: são lidos da definição segura sempre que a instância é apresentada.

$securedAccess() é um mecanismo de mascaramento e de auditoria, não uma barreira de acesso na instância que os apresenta. Qualquer utilizador com privilégio para ver a instância que envolve a informação sensível conseguirá revelá-la: o olho riscado existe para que os valores não sejam expostos por acidente quando a instância é aberta, impressa ou partilhada no ecrã, e para que cada revelação fique registada. Restringir quem pode chegar aos valores faz-se da forma habitual, pelas permissões da definição segura, que controlam o acesso direto à mesma, e pelas keywords de campo declaradas no grupo, e não pela $securedAccess() em si.

Exemplos

1. Credenciais de equipamentos fora do inventário

A definição Devices é o inventário de equipamento da operação: toda a gente no suporte a consulta para saber o fabricante, o modelo e o endereço de gestão de um equipamento. As credenciais de acesso a esses equipamentos são necessárias no mesmo sítio — um operador a diagnosticar um equipamento não deve ter de as ir procurar a outro lado —, mas não devem estar à vista no inventário, devem existir num único sítio em vez de serem copiadas para cada registo de equipamento, e cada leitura deve ficar rastreável.

As credenciais são, por isso, guardadas numa definição própria, Device Credentials, que tem um campo de referência Device a apontar para Devices:

Device              $ref(Devices)
Admin Password
Enable Password
SNMP Community

Devices apresenta-as depois através de um grupo seguro:

Name                $instanceLabel
Management IP
Credentials         $group $expanded $securedAccess(Device Credentials,Device)
  Admin Password        $securedInfo(Admin Password)
  Enable Password       $securedInfo(Enable Password)
  SNMP Community        $securedInfo(SNMP Community)

Neste exemplo:

  • Credentials é o grupo que suporta o acesso seguro. O $expanded mantém-no aberto quando a instância é apresentada.
  • Device Credentials é a definição que contém as passwords. É o único sítio onde estas existem e a única cujas permissões precisam de ser revistas quanto ao acesso direto.
  • Device é o campo de referência dentro de Device Credentials que aponta para Devices. As credenciais apresentadas são aquelas cujo Device é o equipamento que está a ser mostrado.
  • Cada campo filho apresenta um campo dessa instância segura.

WARNING

Isto mantém as credenciais mascaradas e as suas revelações rastreáveis, mas não impede um utilizador do suporte de as revelar: quem conseguir abrir a instância de Devices consegue clicar no olho. Se as credenciais não puderem sequer estar acessíveis a utilizadores fora da equipa de rede, restrinja o próprio grupo Credentials, para que o bloco só seja apresentado a esse grupo.

Definição Devices com um grupo $securedAccess

Definição Devices com um grupo $securedAccess

A instância passa então a mostrar um bloco Credentials com os três valores mascarados, prontos a serem revelados quando o utilizador clica no ícone do olho:

Instância de equipamento a mostrar os campos seguros