首页 > 解决方案 > 在 Linux 上从 IIS 迁移到 Docker 时的集成安全性

问题描述

我当前的服务在 IIS 中的 Windows 上运行。我让它们作为我域中的服务帐户用户运行。此用户运行服务的应用程序池,并且还获得了对数据库的所需权限。然后我们的连接字符串可以使用集成的安全性来连接到我们的 SQL Server 数据库。

这样做的好处是可以提前设置,代码/连接字符串不需要任何密码。

当我转向 docker 容器时,我发现这种情况很难继续使用。我的容器以 root 或其他一些非公司用户身份运行。所以我不能只使用集成安全性。(即使我可以让我的容器作为域用户运行,我也不知道这会是一个好习惯。)

在容器中运行时,如何将密码保留在我的数据库连接字符串和配置之外?

标签: linuxdockerlinux-containersintegrated-security

解决方案


可能会根据您的具体情况起作用的几个选项:

  1. 如果您要连接到本地 SQL Server 数据库,您可以使用集成的 Windows 身份验证和 Kerberos - 请参阅 此处以实现 .NET Core 应用程序,在 Linux 容器中运行,连接到具有集成安全性的 SQL Server 数据库。
  2. 您还可以从 Azure App Config/Azure Key Vault切换到 SQL auth 并获取User Id和 (或整个连接字符串)。注意:在 AAC 中,任何机密设置(例如 API 密钥、SSH 密钥等)都应该是 Azure Key Vault (AKV) 引用。AAC 可以通过托管身份集成到 AKV。Password
  3. 如果您使用 Azure SQL 数据库等托管数据库,则可以使用DefaultAzureCredential进行连接,并将 Azure 租户 ID 和客户端 ID/秘密(AAD 应用注册)设置为环境变量(请参阅EnvironmentCredential,这是 DefaultAzureCredential 的默认凭据类型)。注意:对于本地开发, DefaultAzureCredential 将回 退到 VisualStudioCredential,它可以使用用户凭据从 Visual Studio 对 AAD 进行身份验证。

推荐阅读