Skip to main content
QMSQMS
QMS
  • Welcome to your QMS
  • Quality Manual
  • Procedures
    • GP-001 Control of documents
    • GP-002 Quality planning
    • GP-003 Audits
    • GP-004 Vigilance system
    • GP-005 Human Resources and Training
    • GP-006 Non-conformity, Corrective and Preventive actions
    • GP-007 Post-market surveillance
    • GP-009 Sales
    • GP-010 Purchases and suppliers evaluation
    • GP-011 Provision of service
    • GP-012 Design, redesign and development
    • GP-013 Risk management
    • GP-014 Feedback and complaints
    • GP-015 Clinical evaluation
    • GP-016 Traceability and identification
    • GP-017 Technical assistance service
    • GP-018 Infrastructure and facilities
    • GP-019 Non-product software validation
    • GP-020 QMS Data analysis
    • GP-021 Communications
    • GP-022 Document translation
    • GP-023 Change control management
    • GP-024 Predetermined Change Control Plan
    • GP-025 Usability and Human Factors Engineering
    • GP-026 Market-specific product requirements
    • GP-027 Corporate Governance
    • GP-028 AI Development
    • GP-029 Software Delivery and Commissioning
    • GP-030 Cyber Security Management
    • GP-031 Training Data Governance
    • GP-050 Data Protection
    • GP-051 Security violations
    • GP-052 Data Privacy Impact Assessment (DPIA)
    • GP-100 Business Continuity (BCP) and Disaster Recovery plans (DRP)
    • GP-101 Information security
    • GP-110 Esquema Nacional de Seguridad
      • General
      • ORG Marco organizativo
      • OP Marco operacional
        • OP.PL Planificación
        • OP.ACC Control de acceso
          • OP.ACC.1 Identificación
          • OP.ACC.2 Requisitos de acceso
          • OP.ACC.3 Segregación de funciones y tareas
          • OP.ACC.4 Proceso de gestión de derechos de acceso
          • OP.ACC.5 Mecanismo de autenticación
          • OP.ACC.6 Acceso local
          • OP.ACC.7 Acceso remoto
        • OP.EXP Explotación
        • OP.EXT Servicios externos
        • OP.NUB Servicios en la nube
        • OP.CONT Continuidad del servicio
        • OP.MON Monitorización del sistema
      • MP Medidas de protección
      • Real Decreto 311/2022, de 3 de mayo, por el que se regula el Esquema Nacional de Seguridad.
    • GP-200 Remote Data Acquisition in Clinical Investigations
  • Records
  • Legit.Health Plus Version 1.1.0.0
  • Legit.Health Plus Version 1.1.0.1
  • Legit.Health Utilities
  • Licenses and accreditations
  • Applicable Standards and Regulations
  • BSI Non-Conformities
  • Pricing
  • Public tenders
  • Procedures
  • GP-110 Esquema Nacional de Seguridad
  • OP Marco operacional
  • OP.ACC Control de acceso
  • OP.ACC.6 Acceso local

OP.ACC.6 Acceso local

Finalidad​

Este documento define los controles para el acceso local al sistema de información conforme al control OP.ACC.6 del Anexo II del Real Decreto 311/2022, aplicable a un sistema de categoría ALTO. El acceso local se refiere a las conexiones realizadas desde estaciones de trabajo y dispositivos dentro de la red de la organización.

Controles de acceso local​

La organización aplica las siguientes medidas para el acceso local:

Antes de conceder el acceso​

  • Se muestra exclusivamente el diálogo de autenticación, evitando información que pueda atraer a usuarios no autorizados (no se indica el tipo de información que contiene el sistema).
  • Se requiere identificación y autenticación conforme a OP.ACC.1 y OP.ACC.5.
  • Para categoría ALTO, se requiere autenticación de doble factor en el acceso local.

Bloqueo por intentos fallidos​

Se limita a 3 intentos fallidos consecutivos antes de bloquear la cuenta, impidiendo ataques de fuerza bruta. El bloqueo se gestiona conforme a la política de autenticación (OP.ACC.5).

Registro de accesos​

Se registran todos los accesos al sistema, tanto exitosos como fallidos, incluyendo:

  • Identificador del usuario.
  • Fecha y hora.
  • Resultado (exitoso o fallido).
  • Dirección de origen.

Los registros se conservan durante un mínimo de 2 años (requisito para categoría ALTO) y se revisan periódicamente o mediante herramientas automatizadas para detectar patrones anómalos.

Notificación al usuario​

Tras un acceso exitoso, el sistema informa al usuario del último acceso realizado con su identidad (fecha y hora), permitiéndole detectar posibles suplantaciones.

