Skip to content

$maskedAccess() - Campos mascarados ​

Esta palavra-chave é usada para mostrar, 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 que não pertencem a um determinado grupo, $maskedAccess() mantém os dados sensíveis numa definição própria — com as suas próprias permissões a reger o acesso direto a ela — e traz esses dados, mascarados, apenas onde são necessários.

$maskedAccess() é aplicado a um campo do tipo grupo. Os campos dentro desse grupo usam $maskedInfo() para escolher que campos da definição protegida são mostrados.

Instalação ​

cob-cli customize masked-access

Utilização: ​ ​

$maskedAccess(definition_name,reference_field)

Opções:

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

WARNING

$maskedAccess() tem de ser usado num campo que também esteja declarado como $group. A palavra-chave não tem efeito num campo normal. É normalmente combinada com $expanded para que o bloco mascarado apareça aberto quando a instância é apresentada.

$maskedInfo() - Mostrar um campo mascarado ​ ​

Cada campo dentro de um grupo $maskedAccess() declara que campo da definição protegida mostra.

$maskedInfo(remote_field)

Opções:

  • remote_field: o nome do campo da definição protegida cujo valor é mostrado na instância atual

WARNING

$maskedInfo() só é válido num campo filho direto de um grupo configurado com $maskedAccess(). Não é resolvido em campos colocados fora desse grupo, nem em campos aninhados um nível abaixo, dentro de um subgrupo — os valores mascarados têm de estar listados imediatamente abaixo do grupo $maskedAccess().

Como são apresentados os valores ​ ​

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

INFO

Os valores dentro do grupo aparecem sempre mascarados quando a instância é apresentada — cada um é mostrado como ************ — e só são revelados quando o utilizador clica deliberadamente no botão do olho. Abrir, imprimir ou partilhar uma instância no ecrã nunca expõe, por si só, os dados sensíveis; é sempre necessária uma ação explícita do utilizador. Os valores nunca são guardados na definição atual: são lidos da definição protegida sempre que a instância é apresentada.

$maskedAccess() é um mecanismo de mascaramento e auditoria, não uma barreira de acesso na instância que os apresenta. Qualquer utilizador com privilégios para ver a instância que contém a informação sensível poderá revelá-la: o olho riscado existe para que os valores não fiquem 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, através das permissões da definição protegida, que regem o acesso direto a ela, e das palavras-chave de campo declaradas no grupo, e não através do próprio $maskedAccess().

Criar e atualizar a instância protegida ​ ​

O grupo $maskedAccess() também pode levar o utilizador diretamente à definição protegida, para que os valores sensíveis possam ser mantidos sem ser preciso procurar a instância certa nessa definição. O link apresentado depende de existir ou não uma instância protegida e das permissões do utilizador na definição protegida:

SituaçãoO que o utilizador vê
Existe uma instância protegida e o utilizador tem privilégios de atualização sobre elaUm link Click here to update junto ao título do grupo, que abre essa instância na definição protegida.
Ainda não existe nenhuma instância protegida e o utilizador pode criar instâncias na definição protegidaUm link Click here to create new dentro do grupo, que permite ao utilizador criar uma instância na definição protegida.
O utilizador não tem nenhum dos dois privilégiosNenhum link. Os valores mascarados (se existirem) são mostrados normalmente.

INFO

Estes links não concedem nenhum acesso adicional: só aparecem quando o utilizador já tem o privilégio correspondente na definição protegida, e a criação ou atualização é feita na própria definição protegida, sujeita às suas permissões e palavras-chave de campo.

Exemplos ​ ​

1. Credenciais de dispositivos fora do inventário de equipamentos ​ ​

A definição Devices é o inventário de equipamentos da operação: toda a equipa de suporte a consulta para encontrar o fabricante, o modelo e o endereço de gestão de um dispositivo. As credenciais de acesso desses dispositivos são necessárias no mesmo sítio — um operador a resolver um problema num dispositivo não deveria ter de as procurar noutro lado —, mas não deviam estar à vista no inventário, deviam existir num único sítio em vez de serem copiadas para cada registo de dispositivo, e cada consulta deveria ficar registada.

Por isso, as credenciais são 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 mostra-as depois através de um grupo mascarado:

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

Neste exemplo:

  • Credentials é o grupo que tem o acesso mascarado. $expanded mantém-no aberto quando a instância é apresentada.
  • Device Credentials é a definição que contém as palavras-passe. É o único sítio onde estão guardadas, e a única definição cujas permissões têm de ser revistas para o acesso direto.
  • Device é o campo de referência dentro de Device Credentials que aponta para Devices. As credenciais mostradas são aquelas cujo Device é o dispositivo que está a ser apresentado.
  • Cada campo filho mostra um campo dessa instância protegida.

WARNING

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

Definição Devices com um grupo $maskedAccess

Definição Device Credentials com referência a Devices

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

Instância de dispositivo com os campos mascarados

Sempre que um utilizador revela os valores, o RecordM regista o acesso como uma instância da definição Masked Access Audit:

Instância de Masked Access Audit que regista uma revelação

O registo contém:

  • Access Date: quando os valores foram revelados.
  • User: quem os revelou.
  • Source Instance: a instância onde os valores foram revelados, neste caso a instância core-sw-lis-01 de Devices.
  • Referred Instance: a instância protegida de onde os valores foram lidos, neste caso a instância de Device Credentials desse dispositivo.
  • Information Accessed: os nomes dos campos que foram revelados (Admin Password, Enable Password, SNMP Community).

INFO

O registo de auditoria indica que campos foram revelados, nunca os seus valores, pelo que os dados sensíveis não são copiados para o histórico de auditoria.