使用 Microsoft Azure Active Directory 中的 OAuth 2.0 保护 Chronograf

导航至

虽然我们通常会收到关于如何保护对后端数据存储访问的疑问,但在某些情况下,将安全性置于前端应用程序上更为实用。

如果您的组织使用的身份提供商支持 OAuth2,则可以轻松配置 Chronograf 应用程序以添加对用户授权和身份验证的支持。在本示例中,我们将展示如何使用 Microsoft Azure Active Directory (Azure AD) 的适当元数据快速配置 Chronograf。

Azure AD 构建于 OAuth2 协议之上,该协议定义了几种身份验证方法,最终用户将获得访问令牌以针对给定资源进行身份验证。

在此工作流程中,用户将从 Chronograf 应用程序重定向到其 Microsoft Azure 登录屏幕。在那里,个人将被提示输入电子邮件和密码,然后才能访问应用程序资源。

创建 Azure AD 应用程序

让我们首先在 Azure Active Directory 中创建一个新应用程序。您可以在此处找到概述该过程的详细说明:创建 Azure Active Directory 应用程序

配置 Chronograf 应用程序后,您可以将用户和组分配给该应用程序,或者选择使其可供您租户中的所有用户访问。

接下来,您需要记下以下元数据信息:<code class="language-markup">APPLICATION-ID>、<TENANT-ID> 和 <APPLICATION-KEY>。这些值将用于定义您的 Chronograf 环境并成功验证具有访问权限的用户的身份。

获取租户 ID

获取应用程序 ID 和应用程序密钥

保存密钥后,将显示密钥的值。复制此值,因为您以后无法检索密钥。

注册回调 URL

请务必在您的 Azure 应用程序设置中注册回复 URL。这应与 Chronograf 的调用 URL 匹配。否则,您将收到一条错误消息,指出未为应用程序注册回复地址。 例如,如果 Chronograf 配置的 <GENERIC_NAME> 值为 AzureAD,则回复 URL 将为 http://localhost:8888/AzureAD/callback

注意: 如果您还为 Chronograf 配置了 TLS/SSL 安全性,则需要修改协议以确保您使用 https:// 协议(而不是 http://)。

Chronograf 配置

在 Azure AD 中完成应用程序配置后,您现在可以使用 Chronograf 完成配置。使用来自您的 Azure AD 实例的元数据,继续导出以下环境变量

Chronograf 的导出(例如,在 /etc/default.chronograf 中)

  • GENERIC_TOKEN_URL=https://login.microsoftonline.com/<<TENANT-ID>>/oauth2/token
  • TENANT=<<TENANT-ID>>
  • GENERIC_NAME=AzureAD
  • GENERIC_API_KEY=userPrincipalName
  • GENERIC_SCOPES=openid
  • GENERIC_CLIENT_ID=<<APPLICATION-ID>>
  • GENERIC_AUTH_URL=https://login.microsoftonline.com/<<TENANT-ID>>/oauth2/authorize?resource=https://graph.windows.net
  • GENERIC_CLIENT_SECRET=<<APPLICATION-KEY>>
  • TOKEN_SECRET=secret
  • GENERIC_API_URL=https://graph.windows.net/<<TENANT-ID>>/me?api-version=1.6
  • PUBLIC_URL=http://localhost:8888

用户登录

现在,启动 Chronograf 并导航到 Web UI ( localhost:8888 )。您将看到一个新屏幕,其中包含使用新配置的身份验证类型的选项。

用户将被重定向到授权端点,他们将在那里输入其电子邮件和密码以使用 Azure AD 进行身份验证。

成功登录的用户将获得授权码,证明他们刚刚登录。用户现在已通过身份验证,并将进入 Chronograf Web-UI,其角色访问权限由其 Azure AD 配置文件或 Chronograf 管理员设置的默认值维护。

结论

对于那些只需要限制对 Web-UI 的访问的用户,利用 Microsoft Azure Active Directory 可以快速简便地添加集中式的用户安全层。