2016-12-30 55 views
5

我已经通过了所有示例,我可以在线找到建立码头集装箱的应用程序。我想运行两个服务两个搬运工容器运行:如何使用SQL服务器码头集装箱的Windows身份验证

  1. 运行ASP.NET
  2. 一个窗口容器中运行SQL Server的

容易的工作,许多示例的窗口容器。但是,在所有示例中,您需要使用SQL身份验证并在运行SQL Server容器时提供硬编码的SA密码作为环境变量。您还需要将SA密码硬编码到ASP.Net代码中的连接字符串中(或以其他方式在配置文件中提供)

所有示例中的底线都是硬编码,编码在某处。

在我们现在开发的大多数应用程序中,我们实际上使用Windows身份验证,而不是使用分组托管服务帐户。但据我所知,你不能添加一个Windows容器到域,因此SQL服务器不是Windows域的一部分,所以我没有看到在这里使用Windows身份验证的方式。

那么,有没有人可以用这种方法对密码进行硬编码?

回答

1

我正在处理完全相同的问题。 Here是我找到的最完整的程序。 诀窍是使用gMSA。

但是,正如JanneRantala说,在年底,我在试图在数据库中添加新用户时同样的问题:

消息15401,级别16,状态1,行3 的Windows未找到NT用户或组'YOUR_DOMAIN \ gmsa $'。再次检查名称。

+1

谢谢。我也读过关于gMSA的内容,但不能完全理解认证是如何工作的。使用IIS服务器的Windows身份验证也会出现类似的问题。希望随着这项伟大的技术在Windows环境中的发展,更多相关的文档将会发展。 – IProgrammer

0

这里是演练如何使其工作。 Windows Containers Walkthrough

虽然如果您的SQL也在容器中运行,这将不起作用,因为SQL Server本身必须是Active Directory的一部分才能使用GMSA帐户。

+2

谢谢。我之前已经准备好了这个。但这正是我正在努力解决的问题。我希望整个应用程序在容器中运行 - 包括sql和IIS。 – IProgrammer

+0

如果这些运行在不同的容器中,那么它将永远不可能。如果他们在单个容器中运行,那么可能有一种解决方法。如果您的主要问题是您不需要将任何数据硬编码到容器中,那么当您启动容器时,可以通过环境变量传递机密 –

+0

感谢GSA。阅读你的评论后,做了一些进一步的阅读,似乎这可能是一个很好的方式前进:https://www.ctl.io/developers/blog/post/tutorial-protecting-sensitive-info-docker – IProgrammer

1

Windocks SQL Server容器中会自动启用Windows身份验证。有关更多详细信息,请参阅here。 Windocks中创建的SQL Server容器是从Windows Server(2012 R2或2016)上已安装的默认SQL Service自动创建的SQL Server命名实例。默认实例中的任何Windows帐户都会在容器实例中自动启用。