亚马逊AWS官方博客

利用 Active Directory 联合身份访问基于 Amazon Elasticsearch Service 的 Kibana

AWS最近发布了 Amazon Elasticsearch Service 与 Amazon Cognito 集成的服务,现在企业用户在使用 Kibana访问 Amazon Elasticsearch Service时,可以使用企业目录凭证来进行联合身份认证。

在此系列博客文章中,我们将会不同的身份提供商设置 Amazon Cognito 用户池,包括 Microsoft Active Directory (SAML 2.0)、Auth0 (OIDC) 和 Okta 凭证。

在此文章中,我们将分享 Active Directory (AD) 与 Amazon Cognito 的集成过程。Active Directory 是一项管理用户身份的服务。使用 Amazon Cognito 用户池,您可以扩展自己的目录,从而使 AD 用户能够使用相同的安全凭证登录 Kibana。

下图显示了简要的架构图,我们将通过本博文构建此图。

步骤 1:创建 Active Directory 域来存储用户身份

在本博文中,我们将使用 Active Directory 域来进行用户身份验证。AD 可以由 AWS 托管 Microsoft AD 或本地域控制器托管。Active Directory 域作为 Microsoft Windows Server 产品中的一个组件提供。

如果您没有任何现有目录,您可以在您的本地环境中安装并配置角色,或启动 AWS 托管 Microsoft AD。

步骤 2:在您的域中的 Windows Server 上安装 ADFS

Active Directory Federation Service (ADFS) 是 Windows Server 的一个组件,可使您将 AD 用作 SAML 身份提供商。您可以使用您的本地 AD 或 AWS 托管 Microsoft AD 配置 ADFS。要使用 AWS 托管 Microsoft AD 设置 ADFS 服务器,请按照 AWS 安全博客博文中的步骤操作。

步骤 3:设置 Cognito 用户池和身份池

Kibana 与 Amazon Elasticsearch Service的 集成可使用Amazon Cognito 用户池和身份池。将 AD 身份验证与用户池联合之前,我们需要同时准备好用户池和身份池。

AWS 数据库博客的此博文显示如何为 Amazon Elasticsearch Service 上的 Kibana 设置用户池和身份池。请按照文章中的步骤创建 Amazon Elasticsearch Service 域。我们将在配置 ADFS 后更新用户池配置。

步骤 4:配置 ADFS

在此步骤中,我们将 ADFS 添加为 Amazon Cognito 用户池的外部身份提供商。

