本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用启用 SAML 联合 AWS Identity and Access Management
OpenSearch UI 支持安全断言标记语言 2.0 (SAML),这是许多身份提供商使用的开放标准。这将通过 AWS Identity and Access Management (IAM)启用身份联合验证。有了这种支持,您的账户或组织中的用户可以通过代入 IAM 角色直接访问用户 OpenSearch 界面。您可以为最终用户创建由身份提供商发起 (IdP) 的单点登录体验,他们可以在外部身份提供商中进行身份验证,并直接路由到您在用户界面中定义的页面。 OpenSearch 您还可以通过将您的最终用户或群组配置为使用不同的 IAM 角色来实现精细的访问控制,这些角色具有不同的访问用户 OpenSearch 界面和关联数据源的权限。
本主题提供了在 OpenSearch 用户界面中配置 SAML 用法的分步说明。在这些步骤中,我们以配置 Okta 身份和访问管理应用程序的步骤为例进行说明。其他身份提供程序(例如 Azure Active Directory 和 Ping)的配置步骤类似。
注意
如果您使用 AWS IAM 身份中心,则无需按照本主题所述配置 SAML 联合。 OpenSearch 用户界面本身支持 IAM 身份中心,该中心无需额外配置 SAML 即可提供 SSO 访问权限。IAM 身份中心还支持组织级别的用户和群组管理。此处描述的 SAML 集成适用于不是 IAM 身份中心的第三方身份提供商(例如 Okta、Azure Active Directory 和 Ping)。
主题
步骤 1:设置身份提供程序应用程序(Okta)
要将 SAML 与 OpenSearch UI 一起使用,第一步是设置您的身份提供商。
任务 1:创建 Okta 用户
-
以具有管理权限的用户https://login.okta.com/
身份登录您的 Okta 组织。 -
在管理员控制台上,在导航窗格的目录下,选择人员。
-
选择 Add person(添加人员)。
-
对于名字,输入用户的名字。
-
对于姓氏,输入用户的姓氏。
-
对于用户名,以电子邮件格式输入用户的用户名。
-
选择我将设置密码,并输入密码
-
(可选)如果不希望用户首次登录时更改密码,请取消勾选用户首次登录时必须更改密码复选框。
-
选择保存。
任务 2:创建和分配组
-
以具有管理权限的用户https://login.okta.com/
身份登录您的 Okta 组织。 -
在管理员控制台上,在导航窗格的目录下,选择组。
-
选择添加组。
-
输入组名称,并选择保存。
-
选择新创建的组,然后选择分配人员。
-
选择加号(+),然后选择完成。
-
(可选)重复步骤 1-6 以添加更多的组。
任务 3:创建 Okta 应用程序
-
以具有管理权限的用户https://login.okta.com/
身份登录您的 Okta 组织。 -
在管理员控制台上,在导航窗格的应用程序下,选择应用程序。
-
选择创建应用程序集成。
-
选择 SAML 2.0 作为登录方法,然后选择下一步。
-
输入应用程序集成的名称(例如
OpenSearch_UI),然后选择下一步。 -
在应用程序中输入以下值;无需更改其他值:
-
1. 对于单点登录网址,输入
https://signin.aws.amazon.com/saml商业 AWS 区域或特定地区的网址。 -
2. 对于受众 URI(SP 实体 ID),输入
urn:amazon:webservices。 -
3. 对于名称 ID 格式,输入
EmailAddress
-
-
选择下一步。
-
选择我是 Okta 客户,正在添加内部应用,然后选择这是我们创建的内部应用。
-
选择结束。
-
选择任务,然后选择分配。
-
选择分配给组,然后选择要添加组旁边的分配。
-
选择完成。
任务 4:设置 Oka 高级配置
创建自定义 SAML 应用程序后,完成以下步骤:
-
以具有管理权限的用户https://login.okta.com/
身份登录您的 Okta 组织。 在管理员控制台的常规区域中,选择 SAML 设置下的编辑。
-
选择下一步。
-
使用以下格式将默认中继状态设置为 OpenSearch UI 端点:
https://.region.console.aws.amazon.com/aos/home?region=region#opensearch/applications/application-id/redirectToDashboardURL以下是示例:
https://us-east-2.console.aws.amazon.com/aos/home?region=us-east-2#opensearch/applications/abc123def4567EXAMPLE/redirectToDashboardURL -
在属性语句(可选)项下,添加以下属性:
-
使用角色属性,以逗号分隔格式提供 IAM 角色和身份提供程序。在稍后设置 AWS 配置时,您将使用相同的 IAM 角色和身份提供商。
-
将 user.login 设置为。 RoleSessionName 这用作代入角色时签发的临时凭证的标识符。
有关参考:
Name 名称格式 格式 示例 https://aws.amazon.com/SAML/Attributes/Role未指定
arn:aws:iam::aws-account-id:role/role-name,arn:aws:iam::aws-account-id:saml-provider/provider-namearn:aws:iam::111222333444:role/oktarole,arn:aws:iam::111222333444:saml-provider/oktaidphttps://aws.amazon.com/SAML/Attributes/RoleSessionName未指定
user.loginuser.login -
-
添加属性后,选择下一步,然后选择完成。
您的属性格式应与下图所示的属性格式相似。默认中继状态值是指您账户或组织中的最终用户完成 Okta 单点登录验证后定义登录页面的 URL。您可以将其设置为 OpenSearch UI 中的任何页面,然后将该 URL 提供给其目标最终用户。
第 2 步:设置 AWS Okta 的配置
完成以下任务以设置 Okta 的 AWS 配置。
任务 1:收集 Okta 信息
在此步骤中,您需要收集 Okta 信息,以便稍后在 AWS中对其进行配置。
-
以具有管理权限的用户https://login.okta.com/
身份登录您的 Okta 组织。 -
在页面右下角的登录选项卡上,选择查看 SAML 设置说明。
-
记下身份提供商单一 Sign-on URL 的值。在连接任何第三方 SQL 客户端(例如 SQL)时,可以使用此 UR L Workbench/J
。 -
使用区块 4 中的身份提供程序元数据,然后将元数据文件以 .xml 格式进行保存(例如,
metadata.xml)。
任务 2:创建 IAM 提供程序
要创建 IAM 提供程序,请完成以下步骤:
登录 AWS 管理控制台 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/
。 -
在导航面板的访问管理下,选择身份提供程序。
-
选择添加提供程序。
-
对于提供程序类型,选择 SAML。
-
对于提供程序名称,输入名称。
-
对于元数据文档,选择选择文件,并上传您先前下载的元数据文件(.xml)。
-
选择添加提供程序。
任务 3:创建 IAM 角色
要创建您的 AWS Identity and Access Management 角色,请完成以下步骤:
登录 AWS 管理控制台 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/
。 -
在导航窗格的访问权限管理下,选择角色。
-
选择创建角色。
-
对于可信实体类型,选择 SAML 2.0 联合身份验证。
-
对于基于 SAML 2.0 的提供程序,选择您先前创建的身份提供程序。
-
选择 “允许编程和 AWS 管理控制台 访问” 。
-
注意
在 “Sign-in 端点” 下,选择 “不带唯一标识符” 。如果您选择使用唯一标识符,则信任策略中的
SAML:aud条件将与 SAML 断言受众不匹配,从而导致用户尝试登录时AccessDenied出错。 -
选择下一步。
-
在权限策略列表中,选中授予 OpenSearch 服务权限的策略(例如 AWS 托管策略)的复选框AmazonOpenSearchServiceFullAccess。
-
选择下一步。
-
在审核区域中,对于角色名称,键入角色的名称(例如,
oktarole)。 -
(可选)对于描述,输入角色用途的简要描述。
-
选择创建角色。
-
导航到您刚创建的角色,选择信任关系选项卡,然后选择编辑信任策略。
-
在 “编辑语句” 窗格的 “为 STS 添加操作” 下,选中相应的复选框TagSession。
-
选择更新策略。
第 3 步:在 IAM 中创建亚马逊 OpenSearch 服务访问策略
了解如何配置您的 IAM 角色以进行 OpenSearch 访问控制。使用 IAM 角色,您可以对 Okta 用户组实施细粒度的访问控制,以访问资源。 OpenSearch 本主题使用两个示例组展示基于 IAM 角色的配置。
您可以使用后端角色映射将 Amazon S OpenSearch ervice 域角色映射到 IAM 角色,如以下示例所示:
{ "bob-group": { "hosts": [], "users": [], "reserved": false, "hidden": false, "backend_roles": [ "arn:aws:iam::111222333444:role/bob-group" ], "and_backend_roles": [] }, "alice-group": { "hosts": [], "users": [], "reserved": false, "hidden": false, "backend_roles": [ "arn:aws:iam::111222333444:role/alice-group" ], "and_backend_roles": [] } }
第 4 步:使用 SAML 验证身份提供商发起的单一 Sign-On 体验
打开默认中继状态的 URL,以打开 Okta 身份验证页面。输入 end-user 的凭证。您将被自动重定向到 OpenSearch 用户界面。
您可通过点击导航面板底部的用户图标查看当前凭证,如下图所示:
您还可以通过访问导航面板底部的开发人员工具,并在控制台中运行查询,以验证用户的精细访问控制权限。下面是示例查询。
第 5 步:配置 SAML 基于属性的精细访问控制
借助 Amazon S OpenSearch ervice,您可以使用 SAML 的精细访问控制,将身份提供商的用户和群组动态映射到 OpenSearch 细粒度的访问控制用户和角色。您可以将这些角色的范围限定为特定的 OpenSearch 域和无服务器集合,并定义索引级权限和文档级安全性。
注意
有关精细访问控制的更多信息,请参阅 Fine-grained Amazon OpenSearch 服务中的访问控制。
主题
用于精细访问控制的 SAML 属性
- subjectKey
-
映射到唯一用户属性(如电子邮件或用户名),用于在身份验证过程中识别用户。
- rolesKey
-
映射至 IdP 中的组或角色属性,这些属性决定授权所需的角色或权限。
任务 1:配置 Okta 以实现精细访问控制
配置 Okta 以实现精细访问控制
-
在 “属性陈述” 部分为 OpenSearch 用户主体添加新属性:
-
名称:
UserName -
值:
${user-email}
此属性在用于身份验证的 OpenSearch 细粒度访问控制配置中用作主题密钥。
-
-
在组属性语句部分中,为角色添加组属性:
-
名称:
groups -
筛选:
OpenSearch_xxx
此属性用作角色密钥,用于将群组映射到 OpenSearch 细粒度的访问控制角色以进行授权。
-
任务 2:在域中 OpenSearch 配置 SAML
在域中 OpenSearch 配置 SAML
-
在 AWS 管理控制台中,确定要为 OpenSearch 用户界面用户启用精细访问控制的 OpenSearch 服务域。
-
导航到特定域的详细信息页面
-
选择安全配置选项卡,并点击编辑。
-
展开通过 IAM 联合身份验证的 SAML。
-
输入您在 Okta 中定义的
subjectKey和roleKey。 -
选择保存更改。
您还可以使用 AWS CLI配置精细访问控制。
aws opensearch create-domain \ --domain-name testDomain \ --engine-version OpenSearch_1.3 \ --cluster-config InstanceType=r5.xlarge.search,InstanceCount=1,DedicatedMasterEnabled=false,ZoneAwarenessEnabled=false,WarmEnabled=false \ --access-policies '{"Version": "2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:*","Resource":"arn:aws:es:us-east-1:12345678901:domain/neosaml10/*"}]}' \ --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \ --node-to-node-encryption-options '{"Enabled":true}' \ --encryption-at-rest-options '{"Enabled":true}' \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \ --ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \ --no-verify-ssl \ --endpoint-url https://es.us-east-1.amazonaws.com \ --region us-east-1
要更新现有域,请执行以下操作:
aws opensearch update-domain-config \ --domain-name testDomain \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \ --ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \ --no-verify-ssl \ --endpoint-url https://es.us-east-1.amazonaws.com \ --region us-east-1
任务 3:在 OpenSearch 无服务器集合中配置 SAML
在 Serverless 中配置 SAML-based 细粒度的访问控制 OpenSearch
-
打开 AWS 管理控制台 并导航到亚马逊 OpenSearch 服务。
-
在导航窗格的无服务器下,选择安全,然后选择身份验证。
-
在 IAM 联合身份验证部分,选择编辑。
您可以使用此配置控制 SAML 基于属性的精细访问控制。默认情况下,IAM 联合身份验证处于禁用状态。
-
选择启用 IAM 联合身份验证。
-
输入您在 Okta 中定义的
subjectKey和roleKey值。有关更多信息,请参阅 用于精细访问控制的 SAML 属性。
-
选择保存。
-
在导航窗格的无服务器下,选择数据访问策略。
-
更新现有策略或创建新策略。
-
展开规则,选择添加主体,然后选择 IAM 联合用户和组。
-
添加所需的主体,并选择保存。
-
选择授权。
-
在此规则下,执行以下操作:
-
选择要为所选主体定义的权限。
-
指定要在其中应用权限的集合。
-
(可选)定义索引级权限。
注意
您可以创建多个规则,为不同的主体组分配不同的权限。
-
-
完成后,选择保存。
-
选择创建。
或者,您也可以使用 CLI 为集合创建安全配置,如下所示:
aws opensearchserverless create-security-config --region "region" --type iamfederation --name "configuration_name" --description "description" --iam-federation-options '{"groupAttribute":"GroupKey","userAttribute":"UserKey"}'