多租户应用程序中的 SSO:恶意管理员呢?

问题描述

我们有一个多租户 Web 应用程序,正忙于实施 SSO(Azure 的 OpenID),并且正在考虑可能存在的安全问题。

在我们的应用程序中,一个用户可能有权访问多个租户。常规身份验证是集中完成的,然后系统会检查您可以访问哪些租户,如果有多个租户,您可以选择要访问的租户。我们正在考虑这样的功能:一旦您登录,您就可以在租户之间切换,而无需再次登录

(理论上的)问题是:

  1. 租户 A 有一个用户 Bob,可以定期访问他们的数据
  2. 恶意租户 B 设置 SSO,他们可以在其中完全控制用户管理
  3. 恶意租户 B 知道 Bob 的电子邮件地址,并将他添加到他们的 SSO 目录中,并设置了他们选择的密码
  4. 恶意租户 B 以 Bob 的身份登录我们的系统,然后切换到租户 A

这是一个常见的威胁吗?已知身份提供商(Microsoft、Facebook、Google)是否总是强制用户自己设置密码,或要求进行电子邮件验证?或者我们的情况是否独特,因为通常多租户应用程序不允许用户在不重新进行身份验证的情况下切换租户?

谢谢!

解决方法

通常的方法是让用户发送带有临时密码的欢迎电子邮件。用户从 ok 链接登录后,他们会更改自己选择的密码,然后完成设置。此过程还涉及设置 MFA 身份验证器或基于 SMS 的令牌身份验证。

在启用 MFA 的情况下,除非恶意用户可以访问密码和 MFA 设备,否则用户帐户是安全的。

,

解决方案是关于信任和范围。身份提供者 (IDP) 提供的信息应仅在受限制的范围内受信任。因此,如果租户 A 设置了 SSO,则其 IDP 提供的信息(声明)应仅对其租户有效。

因此某些 IDP 提供的电子邮件地址只能对该 IDP 有效。您不应假设某些 IDP 提供的电子邮件地址会以任何身份进行验证。