亚马逊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:添加申明发布规则至依赖方
- 在编辑申明发布策略(Edit Claim Issuance Policy)对话框中单击添加规则。“添加转换申请规则向导”随即打开。
- 在选择规则模板(Select Rule Template)页面中,为申明规则模板(Claim Rule Template)选择发送 LDAP 属性作为申明(Send LDAP Attributes as Claims),并单击下一步。
- 在配置规则 页面中,执行以下操作:
- 单击确定,并在编辑申明规则(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:添加映射规则以提供电子邮件属性
- 对于用户池属性,请选择电子邮件 > 保存。
步骤 8:使用应用程序客户端启用 SAML 登录
- 在 Amazon Cognito 的左侧导航窗格中,选择应用程序客户端设置(App Client Settings.)。
- 对于已启用的身份提供商(Enabled Identity Providers),请选择身份提供商名称(例如 ADFS)复选框。
- 如果您希望禁用非联合用户登录,请清除 Cognito 用户池复选框(Cognito User Pool)。
步骤 9:确认 Active Directory 用户的访问权
小结
在本博文中,我们提供了通过 ADFS 和 SAML 2.0 集成 Active Directory 与 Amazon Elasticsearch Service /Kibana 与 Amazon Cognito 身份验证的过程。
Kibana 是一个适用于数据分析使用案例的强大工具,如应用程序监控、日志分析和点击流分析。我们希望此文可帮助您将 Amazon Elasticsearch Service with 与您的 AD 集成。
请查看我们的 APN 博客系列第二篇:将 Amazon Elasticsearch Service 与 Kibana 结合用于联合身份 – Auth0。