Restricción de horarios y ubicaciones​

Se controla el acceso al sistema restringiendo, cuando proceda, los horarios y las ubicaciones desde las que se permite el acceso. Las excepciones se documentan y justifican.

Entorno protegido​

Para categoría ALTO, el acceso local se realiza desde un entorno protegido que cumple las siguientes condiciones:

  • Las estaciones de trabajo están configuradas conforme a las guías CCN-STIC aplicables (Serie 500 para entornos Windows, Serie 600 para otros entornos).
  • El cifrado de disco está habilitado.
  • El firewall local está activo.
  • Las actualizaciones de seguridad se aplican de forma periódica.
  • Los dispositivos de almacenamiento extraíble están deshabilitados salvo autorización expresa del Responsable de Seguridad.

Verificación puntual de identidad​

En puntos críticos del sistema se requiere verificación adicional de la identidad del usuario (por ejemplo, para operaciones sensibles), acotando la ventana de riesgo ante un posible robo de sesión.

Implementación técnica en macOS​

Todos los equipos del alcance del ENS son MacBook Pro con macOS. La implementación de los controles de acceso local se realiza mediante scripts nativos de macOS, sin necesidad de un MDM (Mobile Device Management) externo.

Aviso de derechos y obligaciones en la pantalla de inicio de sesion​

La pantalla de inicio de sesion de macOS muestra un aviso legal permanente que informa al usuario de sus derechos y obligaciones antes de acceder al sistema. Se configura mediante defaults write en las preferencias del sistema, lo que garantiza que el mensaje persiste entre reinicios sin necesidad de LaunchAgents ni scripts adicionales.

Configuracion (requiere sudo):

sudo defaults write /Library/Preferences/com.apple.loginwindow LoginwindowText -string \
"AVISO LEGAL: Este equipo es propiedad de la empresa y esta sujeto a las politicas de seguridad del Esquema Nacional de Seguridad (RD 311/2022). Al acceder, usted acepta las obligaciones establecidas en la Normativa de Seguridad. El uso de este sistema es monitorizado. Cualquier uso no autorizado puede dar lugar a medidas disciplinarias y/o legales."

Verificacion:

defaults read /Library/Preferences/com.apple.loginwindow LoginwindowText

Ultimo inicio de sesion​

macOS muestra la fecha y hora del ultimo inicio de sesion en la pantalla de login, permitiendo al usuario detectar accesos no autorizados.

Configuracion (requiere sudo):

sudo defaults write /Library/Preferences/com.apple.loginwindow ShowLastLoginDate -bool true
sudo defaults write /Library/Preferences/com.apple.loginwindow AdminHostInfo HostName

Verificacion:

defaults read /Library/Preferences/com.apple.loginwindow ShowLastLoginDate
# Debe devolver: 1
defaults read /Library/Preferences/com.apple.loginwindow AdminHostInfo
# Debe devolver: HostName

Ambos ajustes son persistentes y se aplican a partir del siguiente cierre de sesion o reinicio. No es necesario reinstalarlos salvo que se restablezcan las preferencias del sistema.

Dialogo de aviso tras inicio de sesion​

Ademas del banner en la pantalla de login, un LaunchAgent ejecuta un dialogo tras cada inicio de sesion que muestra la fecha y hora del ultimo acceso y un aviso sobre derechos y obligaciones con enlace a la Normativa de Seguridad (ORG.2). El usuario debe pulsar "Acknowledge" para continuar.

Script (~/bin/ens-login-notice.sh):

#!/bin/bash
# ens-login-notice.sh — ENS Login Security Notice
# ENS Control: op.acc.6

sleep 3

PREV_LOGIN_LINE=$(last console | grep -v "still logged in" | head -1)

if [ -n "$PREV_LOGIN_LINE" ]; then
LOGIN_DATE=$(echo "$PREV_LOGIN_LINE" | awk '{for(i=1;i<=NF;i++){if($i~/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)$/){printf "%s %s %s %s",$i,$(i+1),$(i+2),$(i+3);exit}}}')
LAST_LOGIN_MSG="Previous login: ${LOGIN_DATE}"
else
LAST_LOGIN_MSG="No previous login record found."
fi

osascript -e "
display dialog \"${LAST_LOGIN_MSG}

Your rights and obligations as a user of the organization's information systems are documented in the Information Security Standards:

https://qms.legit.health/docs/procedures/gp-110/org-marco-organizativo/org-2-normativa-de-seguridad

