español - docker hub
Inicie sesión en el dominio de Windows en un contenedor Linux (2)
RockScience,
Veo dos opciones aquí, ambas le permiten heredar permisos, en lugar de pasar las credenciales de usuario y contraseña. Para abordar su pregunta específica, alrededor de Linux eche un vistazo a:
Si adopta el enfoque de ejecutar contenedores de Windows, eche un vistazo a las cuentas de GMSA (cuentas de servicio administradas por grupo) de Active Directory y al siguiente artículo y video de MSDN:
Cuentas de servicio de Active Directory para contenedores de Windows
Camine por el camino de la contención: transforma cargas de trabajo en contenedores
esto le permitiría crear un contenedor de Windows y un entorno R.
Autenticación de Active Directory con SQL Server en Linux
El tutorial explica cómo configurar SQL Server en Linux para admitir la autenticación de Active Directory (AD), también conocida como autenticación integrada. La Autenticación de AD permite que los clientes unidos a un dominio en Windows o Linux se autentiquen en SQL Server utilizando sus credenciales de dominio y el protocolo Kerberos.
La Autenticación AD tiene las siguientes ventajas sobre la Autenticación del Servidor SQL:
- Los usuarios se autentican mediante el inicio de sesión único, sin que se les solicite una contraseña.
- Al crear inicios de sesión para grupos de AD, puede administrar el acceso y los permisos en SQL Server utilizando membresías de grupos de AD.
- Cada usuario tiene una sola identidad en toda su organización, por lo que no tiene que hacer un seguimiento de los inicios de sesión de SQL Server correspondientes a cada persona.
- AD le permite aplicar una política de contraseña centralizada en toda su organización.
El tutorial consiste en las siguientes tareas:
- Unirse al servidor SQL Server al dominio AD
- Crear usuario de AD para SQL Server y configurar SPN
- Configurar la clave de acceso del servicio SQL Server
- Crear inicios de sesión basados en AD en Transact-SQL
- Conéctese a SQL Server usando Autenticación AD
Cuentas de servicio de Active Directory para contenedores de Windows
En la actualidad, las cuentas grupales de servicios administrados a menudo se usan para asegurar conexiones entre una computadora o servicio a otro. Los pasos generales para usar uno son:
- Crea un gMSA
- Configure el servicio para que se ejecute como gMSA
- Proporcione al host unido al dominio que ejecuta el servicio acceso a los secretos de gMSA en Active Directory
- Permitir el acceso a gMSA en el otro servicio, como una base de datos o archivos compartidos
Cuando se lanza el servicio, el host unido al dominio obtiene automáticamente los secretos de gMSA de Active Directory y ejecuta el servicio usando esa cuenta. Como ese servicio se está ejecutando como gMSA, puede acceder a todos los recursos que se permite a gMSA.
- Los contenedores de Windows siguen un proceso similar:
- Crea un gMSA. De manera predeterminada, un administrador de dominio o un operador de cuenta debe hacer esto. De lo contrario, pueden delegar los privilegios para crear y administrar gMSA a los administradores que administran los servicios que los utilizan. Ver gMSA Primeros pasos
- Dar acceso de host de contenedor unido a un dominio al gMSA
- Permitir el acceso a gMSA en el otro servicio, como una base de datos o archivos compartidos
- Utilice el módulo de PowerShell de CredentialSpec de windows-server-container-tools para almacenar la configuración necesaria para usar el gMSA
- Inicie el contenedor con una opción adicional
--security-opt "credentialspec=..."
Cuando se lanza el contenedor, los servicios instalados que se ejecutan como Sistema local o Servicio de red aparecerán para ejecutarse como gMSA. Esto es similar a cómo funcionan esas cuentas en un servidor unido a un dominio, excepto que se usa un gMSA en lugar de una cuenta de computadora.
Ejemplos de usos
Cadenas de conexión SQL
Cuando un servicio se ejecuta como Sistema local o Servicio de red en un contenedor, puede usar la Autenticación integrada de Windows para conectarse a un Servidor SQL de Microsoft.
Ejemplo:
Dupdo
Server=sql.contoso.com;Database=MusicStore;Integrated Security=True;MultipleActiveResultSets=True;Connect Timeout=30
En Microsoft SQL Server, cree un inicio de sesión usando el nombre de dominio y gMSA, seguido de $. Una vez que se crea el inicio de sesión, se puede agregar a un usuario en una base de datos y se le pueden otorgar los permisos de acceso apropiados.
Ejemplo:
SQL
Dupdo
CREATE LOGIN "DEMO/WebApplication1$"
FROM WINDOWS
WITH DEFAULT_DATABASE = "MusicStore"
GO
USE MusicStore
GO
CREATE USER WebApplication1 FOR LOGIN "DEMO/WebApplication1$"
GO
EXEC sp_addrolemember ''db_datareader'', ''WebApplication1''
EXEC sp_addrolemember ''db_datawriter'', ''WebApplication1''
Para verlo en acción, consulte la demostración registrada disponible de Microsoft Ignite 2016 en la sesión " Caminar por el camino hacia la contención: transformar las cargas de trabajo en contenedores ".
Mi empresa utiliza exclusivamente máquinas con Windows y cuando inicio sesión en el dominio de Windows me da acceso a algunas unidades y bases de datos compartidas. Ahora me gustaría ejecutar R en un contenedor, por ejemplo, siguiendo el tutorial https://ropenscilabs.github.io/r-docker-tutorial/02-Launching-Docker.html
Mi pregunta es la siguiente: ¿hay alguna forma de que mis scripts R ejecutados en este contenedor hereden de los permisos del sistema operativo host? Parece especialmente complicado acceder a las bases de datos MSSQL que usan la autenticación de Windows .....
Como @ Technophobe01 ha demostrado que un contenedor de Windows sería una opción más natural para heredar los permisos de AD.
En términos de obtener el script R conectado a sus archivos compartidos y bases de datos MS SQL, recomendaría lo siguiente
Conexión MS SQL
Conéctese a bases de datos utilizando cadenas de conexión en el guión R
Este es un enfoque convencional en lugar de heredar algunos permisos.
Vea la conexión RODBC de SQL Server
library(RODBC)
conn <- odbcDriverConnect(''driver={SQL Server};server=mysqlhost;database=mydbname;uid=user;pwd=pwd'')
Puede especificar cualquier campo sensible utilizando ENV vars en tiempo de despliegue o secretos de docker y cargarlos en el script R.
Archivos compartidos
Ver https://blogs.msdn.microsoft.com/stevelasker/2016/06/14/configuring-docker-for-windows-volumes/
1. Asigne las unidades de red a su host de Windows Docker
2. Especifíquelos como disponibles para los contenedores en la configuración del acoplador. Deberá agregar una nueva cuenta de usuario con privilegios de administrador.
3. Suponiendo que la unidad de red está asignada a d:
docker run -vd:/somedata:/data <container> ls /data
montará la unidad en el contenedor en /data
y mostrará su contenido.