$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-accessUtilização:
$maskedAccess(definition_name,reference_field)Opções:
definition_name: o nome da definição protegida que contém os campos sensíveisreference_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âmetro | Descrição |
|---|---|
definition_name | A 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_field | O 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ção | O que o utilizador vê |
|---|---|
| Existe uma instância protegida e o utilizador tem privilégios de atualização sobre ela | Um 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 protegida | Um 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égios | Nenhum 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 CommunityDevices 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.$expandedmanté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 deDevice Credentialsque aponta paraDevices. As credenciais mostradas são aquelas cujoDeviceé 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.


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:

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

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-01deDevices. - Referred Instance: a instância protegida de onde os valores foram lidos, neste caso a instância de
Device Credentialsdesse 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.
