适用于Intranet应用程序的Active Directory安全建议/洞察



我的任务是为企业内部网web应用程序提供身份验证/授权。给我的要求是:

  1. 必须根据Active Directory进行身份验证
  2. 所有Active Directory密码要求必须与AD中的要求相同
  3. 应用程序中的授权必须在AD之外进行。锁定/解锁用户仍应通过支持团队与AD一起进行

最初我所做的是使用用户提供的凭据根据LDAP进行身份验证,在该凭据中,用户只有在x次尝试后才会被锁定在应用程序之外(而不是AD)。我现在被告知,如果用户在x次后未能登录,他们应该被锁定在所有应用程序和所有企业连接之外(基本上是注销/强制注销Windows)。我的感受如下:

  1. 听起来我们也想吃蛋糕。我们想使用AD,但同时我们没有,因为实际授权发生在它之外。我不明白这是什么目的。他们似乎试图使用SSO,但同时没有
  2. 我不明白为什么要将用户锁定在整个网络之外。要访问该网站,用户必须首先通过VPN登录(已在Windows上登录,并通过2FA的VPN登录)。然后,他们只需要使用Windows密码再次登录该网站。我不明白这样做的安全好处
  3. 任何用户都可以输入他们想要的任何用户,并将所有人从该网站的帐户中锁定。所以理论上,我可以输入CEO的AD名称,然后在应用程序中输入密码,将他们锁定在整个公司网络之外

从安全角度来看,给我的要求有什么合理的理由吗?应用程序的无效登录是否应该将某些内容锁定在Windows帐户之外,尤其是当网络上的任何用户都可以访问该应用程序时?请帮我了解这两种方法的利弊。我知道两者都不是";理想";,但我认为我被要求做的这个不合适。

这似乎是一个相当典型的场景。我假设您在IIS中托管一个ASP.NET应用程序。在这种情况下,只需为Windows身份验证配置您的应用程序就可以满足所有三个要求,除了要求3中的授权位。为此,您通常会编写自己的授权方案,包括将特定于您需求的用户角色存储在应用程序数据库中。

您可能混淆了身份验证和授权。前者是验证用户身份的过程,而后者是验证用户的特定权限的过程。您的要求是仅将AD用于身份验证,这也是典型的要求。组织在AD中应用锁定策略来锁定在环境中任何位置多次尝试登录失败的帐户。这与你的应用程序无关,只是Windows也会在那里强制执行该策略——因为为什么你的应用与系统中的其他应用程序的行为不同?至于授权,这将完全由你的应用程序处理,你可以编写逻辑代码,决定用户在AD允许他们进入后对你的应用做什么(如果有的话)。

回应您的具体观点:

  1. 为什么不使用AD进行授权您可以这样做,例如创建与应用程序中的角色相对应的AD组,并使用AD API从中读取应用程序。但一些组织可能不愿意将AD与特设小组混为一谈。将角色与应用程序配置的其他部分放在应用程序数据库中也简化了实现。

  2. 为什么应用程序中的错误密码尝试会将用户锁定在网络之外?为什么应用程序甚至要提示输入密码即使这是一个intranet应用程序,理论上,在你登录Windows并离开办公桌后,恶意内部人员也有可能访问你的设备。也就是说,如果您的组织允许,您可以将应用程序配置为集成Windows身份验证(SSO),以便用户在成功登录网络后自动登录该应用程序。

  3. 如何阻止不良行为者通过输入错误密码故意锁定帐户不多,尽管系统管理员有各种技巧来帮助检测和防御这种类型的攻击。但这主要可以被视为一个广告问题,而不是你的应用程序特有的问题。网络上的任何应用程序都可能用于此目的。

我确实认为,每个应用程序在尝试错误密码后都会强制锁定。它有助于防范上述涉及恶意内部人员的案件。这也是一个额外的安全层,在假设的情况下,错误或错误配置可能会在未来将您的应用程序暴露在互联网上。也许有些牵强,但有可能。在您的场景中,强制执行是否合理取决于数据敏感性和组织中的风险偏好。

相关内容

  • 没有找到相关文章