使用 Azure Active Directory 保护对基于 VM 的 Web 服务器的访问

for*_*ete 7 azure azure-activedirectory

我正在尝试将定制的基于 Web 的服务放入 Azure。它在三个 Linux VM 上运行,其中一个需要面向外(在端口 443 上),其他在单独的子网上并且只能由面向外的服务器访问。这一点很容易并且工作正常。

我的问题是它自己没有任何身份验证,因此我想将其提供给使用 Azure 服务(最好使用 MFA)的外部用户。这是我感到困惑的地方。

为此,我设置了一个 Azure Active Directory B2C 租户。然后我认为我需要在此上注册一个应用程序以提供条件访问,然后使用 Azure 应用程序代理来链接到 Web 服务器。

然而,所有文档似乎都在谈论应用程序代理链接到本地​​服务,而不是像我这样已经在云中的那些,所以我应该使用其他东西吗?

也许我在树错了树,应该使用不同的服务集,或者它可能无法在 Azure 中完成?如果有人可以提供一些指导,我将不胜感激。

Swi*_*iss 2

有很多方法可以实现这一点,但我将快速介绍一些我更熟悉的替代方案。

在本文中,我将 Azure Active Directory 称为 AAD。

什么是 AAD

让我们快速讨论一下 AAD 是什么和不是什么。AAD 不是 Active Directory。他们唯一的共同点就是名字。AAD 不是 LDAP,它不支持 RADIUS,并且不能充当需要 Active Directory 端点的任何内容的 Active Directory 端点。

AAD 是基于 REST API 的身份验证服务。它支持 OAuth 2,我相信也支持 SAML。您配置的任何内容都需要使用这些端点进行身份验证。

有点讽刺的是,许多 Azure 的本机服务不支持 AAD 作为身份验证端点

可行的选择

Azure 应用程序网关

这本质上是 Azure 应用程序代理,用于托管在 Azure 上的服务。这可能是您设置最简单的解决方案。距离上次使用已经有一段时间了,不过应该支持AAD认证。Azure 提供了大量有关如何设置和配置应用程序网关的文档。

Azure 应用程序网关文档

3rd 方身份验证代理

如果您在部署之前使用 Apache 或 nginx 或类似的产品,则可以使用第三方身份验证代理(例如Skipper )来控制对网站的访问。您需要部署船长服务,并将其配置为连接到客户的 AAD OAuth 端点。

不可行的选择

Azure 应用程序代理

正如您在问题中提到的,这不适用于 Azure 托管应用程序。

3rd 方 VPN 网关

我不知道有任何 VPN 服务器支持 OAuth 或 SAML 作为后端机制。我认为OpenVPN不支持它,而且它是最常用的VPN服务器。但也有可能存在一个选项。

Azure VPN 网关

如果您想使用 ADD 进行身份验证,这实际上不是一个选项,因为 Azure VPN 网关仅允许通过 TLS 或 RADIUS 进行身份验证,而这两者都不与 AAD 兼容。因此,这不是一个可行的选择。