【问题标题】:Integrated Security when moving from IIS to Docker on Linux在 Linux 上从 IIS 迁移到 Docker 时的集成安全性
【发布时间】:2021-10-06 10:24:10
【问题描述】:

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

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

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

在容器中运行时,如何将密码从数据库连接字符串和配置中排除?

【问题讨论】:

  • 我理解“集成安全”是微软所说的他们在 Kerberos 上的旋转是否正确?您确实意识到 Kerberos 在 Active Directory 存在之前很久就存在于 UNIX 世界中,并且它今天仍然存在并且可以使用。
  • ...也就是说,一般来说,如果您正在寻找专为云使用而设计的更现代的秘密管理堆栈,我建议您使用 Hashicorp Vault。这是一个比这里通常的主题更广泛的问题(并且更接近于系统设计或安全性而不是编程;这两个领域都有自己的 Stack Exchange 站点)。
  • ...无论如何,如果您使用的是本机 UNIX 数据库,则 krb5 连接/身份验证/加密方法是您可以找到 Kerberos 支持的地方。

标签: linux docker linux-containers integrated-security


【解决方案1】:

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

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

【讨论】:

  • 这真的很有帮助。谢谢!
猜你喜欢
  • 2022-09-23
  • 2017-08-07
  • 2011-02-19
  • 2012-11-10
  • 2012-06-16
  • 2021-05-18
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
相关资源
最近更新 更多