By using this system, you confirm awareness of and compliance with these standards.\" buttons {\"Acknowledge\"} default button \"Acknowledge\" with title \"Security Notice\" with icon caution
"

LaunchAgent (~/Library/LaunchAgents/health.legit.ens-login-notice.plist):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>health.legit.ens-login-notice</string>
<key>ProgramArguments</key>
<array>
<string>/Users/USERNAME/bin/ens-login-notice.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

Reemplazar USERNAME por el nombre de usuario del equipo. El RunAtLoad hace que se ejecute una vez cada vez que el usuario inicia sesion.

Bloqueo por intentos fallidos​

El bloqueo tras 3 intentos fallidos se configura mediante pwpolicy (política de cuentas nativa de macOS). La política incluye un tiempo de restablecimiento automático de 15 minutos (900 segundos) para evitar bloqueos permanentes en equipos sin administrador de red.

Política (ens-lockout-policy.plist):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>policyCategoryAuthentication</key>
<array>
<dict>
<key>policyContent</key>
<string>(policyAttributeFailedAuthentications &lt; policyAttributeMaximumFailedAuthentications) OR (policyAttributeCurrentTime &gt; policyAttributeLastFailedAuthenticationTime + policyAttributeFailedResetTime)</string>
<key>policyIdentifier</key>
<string>com.apple.maximumFailedLoginAttempts</string>
<key>policyParameters</key>
<dict>
<key>policyAttributeMaximumFailedAuthentications</key>
<integer>3</integer>
<key>policyAttributeFailedResetTime</key>
<integer>900</integer>
</dict>
</dict>
</array>
</dict>
</plist>

Aplicación:

sudo pwpolicy setaccountpolicies ens-lockout-policy.plist

Verificación:

pwpolicy getaccountpolicies

Instalación en un equipo nuevo​

Para instalar ambos controles en un Mac:

  1. Crear el directorio ~/bin/ y copiar ens-login-notice.sh con permisos de ejecución (chmod 755).
  2. Generar el fichero LaunchAgent en ~/Library/LaunchAgents/health.legit.ens-login-notice.plist con la ruta correcta al script.
  3. Cargar el agente: launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/health.legit.ens-login-notice.plist
  4. Aplicar la política de bloqueo: sudo pwpolicy setaccountpolicies ens-lockout-policy.plist
  5. Verificar: reiniciar sesión y comprobar que aparece el diálogo; entrar 3 contraseñas incorrectas y comprobar que se bloquea la cuenta durante 15 minutos.

Responsabilidades​

Rol ENSResponsabilidad
Responsable de SeguridadDefinir la política de acceso local, aprobar excepciones
Responsable del SistemaConfigurar y mantener las estaciones de trabajo, aplicar las políticas técnicas
Responsable del ServicioDefinir restricciones de horarios y ubicaciones para el servicio
Responsable de la InformaciónDefinir restricciones de acceso a la información desde entornos locales

Documentos de referencia​

  • Real Decreto 311/2022, Anexo II, OP.ACC.6
  • Guías CCN-STIC: Serie 500 (Entornos Windows), Serie 600 (Otros Entornos)
  • ISO/IEC 27002:2013, 9.4.2 - Procedimientos seguros de inicio de sesión
  • NIST SP 800-53 rev. 4: AC-7, AC-8, AC-9

Signature meaning

The signatures for the approval process of this document can be found in the verified commits at the repository for the QMS. As a reference, the team members who are expected to participate in this document and their roles in the approval process, as defined in Annex I Responsibility Matrix of the GP-001, are:

  • Author: Team members involved
  • Reviewer: JD-003 Design & Development Manager, JD-004 Quality Manager & PRRC
  • Approver: JD-001 General Manager
ㅤ

Previous
OP.ACC.5 Mecanismo de autenticación
Next
OP.ACC.7 Acceso remoto
  • Finalidad
  • Controles de acceso local
    • Antes de conceder el acceso
    • Bloqueo por intentos fallidos
    • Registro de accesos
    • Notificación al usuario
    • Restricción de horarios y ubicaciones
    • Entorno protegido
    • Verificación puntual de identidad
  • Implementación técnica en macOS
    • Aviso de derechos y obligaciones en la pantalla de inicio de sesion
    • Ultimo inicio de sesion
    • Dialogo de aviso tras inicio de sesion
    • Bloqueo por intentos fallidos
    • Instalación en un equipo nuevo
  • Responsabilidades
  • Documentos de referencia
All the information contained in this QMS is confidential. The recipient agrees not to transmit or reproduce the information, neither by himself nor by third parties, through whichever means, without obtaining the prior written permission of Legit.Health (AI Labs Group S.L.)