Microsoft Intune: Gestión de Dispositivos de Almacenamiento Extraíbles vía Device Control (Windows Defender)
En el artículo de hoy veremos como podemos gestionar el acceso a los dispositivos extraíbles (USB) vía Intune, pero trabajando con la protección de Windows Defender vía Device Control. Este es un artículo lleno de varios momentos de “frustración” por mi parte, puesto que algo que es súper sencillo se complicó al máximo por un pequeño e importante detalle (más adelante lo comentaré).
La idea es configurar un entorno de administración de dispositivos USB de almacenamiento extraíble, a varios niveles:
- Bloquear su instalación (con aviso al usuario)
- Permitir el acceso de lectura y no ejecución (con aviso al usuario)
- Permitir la escritura y no ejecución (con aviso al usuario)
Antes de nada, también comentar que creo que la configuración se puede realizar mediante OMA-URI y la opción de Reducción de la superficie expuesta a ataques la cual creo que tiene un BUG. Cuando digo que creo que tiene un bug es porque la misma configuración vía OMA-URI funcione y la realizada mediante la opción Reducción de la superficie expuesta a ataques No. Pero antes de profundizar en esto, aquí os dejo la infografía de hoy:
Voy a empezar diciendo que para lograr esta configuración he tardado casi .. semana y media!!! Casi la frustración llega a hacer que cambiase de idea e hiciese la configuración tradicional, o accedes o no al USB y listo. Os cuento/resumo el porqué, con la opción de Reducción de la superficie expuesta a ataques había visto que teníamos una opción genial para administrar vía Windows Defender el acceso a nuestros dispositivos extraíbles, pero de momento por esa vía no he conseguido que funcione. Aquí os muestro una captura de la configuración que tenía en su momento y que debía aplicarse sin problema en los equipos y que funcionase, porque aplicarse se aplicaba siempre:
Esta configuración se aplicaba a los equipos aparentemente bien, por lo menos en el visor de eventos no se veía nada raro y la configuración del registro se actualizaba correctamente:
Aquí el evento del cambio de configuración:
Y aquí claramente indica que la configuración se puede realizar vía interface de Intune de usuario: Deploy and manage Removable Storage Access Control using Intune | Microsoft Learn
La historia es muy larga, pero he probado todas las configuraciones posibles en varios equipos, con Windows 10 y 11 etc.. bla, bla, bla … hasta que me he propuesto hacerlo vía OMA-URI y ahí tenemos múltiples ficheros XML vía github los cuales podemos utilizar como plantillas para nuestras configuraciones: mdatp-devicecontrol/Removable Storage Access Control Samples/Intune OMA-URI at main · microsoft/mdatp-devicecontrol · GitHub y también me fallaban de la misma forma, se aplicaban pero yo en el USB podía hacerlo que me daba la gana. Luego de leer, leer y volver a leer (ya abierto un caso de soporte con MSFT al séptimo día de no encontrar solución), llegué aquí y me centré en leerlo bien, porque leerlo lo había leído ya unas cuantas veces: Microsoft Defender for Endpoint Device Control Removable Storage frequently asked questions | Microsoft Learn
Ya os podéis imaginar la cara de tonto que se te queda .. pero bueno, por lo hemos he podido configurar mis XML y completar la configuración tal cual os voy a comentar ahora mismo. Pero antes, deciros que claro, como no había error alguno, que parecía que en el registro la configuración se habilitaba, que el visor de eventos lo decía claro … etc, etc… mil pruebas después y alguna etapa de frustración por el medio .. porque claro, el XML lo había copiado y pegado al Notepad (como siempre) para que perdiese los formatos .. pero .. parece ser que no y me ha “vacilado” pero vamos!!
También es cierto que, la configuración vía interface de Intune tampoco ha funcionado, por lo que entiendo que ahí MSFT tiene un BUG (lo que comentaba al principio del artículo) parecido al problema del copiado vía XML directamente y no vía Raw:
Pues bien, ya contada la historia jeje, aquí os dejo la configuración que realmente quería comentar e implementar:
- Bloquear su instalación (con aviso al usuario)
- Permitir el acceso de lectura y no ejecución (con aviso al usuario)
- Permitir la escritura y no ejecución (con aviso al usuario)
Lo primero es crearnos tres grupos de seguridad, los cuales iremos asociando a las diferentes directivas:
- Grp Az Intune USB Device Access Block: usuarios a los cuales se le deniega la instalación del USB
- Grp Az Intune USB Device Access Read: usuarios con permisos de solo lectura, sin ejecución de aplicaciones desde el USB
- Grp Az Intune USB Device Access Write: usuarios con permisos de escritura, sin ejecución de aplicaciones desde el USB
En la primera, que es la de evitar que se instalen los dispositivos USB lo he configurado con la opción de Reducción de la superficie expuesta a ataques, lo primero es crea una nueva política para Windows 10 y posterior para Device Control:
Y ahora habilitamos las siguientes opciones para bloquear los dispositivos ya instalado y los que su ClassID sea:
Debéis tener cuidado con los Classes ID (System-Defined Device Setup Classes Available to Vendors – Windows drivers | Microsoft Learn), porque si os equivocáis podéis dejar desconectado por ejemplo .. el teclado de la Surface (experiencia propia). Según MSFT estos son los que deberíamos bloquear (Controladores de clase de dispositivo USB incluidos en Windows – Windows drivers | Microsoft Learn):
- USBDevice {88BAE032-5A81-49f0-BC3D-A4FF138216D6}: los IHV deben usar esta clase para dispositivos personalizados que no pertenecen a otra clase. Esta clase no se usa para controladores y concentradores de host USB.
- USB {36fc9e60-c465-11cf-8056-444553540000}: los IHD no deben usar esta clase para sus dispositivos personalizados. Esto está reservado para controladores de host USB y concentradores USB.
Yo he ido ajustando la configuración mis necesidades, vosotros tendréis que ir haciendo lo mismo. Ahora esta directiva se la vamos a asignar al grupo Grp Az Intune USB Device Access Block que es donde tengo a todos los usuarios y luego se la deniego a los que les vayamos haciendo excepciones de acceso de lectura o escritura:
Una vez aplicado, el usuario cuando conecte el USB recibirá el siguiente mensaje:
Ahora vamos a configurar los diferente perfiles para la gestión de la lectura y escritura en los dispositivos de almacenamiento externo, para esto vamos a crear dos perfiles utilizando OMA-URI para sendas configuraciones (escritura y lectura). El proceso será el mismo para ambos, siempre será diferente en la configuración del acceso, pero el habilitar el Device Control y Grupos será el mismo, vamos ello. Lo primero que haremos será crear la configuración para los usuarios que tendrán acceso de lectura (sin ejecución), para ello vamos a crear una nuevo perfil con la siguiente definición:
El resultado sería tener 3 entradas de OMA-URI:
La primera para habilitar el Device Control:
- Name: Enable Device Control (o lo que quieras)
- OMA-URI: ./Vendor/MSFT/Defender/Configuration/DeviceControlEnabled
- Data type: Integer
- Value: 1
Ahora configuramos los grupos de dispositivos a los que queremos aplicar las restricciones, aquí su definición:
- Name: Any Removable Storage Group (o lo que quieras)
- OMA-URI: ./Vendor/MSFT/Defender/Configuration/DeviceControl/PolicyGroups/%7bcd8d75fa-f427-47a0-9cf5-96541a292ebd%7d/GroupData
- Data type: String (XML File)
- Value: adjunto fichero XML que me funciona bien
Este sería el contenido del XML:
- Name: Block Write and Execute (o lo que quieras)
- OMA-URI: ./Vendor/MSFT/Defender/Configuration/DeviceControl/PolicyGroups/%7bcd8d75fa-f427-47a0-9cf5-96541a292ebd%7d/GroupData
- Data type: String (XML File)
- Value: adjunto fichero XML que me funciona bien
Ahora se le asignamos el grupo Grp Az Intune USB Device Access Read cuando los usuarios conecten un USB tendrán acceso de lectura (sin ejecución). La configuración para permitir escribir es la misma, pero cambia el agrupo al que se le asigna, ahora a Grp Az Intune USB Device Access Write y la definición de la política que os la muestra a continuación: [fichero XML

Ahora, al usuario al que le afecte esta configuración recibirá la siguiente alerta, en este caso es la de Escritura y No Ejecución, si fuese la de Lectura pondría el texto que hubieseis configurado:
Pues como veis es muy sencillo, teniendo bien formateados los XML .. todo funciona bien :-). Aquí os los vuelvo a dejar para que os sea más fácil encontrar los que yo utilizo:
- Grupos de dispositivos:
- Política de permitir escribir:
GDE Error: Error al recuperar el fichero. Si es necesario, desactiva la comprobación de errores (404:Not Found)
- Política de permitir la lectura:
Pues nada, ahora espero que nos ocurra como a mi que me ha tenido en vilo casi dos semanas por una chorrada!!
Santiago de los Santos Collados / 8 febrero, 2023
Buenos días Santiago,
Lo primero, gracias por el manual, excelente trabajo.
Me está pasando como indicas al inicio del manual, así que he seguido el resto de las indicaciones para ver si tengo los resultados deseados.
En mi caso, con acceso a lectura es suficiente. Pero tengo un par de dudas, tanto “Enable Device Control” como ” Any Removable Storage Group” ¿no es necesario asignarlo a ningún grupo?
Y por otro lado, cuando indicas “El GUID del OMA-URI está en una línea comentada en el XML, pero hace referencia al PolicyRule el cual podéis generar vía PowerShell” o “El GUID del OMA-URI está en una línea comentada en el XML, pero hace referencia al Group ID el cual podéis generar vía PowerShell [New-Guid]”, esa GUID que inidca es la del OMA-URI, tanto de la Policy como la del Group, con que coincida es suficiente no?
Me despista esto último bastante, vaya por delante mi ignorancia.
Gracias por tu tiempo y por la web
Mil gracias.
Un saludo
Santiago Buitrago Reis / Autor / 12 febrero, 2023
Hola Santiago:
Pues ese pero que te hayas podido ahorrar unas cuantas horas que yo no :-), pero para lo próxima no me pasa.
Un saludo
adama / 15 marzo, 2023
buenos dias por cierto excelente tutorial , tengo un problema esque quiero bloquear todos los puertos usb a excepcion de un usb con el nombre clickshare para su ejecucion y instalacion, lo que indicas arriba solo me da la opcion de lectura pero sin ejecucion, aver si nos puedes aclarar o ayudar saludo gracias
Santiago Buitrago Reis / Autor / 18 marzo, 2023
Hola:
Si necesitas permitir la ejecución tienes que configurar las siguientes opciones en la máscara de acceso, aquí te dejo un enlace donde te lo explican: https://learn.microsoft.com/en-us/microsoft-365/security/defender-endpoint/device-control-removable-storage-access-control?view=o365-worldwide y tienes que combinar la máscara que tu necesitas:
AccessMask Defines the access. Disk level access:
1: Read
2: Write
4: Execute
Igualmente, si lo que necesitas es una combinación de lectura y ejecución, sería un AccessMask con esta configuración: 1 (Read) + 4 (Execute) = 5 para Permit o 2 para Deny (el siguiente ejemplo es de Deny)
Además, también puedes (deberías) configurar a que grupos de dispositivos aplica por el DescriptorIdList del dispositivo, en el mismo enlace tienes la información para saber como obtenerlo. De esta forma podrás definir tu lista de dispositivos de ClickShare (dispositivo que mola mucho), pero aqui te dejo un enlace de Barco que te muestra como obtenerlo: https://www.barco.com/en/support/knowledge-base/2336-configure-whitelisting-for-clickshare-button-via-local-group-policy-object-gpo-windows-only luego ya tu en Intune lo configuras en el XML de tu grupo de dispositivos.
Un saludo