docker - 在 Web App 中使用 OpenLDAP 进行身份验证

标签 docker authentication ldap openldap user-management

我们正在构建一个连接到数据库并进行数据可视化的 Web 应用程序。它可能会有大约 300 个用户。
我们将使用 docker 部署它。

为了提高安全性,我们想使用一个为我们存储用户凭据的 openLDAP 服务器。基本原理是,它是一个久经考验的软件,它比我们自己编写的任何代码都更安全,而且我们不必为散列算法、盐等而烦恼。此外,我们可以直接在 LDAP 中分配角色。

我们正在考虑以下架构(我们必须使用一台服务器):
- 一个带有 Web 应用程序的 docker 容器
- 一个运行数据库的 docker 容器
- 一个运行 openLDAP 服务器的 docker 容器

我的问题:
- openLDAP(或一般的LDAP)是否适合这种情况,或者是否有另一种解决方案可以将身份验证封装在经过试验和测试的包中? (鉴于 LDAP 主要是为高并发负载而构建的,这是我们不期望的)?
- 使用 docker 并因此封装服务会总体上提高安全性(假设实现正确)?

非常感谢!

最佳答案

是的,OpenLDAP - 以及一般的 LDAP - 适用于用户名/密码身份验证,并且您可以在同一个包中获得标准密码散列和密码策略实现。
这些 LDAP 功能中的大多数在 IETF 都已标准化,因此您可以期望所有优秀的 LDAP 服务器产品都具有相同的功能,包括 OpenLDAP,尤其是 OpenLDAP。
主要引用资料:

  • 认证:RFC 4513 .还有OpenLDAP-specific info ;
  • 密码存储、密码哈希:RFC 2307draft-stroeder-hashed-userpassword-values .还有OpenLDAP-specific info ;
  • 密码策略:draft-behera-ldap-password-policy .还有OpenLDAP-specific info .

  • 从安全的角度来看,使用 Docker 或其他类型的容器(例如 LXC)总是一件好事,因为它提供了一种将容器(因此在其中运行的应用程序)与其他容器以及默认情况下与主机隔离的形式。然而,这在很大程度上取决于您的配置和环境,有很多方法可以放松容器隔离(例如启用某些功能、安装共享卷等)。特别是 Docker 守护进程必须得到适当的保护,因为它是一个拥有并需要一般特权访问权限才能完成其所有强大行为的进程。 Docker 安全性可以通过将 Docker 原生安全特性与内核安全特性相结合来进一步提高,例如SELinux、AppArmor、grsec 等。更多信息请访问 Docker Security .

    关于docker - 在 Web App 中使用 OpenLDAP 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55020227/

    相关文章:

    java - 360k文档后的ElasticSearch docker “HTTP/1.1 429 Too Many Requests”

    amazon-web-services - ECS 代理无法成功从 ECR 拉取镜像

    node.js - Passport.authenticate() 中间件删除所有 session key

    ldap - 使用带重音字符的 ldapsearch

    java - MyVD 的自定义 LDAP 绑定(bind)插入

    php - Docker:phpize找不到config.m4

    java - 在docker中启动helloWorld.java时出错

    javascript - React js主组件中的身份验证

    java - 使用 JNDI/Java 中的当前用户在 LDAP 上进行身份验证

    azure - 是否可以使用 LDAP 从 Office365 - Exchange Online/Azure 检索数据?