在云技术快速发展的时代,基础设施即服务(IaaS)和平台即服务(PaaS)已成为众多项目不可或缺的一部分,对各种云服务无缝集成的需求是不可否认的。微软是这一领域的主要参与者,投入了大量时间来打造用户友好的 Microsoft Entra ID 服务。然而,尽管供应商精心制定了说明,但专家在配置与 Slack、Salesforce 或 Datadog 等平台的集成时经常遇到问题。文档无法提供特定问题的答案。
Social Discovery Group 团队也面临着这些挑战,在本文中,我们将提供有关如何应对和解决这些挑战的见解。
Social Discovery Group 在其 50 多个约会平台组合中利用各种技术和云服务来保证其安全性和可靠性。我们在集成和配置不同系统(包括各种云之间的点对点连接)方面拥有丰富的经验。
Microsoft Entra ID 是一种用于身份和访问管理的云解决方案,充当在云中运行的目录和身份验证服务。 Microsoft Entra ID 为各种 Microsoft 和非 Microsoft 服务提供身份验证和授权服务。在本文中,我们将探讨以下云系统的集成:Slack、MongoAtlas、ElasticCloud、Salesforce 和 Datadog。
由于缺乏精确的指南,我们决定创建自己的指南,详细说明沿途出现的所有令人头疼的问题。因此,让我们导航到 Azure 中的“企业应用程序”部分。
有必要创建一个新的公司应用程序(只需单击几下即可完成)。接下来,访问我们刚刚创建的应用程序并配置单点登录 - SAML。从上到下进行更改:
创建“成员”角色(或选择其他名称)。接下来,在 Microsoft Entra ID 中创建一个测试用户并将其添加到我们的应用程序中。然后,转到 Slack 中的管理中心。请按照以下步骤操作:Slack Admin - 身份验证 - SAML 配置 - 配置
下一步是配置 SAML。我们建议注意“显示名称”设置。此外,在设置中,取消选中“登录时更新个人资料”,禁止更改电子邮件地址和显示名称。
还有一个选项可以自定义登录按钮上的文本,并禁止用户使用除 SSO 之外的任何其他方法登录。之后,您应该能够使用您的 Microsoft 帐户登录 Slack。如果需要任何其他字段或设置,可以通过 Azure AD 配置来完成。
要添加新属性,请转至用户属性并选择添加新映射。选择要在 Slack 中显示的所需源属性,并将其与相应的 Slack 属性关联。
添加必要的属性并保存设置后,继续按需配置以测试功能。取得积极结果后,您将收到以下信息:
接下来,您需要转到 Slack 并指定在完整的用户配置文件中显示哪些属性以及在何处检索它们。转到配置文件并选择要显示的信息以及从中提取信息的位置。在本例中,SCIM 对应于 Azure AD。
接下来,我们建议将必要的用户从 Active Directory 添加到 Slack 以体验无缝集成。我们还想提请注意删除用户时遇到的一个问题:如果从 Slack 中手动删除用户(通过 Slack 管理中心),则会持续出现错误,表明该用户因权限不足而无法转移到 Slack。发生这种情况是因为 Entra ID 保留了范围内用户的信息并为他们分配了唯一的 ID。在 Slack 中删除并重新添加用户会被 Entra ID 视为新用户,从而导致更新期间出现权限问题。
检查此处的文档。
对于 MongoAtlas,该过程遵循类似的路径。您还需要创建一个新的公司应用程序;为了方便起见,请在搜索字段中输入“MongoDB Atlas — SSO”。可以在此处找到更详细的说明。
接下来,继续进行单点登录设置,您需要在其中输入以下内容:
在“标识符”文本字段中,使用以下模板输入 URL:https://www.okta.com/saml2/service-provider/<Customer_Unique>
在“响应 URL”文本字段中,使用模板输入 URL:
https://auth.mongodb.com/sso/saml2/<Customer_Unique>
在“登录 URL”文本字段中,使用模板输入 URL:https://cloud.mongodb.com/sso/<Customer_Unique>
我们建议注意“属性”部分并按下面的屏幕截图所示进行配置(必须添加“memberOf”)。
接下来,在“使用 SAML 设置单点登录”页面上,转到“SAML 签名证书”部分并找到用于联合的 XML 元数据。选择“下载”下载证书并将其保存在本地(联合元数据 XML)。稍后我们将在 MongoDB Atlas 中需要它。
在“设置 MongoDB Atlas — SSO”部分中,复制相应的 URL。接下来,导航到MongoDB Atlas -> Organization -> Settings -> Federated Authentication Settings 。
首先在 Atlas 中添加 Microsoft Entra ID 凭据提供程序。从 Microsoft 门户输入上一步中提到的相应 URL (颁发者 URI、登录 URL、单点登录 URL) ,上传身份提供商签名证书,然后配置其余设置,如下面的屏幕截图所示。
单击“下一步”并将元数据文件保存在本地,因为稍后需要将其上传到 Azure 的单点登录配置页面上。
接下来,添加、映射和验证域,例如使用 MongoDB Atlas 中生成的相应 TXT 记录。之后,将您的域与凭据提供程序链接,然后继续最有趣的部分:角色配置。
我们创建了以下角色作为示例,每个角色都具有授予项目的特定权限。然后,您需要将这些角色映射到 Azure 角色。转到应用程序的“应用程序角色”,创建并添加角色,其值与您刚刚在 MongoAtlas 中分配给这些角色的名称完全匹配。
然后,将用户添加到 Microsoft Entra ID 企业应用程序中的应用程序,并为他们分配适当的角色。在 MongoDB Atlas 的联合管理部分中激活“使用 Azure SSO 登录”,并验证配置的设置是否正常运行。
请参阅此处的文档以获取更详细的说明。
让我们继续与 Elastic Cloud 集成。在 Enterprise Application Entra ID 中创建应用程序的基本步骤与前面的类似。在那里,您可以找到有关从何处获取标识符或注销 URL 的信息。但是,我们遇到了属性问题,因此我们将提供工作配置的屏幕截图。
我们创建了两个角色 - 读者和超级用户。
在这里,您可以根据需要创建任意数量的角色。 Elasticsearch 中的角色设置在角色映射中配置,如下所示:
现在有趣的部分来了。需要完成两件事:为 Kibana 和 Elasticsearch 添加 Azure SSO 配置。为此,请按照下列步骤操作:
导航到 Elasticsearch Cloud 部署的编辑部分以更新 elasticsearch.yml 配置。添加以下行:
“ xpack:
security:
authc:
realms:
saml:
saml-azure-ad:
order: 2
attributes.principal: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"
attributes.groups: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role"
attributes.name: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"
attributes.mail: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
idp.metadata.path: "APP Federation metadata URL"
idp.entity_id: "Azure Entra ID Identifier"
sp.entity_id: "Kibana endpoint"
sp.acs: "Kibana endpoint/api/security/v1/saml"
sp.logout: "Kibana endpoint/logout" “
添加并修改以红色突出显示的值以匹配您的配置后,单击“保存”。 Elastic Cloud 将验证所有更改并启动集群更新。此过程可能需要几分钟。
“ xpack.security.authc.providers:
saml.saml1:
order: 0
realm: saml-azure-ad
description: "Log in with Azure Entra ID"
basic.basic1:
order: 1 ”
完成前两个步骤后,您的 Kibana 登录页面上应该会出现另一个登录选项。接下来,继续将用户添加到 Microsoft Entra ID 企业应用程序中的应用程序,并为他们分配必要的角色。
请参阅此处的文档以获取更多信息。
与 Salesforce 的集成比以前的集成稍微复杂一些。初始步骤类似,但应注意“配置”部分。关于指定将进行帐户同步的管理员凭据存在细微差别,并且需要启用属性映射。
以下是屏幕截图中我们的配置设置的示例。我们没有遇到任何重大的属性问题,但我们还将提供我们使用的属性的屏幕截图。
在 Salesforce 本身中,没有任何特殊的细微差别,我们继续执行本指南中概述的以下步骤。
在与Datadog集成的过程中,我们也遇到了一些问题。可以在这里找到指导我们的主要文档。为了解决细微差别,我们参考了本指南。
一切开始都很顺利,一开始似乎不会有任何问题。像往常一样,我们在 Microsoft Entra ID 中创建了一个新的企业应用程序。
在“使用 SAML 设置单点登录”部分中,请注意您为 Datadog 帐户选择的位置。就我们而言,是欧洲地区。
如前所述,对于 MongoAtlasDB,我们添加了附加属性“memberOf”用于角色映射。
保存所有设置并下载联合元数据 XML。将此文件上传到 Datadog 中的 SAML 设置中。这里有一个方便的链接供参考。 Datadog SAML 设置(如果您的位置不同,请将“EU”替换为适当的域区域)。它应该类似于下面的屏幕截图。
在组织的登录方法设置中,仅保留必要的内容(在我的例子中,我禁用了密码登录和 Google 身份验证)。在 Microsoft Entra ID 的应用程序注册中添加 Azure 中的角色。
最有趣的部分来了。导航到 Datadog 中的 SAML 组映射 -> 角色映射,然后添加键、值和角色。看起来很简单。请参阅下面的屏幕截图。
但它不起作用,并且不断给出错误“该用户没有 AuthNMappings”。
很长一段时间以来,我们试图通过查看所有文档、日志和故障排除页面来了解我们做错了什么。不幸的是,没有任何地方提到这一点。最后,解决方案很简单:按照下面屏幕截图所示的配置进行操作。
在 KEY 字段中,输入字符串:http://schemas.microsoft.com/ws/2008/06/identity/claims/role
完成此操作后,一切都开始成功进行。
“这只是我们与 Microsoft Entra ID 集成的系统的一小部分。我们希望此处分享的见解能够作为有用的资源,简化您的集成流程并节省宝贵的时间。总而言之,使用 Microsoft 具有以下优势Entra ID可以突出显示:单点登录,不需要多次输入密码;不需要额外的组件;易于配置和管理;组策略和组;设备注册;以及高级安全性。