在Linux容器上登录到Windows域

Roc*_*nce 12 containers r windows-authentication docker

我的公司专门使用Windows机器,当我登录到Windows域时,它可以访问一些共享驱动器和数据库.现在我想在容器中运行R,例如按照教程 https://ropenscilabs.github.io/r-docker-tutorial/02-Launching-Docker.html

我的问题如下:有没有办法在这个容器中执行我的R脚本继承主机操作系统的权限?访问使用Windows身份验证的MSSQL数据库似乎特别棘手.....

Tec*_*e01 9

RockScience,

我在这里看到两个选项,它们都允许您继承权限,而不是传入用户和密码凭据.要解决您的具体问题,请在Linux周围查看:

如果您采用运行Windows容器的方法,请查看Active Directory gMSA(组托管服务帐户)帐户以及以下MSDN文章和视频:

这将使您能够创建Windows容器和R环境.


在Linux上使用SQL Server进行Active Directory身份验证

本教程介绍如何在Linux上配置SQL Server以支持Active Directory(AD)身份验证,也称为集成身份验证.AD身份验证允许Windows或Linux上的已加入域的客户端使用其域凭据和Kerberos协议对SQL Server进行身份验证.

AD身份验证与SQL Server身份验证相比具有以下优势:

  • 用户通过单点登录进行身份验证,而不会提示输入密码.
  • 通过为AD组创建登录,您可以使用AD组成员身份管理SQL Server中的访问权限.
  • 每个用户在整个组织中都有一个标识,因此您无需跟踪哪些SQL Server登录对应于哪些人.
  • AD使您可以在整个组织中实施集中式密码策略.

本教程包含以下任务:

  • 将SQL Server主机加入AD域
  • 为SQL Server创建AD用户并设置SPN
  • 配置SQL Server服务密钥表
  • 在Transact-SQL中创建基于AD的登录
  • 使用AD身份验证连接到SQL Server

Windows容器的Active Directory服务帐户

今天,组托管服务帐户通常用于保护一台计算机或服务与另一台计算机或服务之间的连接.使用一个的一般步骤是:

  1. 创建一个gMSA
  2. 将服务配置为以gMSA身份运行
  3. 为运行服务的域加入主机授予对Active Directory中gMSA机密的访问权限
  4. 允许访问其他服务(如数据库或文件共享)上的gMSA

启动服务后,加入域的主机会自动从Active Directory获取gMSA机密,并使用该帐户运行该服务.由于该服务作为gMSA运行,因此它可以访问允许gMSA的任何资源.

  1. Windows容器遵循类似的过程:
  2. 创建一个gMSA.默认情况下,域管理员或帐户操作员必须执行此操作.否则,他们可以将管理gMSA的权限委托给管理使用它们的服务的管理员.请参阅gMSA入门
  3. 为已加入域的容器提供对gMSA的访问权限
  4. 允许访问其他服务(如数据库或文件共享)上的gMSA
  5. 使用windows-server-container-tools中的CredentialSpec PowerShell模块存储使用gMSA所需的设置
  6. 使用额外选项启动容器 --security-opt "credentialspec=..."

启动容器时,作为本地系统或网络服务运行的已安装服务将显示为作为gMSA运行.这类似于这些帐户在加入域的主机上的工作方式,除了使用gMSA而不是计算机帐户.

示例用途

SQL连接字符串

当服务作为容器中的本地系统或网络服务运行时,它可以使用Windows集成身份验证连接到Microsoft SQL Server.

例:

复制

Server=sql.contoso.com;Database=MusicStore;Integrated Security=True;MultipleActiveResultSets=True;Connect Timeout=30
Run Code Online (Sandbox Code Playgroud)

在Microsoft SQL Server上,使用域和gMSA名称创建登录名,后跟$.创建登录后,可以将其添加到数据库上的用户并获得适当的访问权限.

例:

SQL

复制

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'
Run Code Online (Sandbox Code Playgroud)

要查看它的实际效果,请在" 走向容器化的路径 - 将工作负载转换为容器 " 会话中查看Microsoft Ignite 2016提供的录制演示.