【问题标题】:How can I securely provide SA password to SQLServer2017 linux Docker container?如何安全地向 SQLServer2017 linux Docker 容器提供 SA 密码?
【发布时间】:2019-09-17 14:44:26
【问题描述】:

Docker 的常见设置:两个 linux 容器,一个是使用 EntityFramework 的 .NET Core WebServer,另一个是 MS-SQLServer 2017。持久数据保存在 Docker 卷中。使用docker-compose,它不是一群。

启动 SQLServer 容器时,必须将 SA 密码作为环境变量提供给容器。无论您提供什么,以后都可以使用docker container inspect 从容器外部读取此环境。这显然会损害安全性。

这让我想到了两个问题:

  1. 有哪些更好的方法可以向 SQLServer 提供 SA 密码?

  2. (在another thread 中讨论) Microsoft 帮助声明最好在启动容器后直接更改 SA 密码。当我在我的 WebServer 代码中执行此操作时,EntityFramework 已经与默认 SA 密码(我作为 env 提供的密码)连接。我可以轻松更改密码。但是我怎样才能告诉 EntityFramework 重置它的 ConnectionString 呢? (更多内容在链接线程中)

【问题讨论】:

    标签: sql-server docker docker-compose


    【解决方案1】:
    1. 有什么更好的方法可以向 SQLServer 提供 SA 密码?

    为此,您需要使用单容器群。完成此操作后,您可以使用 Docker Secrets 传递您的凭据。

    1. Microsoft 帮助声明最好在启动容器后直接更改 SA 密码。当我在我的 WebServer 中这样做时 代码,EntityFramework 已经与默认 SA 连接 密码(我作为 env 提供的那个)。我可以改密码 容易地。但是我怎么能告诉 EntityFramework 重置它 连接字符串?

    单容器群自动解决了这个问题。每次更新 secret 时,docker 都会终止所有使用修改后的密钥的容器,并使用新的密钥重新初始化它们。此外,docker 会自动执行此操作。肯定会有停机时间,为了防止这种情况,您可以放置​​两个容器并启动一个rolling upgrade of your service

    编辑:使用 swarm 模式,您不必担心更改您的 docker-compose 文件,因为带有一些附加字段的相同文件可以用作您的 docker-stack 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 2011-05-13
      • 1970-01-01
      • 2010-10-30
      • 2011-01-22
      相关资源
      最近更新 更多