$maskedAccess() - Campos enmascarados
Esta palabra clave se usa para mostrar, dentro de la instancia actual, valores que están almacenados en una definición separada y con acceso controlado, sin duplicar nunca esos valores en la definición actual. A diferencia de $restricted(), que oculta un campo de la instancia actual a los usuarios que no pertenecen a un grupo determinado, $maskedAccess() mantiene los datos sensibles en una definición propia — con sus propios permisos que rigen el acceso directo a ella — y los trae, enmascarados, solo allí donde se necesitan.
$maskedAccess() se aplica a un campo de tipo grupo. Los campos dentro de ese grupo usan $maskedInfo() para elegir qué campos de la definición protegida se muestran.
Instalación
cob-cli customize masked-accessUso:
$maskedAccess(definition_name,reference_field)Opciones:
definition_name: el nombre de la definición protegida que contiene los campos sensiblesreference_field: el nombre del campo de referencia en la definición protegida que apunta a la definición actual. RecordM lo utiliza para encontrar qué instancia de la definición protegida corresponde a la instancia que se está mostrando
| Parámetro | Descripción |
|---|---|
definition_name | La definición protegida donde se almacenan los valores sensibles. Sus propias palabras clave de campo ($restricted(), $editForGroup(), …) y permisos siguen aplicándose. |
reference_field | El campo de referencia declarado en la definición protegida, que apunta a la definición actual. La instancia protegida es aquella cuyo reference_field coincide con la instancia actual. |
WARNING
$maskedAccess() debe usarse en un campo que también esté declarado como $group. La palabra clave no tiene efecto en un campo normal. Normalmente se combina con $expanded para que el bloque enmascarado aparezca abierto cuando se muestra la instancia.
$maskedInfo() - Mostrar un campo enmascarado
Cada campo dentro de un grupo $maskedAccess() declara qué campo de la definición protegida muestra.
$maskedInfo(remote_field)Opciones:
remote_field: el nombre del campo de la definición protegida cuyo valor se muestra en la instancia actual
WARNING
$maskedInfo() solo es válido en un campo hijo directo de un grupo configurado con $maskedAccess(). No se resuelve en campos situados fuera de ese grupo, ni en campos anidados un nivel más abajo dentro de un subgrupo suyo — los valores enmascarados deben listarse inmediatamente debajo del grupo $maskedAccess().
Cómo se muestran los valores
Un grupo $maskedAccess() se presenta como un bloque destacado, separado visualmente del resto de la instancia, con un botón para revelar (el ojo tachado) que alterna los valores entre su forma enmascarada y su valor real.
INFO
Los valores dentro del grupo siempre aparecen enmascarados cuando se muestra la instancia — cada uno se muestra como ************ — y solo se revelan cuando el usuario hace clic deliberadamente en el botón del ojo. Abrir, imprimir o compartir una instancia en pantalla nunca expone por sí solo los datos sensibles; siempre hace falta una acción explícita del usuario. Los valores nunca se almacenan en la definición actual: se leen de la definición protegida cada vez que se muestra la instancia.
$maskedAccess() es un mecanismo de enmascaramiento y auditoría, no una barrera de acceso en la instancia que los muestra. Cualquier usuario con privilegios para ver la instancia que contiene la información sensible podrá revelarla: el ojo tachado existe para que los valores no queden expuestos por accidente cuando la instancia se abre, se imprime o se comparte en pantalla, y para que cada revelación quede registrada. Restringir quién puede llegar a los valores se hace de la forma habitual, mediante los permisos de la definición protegida, que rigen el acceso directo a ella, y mediante las palabras clave de campo declaradas en el grupo, no mediante $maskedAccess() en sí.
Crear y actualizar la instancia protegida
El grupo $maskedAccess() también puede llevar al usuario directamente a la definición protegida, de modo que los valores sensibles puedan mantenerse sin tener que buscar la instancia correcta en ella. El enlace que se muestra depende de si existe una instancia protegida y de los permisos del usuario en la definición protegida:
| Situación | Lo que ve el usuario |
|---|---|
| Existe una instancia protegida y el usuario tiene privilegios de actualización sobre ella | Un enlace Click here to update junto al título del grupo, que abre esa instancia en la definición protegida. |
| Todavía no existe ninguna instancia protegida y el usuario puede crear instancias en la definición protegida | Un enlace Click here to create new dentro del grupo, que permite al usuario crear una instancia en la definición protegida. |
| El usuario no tiene ninguno de los dos privilegios | Ningún enlace. Los valores enmascarados (si los hay) se muestran como de costumbre. |
INFO
Estos enlaces no conceden ningún acceso adicional: solo aparecen cuando el usuario ya tiene el privilegio correspondiente en la definición protegida, y la creación o actualización se realiza en la propia definición protegida, bajo sus propios permisos y palabras clave de campo.
Ejemplos
1. Credenciales de dispositivos fuera del inventario de equipos
La definición Devices es el inventario de equipos de la operación: todo el equipo de soporte la consulta para encontrar el fabricante, el modelo y la dirección de gestión de un dispositivo. Las credenciales de acceso de esos dispositivos se necesitan en el mismo lugar — un operador que está resolviendo una incidencia en un dispositivo no debería tener que buscarlas en otro sitio —, pero no deberían estar a la vista en el inventario, deberían existir en un único lugar en vez de copiarse en cada registro de dispositivo, y cada vez que alguien las consulte debería quedar constancia.
Por eso, las credenciales se almacenan en su propia definición, Device Credentials, que tiene un campo de referencia Device que apunta a Devices:
Device $ref(Devices)
Admin Password
Enable Password
SNMP CommunityDevices las muestra entonces a través de un grupo enmascarado:
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)En este ejemplo:
Credentialses el grupo que lleva el acceso enmascarado.$expandedlo mantiene abierto cuando se muestra la instancia.Device Credentialses la definición que contiene las contraseñas. Es el único lugar donde están, y la única cuyos permisos hay que revisar para el acceso directo.Devicees el campo de referencia dentro deDevice Credentialsque apunta aDevices. Las credenciales que se muestran son aquellas cuyoDevicees el dispositivo que se está mostrando.- Cada campo hijo muestra un campo de esa instancia protegida.
WARNING
Esto mantiene las credenciales enmascaradas y sus revelaciones trazables, pero no impide que un usuario de soporte las revele: quien pueda abrir la instancia de Devices puede hacer clic en el ojo. Si las credenciales no deben ser accesibles en absoluto para usuarios ajenos al equipo de redes, restrinja el propio grupo Credentials para que el bloque solo se muestre a ese grupo.


La instancia muestra entonces un bloque Credentials con los tres valores enmascarados, listos para revelarse cuando el usuario haga clic en el icono del ojo:

Cada vez que un usuario revela los valores, RecordM registra el acceso como una instancia de la definición Masked Access Audit:

El registro contiene:
- Access Date: cuándo se revelaron los valores.
- User: quién los reveló.
- Source Instance: la instancia en la que se revelaron los valores, en este caso la instancia
core-sw-lis-01deDevices. - Referred Instance: la instancia protegida de la que se leyeron los valores, en este caso la instancia de
Device Credentialsde ese dispositivo. - Information Accessed: los nombres de los campos que se revelaron (
Admin Password,Enable Password,SNMP Community).
INFO
El registro de auditoría indica qué campos se revelaron, nunca sus valores, por lo que los datos sensibles no se copian en el rastro de auditoría.
