Windows gMSA Cómo proteger el uso de CredentialSpec utilizado por Docker Container Engine

Windows gMSA Cómo proteger el uso de CredentialSpec utilizado por Docker Container Engine

La estrategia gMSA que Microsoft recomienda para contenedoresaquíyaquíFunciona muy bien. La idea general es que el host del contenedor recupera la contraseña gMSA de un controlador de dominio de Active Directory y se la entrega al contenedor. La configuración de identidad se almacena en un archivo de especificaciones de credenciales JSON, que se espera que resida en la ubicación C:\\ProgramData\\docker\\CredentialSpecsdel host del contenedor. Este archivo contiene metadatos sobre gMSA y finalmente se pasa al Docker Engine que ejecuta los contenedores. A continuación se muestra un ejemplo de cómo hacer esto mediante la ejecución de Docker:

docker run --security-opt "credentialspec=file://myspec.json" --hostname myappname -it myimage powershell

El problema con esto es que si varios equipos usan los mismos hosts de contenedores, ¿cómo se puede proteger contra el uso de la especificación de credenciales de otro equipo y, por lo tanto, ejecutar sus contenedores con los permisos de ese equipo? Por ejemplo, si el anfitrión tiene las siguientes CredentialSpecs, el Equipo A podría usar las del Equipo C.

C:\\ProgramData\\docker\\CredentialSpecs\\TeamA.json
C:\\ProgramData\\docker\\CredentialSpecs\\TeamB.json
C:\\ProgramData\\docker\\CredentialSpecs\\TeamC.json

Respuesta1

Aunque no leí ni usé esa tecnología, sugiero permisos NTFS.
Elimine los permisos sobre los archivos y aplique solo el permiso de lectura para el grupo o usuario permitido.
Docker no puede leer el archivo de credenciales y, por lo tanto, no puede ejecutarse con un usuario diferente o no permitido.
Solo funciona si Docker también se ejecuta en diferentes contextos de usuario.

información relacionada