添加依赖方至 ADFS

  • 登录 Active Director Federation Services (ADFS) 服务器。
  • 服务器管理器(Server Manager中,选择工具(Tools > ADFS 管理(ADFS Management
  • 选择信任关系 > 依赖方信任 > 添加依赖方信任。(Trust Relationships > Relying Party Trusts > Add Relying Party Trust.)

  • “添加依赖方信任向导(Add Relying Party Trust)”随即打开,在欢迎页面中,选择申明感知(Claims Aware
  • 单击启动
  • 选择数据源页面中,选择手动输入依赖方的数据(Enter Data About the Relying Party Manually并单击下一步
  • 指定显示名称页面中,键入依赖方的显示名称(例如 Cognito 用户池)并单击下一步
  • 单击下一步以跳过配置证书(Configure Certificate页面(您不需要配置证书)。
  • 配置 URL 页面中,执行以下操作:
    • 选择启用对 SAML 2.0 WebSSO 协议(Enable Support for SAML 2.0 WebSSO Protocol)的支持选项。
    • 在 URL 字段中,使用以下格式添加 Amazon Cognito POST 终端节点https://<yourCognitoDomainPrefix>.auth.<region>.amazoncognito.com/saml2/idpresponse
    • 单击下一步

    • 配置标识符页面上,执行以下操作:
      • 依赖方信任标识符(Relying Party Trust Identifier字段中,使用以下格式键入信任标识符:urn:amazon:cognito:sp:<userpoolId> 
      • 单击添加 > 下一步

  • 选择访问控制策略(Choose Access Control Policy页面中,为您的域选择适当的访问权:
    • 选择允许特定组(Choose Access Control Policy并在您的 AD 域中指定一个或多个组,以基于 AD 组限制访问权。
    • 选择允许所有人(Permit Everyone,以允许所有的 AD 域用户访问 Kibana。
    • 请注意,Amazon Cognito 还具有基于身份提供商所传递的用户信息限制访问权的功能。有关详细信息,请参阅 Amazon Elasticsearch Service 文档
  • 单击下一步,并在准备好添加信任(Ready to Add Trust页面上单击下一步 > 关闭

步骤 5:添加申明发布规则至依赖方

  • 依赖方信任窗口(Relying Party Trusts)中,右键单击依赖方信任(例如 Cognito 用户池)并选择编辑申明发布策略(Edit Claim Issuance Policy
  • 编辑申明发布策略(Edit Claim Issuance Policy对话框中单击添加规则。“添加转换申请规则向导”随即打开。
  • 选择规则模板(Select Rule Template页面中,为申明规则模板(Claim Rule Template选择发送 LDAP 属性作为申明(Send LDAP Attributes as Claims,并单击下一步
  • 配置规则 页面中,执行以下操作:
    • 键入申明规则名称(例如电子邮件)。
    • 对于属性仓库(Attribute Store,请选择 Active Directory
    • 选择一个 LDAP 属性(LDAP Attribute,然后选择传出申明类型(Outgoing Claim Type以映射该属性。
    • 确保映射 NameId Email 的属性。具有默认配置的 Amazon Cognito 用户池需要这些属性
    • 确保登录用户具有 NameId Email 的源 LDAP 属性。在下面的用户属性示例中,显示名称作为 NameId 属性传递,电子邮件作为 Email 属性传递
  • 单击确定,并在编辑申明规则(Edit Claim Rules对话框中再次单击确定

步骤 6:将 ADFS 作为 SAML IdP 添加到 Cognito 用户池中

开始此任务前,确认以下 URL 在 ADFS 服务器上可用。您可以在此下载元数据文档:https://<yourADFSserverName>/FederationMetadata/2007-06/FederationMetadata.xml 

  • 在 Amazon Cognito 控制台中访问身份提供商并选择 SAML
  • 对于元数据文档(Metadata Document),单击选择文件并上传从ADFS 服务器下载的元数据文档。或者,您可以直接指定 URL,但您的 ADFS SAML 元数据文档必须可以通过互联网访问。
  • 对于提供商名称,请键入您的身份提供商名称,如 ADFS
  • 选择创建提供商(Create Provider

步骤 7:添加映射规则以提供电子邮件属性

  • 在“属性映射”选项卡中,为 SAML 属性键入以下字符串:http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  • 对于用户池属性,请选择电子邮件 > 保存

步骤 8:使用应用程序客户端启用 SAML 登录

  • 在 Amazon Cognito 的左侧导航窗格中,选择应用程序客户端设置(App Client Settings.
  • 对于已启用的身份提供商(Enabled Identity Providers,请选择身份提供商名称(例如 ADFS)复选框。
  • 如果您希望禁用非联合用户登录,请清除 Cognito 用户池复选框(Cognito User Pool)。

步骤 9:确认 Active Directory 用户的访问权

  • 访问 Kibana 终端节点。
  • 为联合登录选择 ADFS IdP
  • 如果您禁用非联合用户登录,系统将提示您在以下对话框中进行登录:
  • 选择将重定向至 ADFS 身份验证控制台的 ADFS。
  • 如果您保持允许非联合用户登录,系统将提示您在以下对话框中进行登录。您可以选择要在登录时使用的身份提供商。选择将重定向至 ADFS 身份验证控制台的 ADFS
  • 使用 ADFS 登录后,您将被重定向到 Kibana 控制台,并且可以开始使用该控制台。

小结

在本博文中,我们提供了通过 ADFS 和 SAML 2.0 集成 Active Directory 与 Amazon Elasticsearch Service /Kibana 与 Amazon Cognito 身份验证的过程。

Kibana 是一个适用于数据分析使用案例的强大工具,如应用程序监控、日志分析和点击流分析。我们希望此文可帮助您将 Amazon Elasticsearch Service with 与您的 AD 集成。

请查看我们的 APN 博客系列第二篇:将 Amazon Elasticsearch Service 与 Kibana 结合用于联合身份 – Auth0

 

校译作者

谷雷

AWS APN 合作伙伴解决方案架构师,主要负责 AWS (中国)合作伙伴的方案架构咨询和设计工作,同时致力于 AWS 云服务在国内的应用及推广。