本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SAMLAmazon OpenSearch 无服务器身份验证
借助 Amazon OpenSearch Serverless 的身份SAML验证,您可以使用现有的身份提供商为无服务器集合的 OpenSearch 控制面板终端节点提供单点登录 (SSO)。
SAML身份验证允许您使用第三方身份提供商登录 OpenSearch 控制面板以索引和搜索数据。 OpenSearch Serverless 支持使用 SAML 2.0 标准的提供商,例如 Identity Center、Okta、Keycloak、Active Directory 联合IAM身份验证服务 (AD FS) 和 Auth0。您可以将 IAM Identity Center 配置为同步来自其他身份来源(例如 Okta 和 Microsoft Entra OneLogin ID)的用户和群组。有关 Identity Center 支持的IAM身份源列表及其配置步骤,请参阅 Ident IAMity Center 用户指南中的入门教程。
注意
SAML身份验证仅适用于通过 Web 浏览器访问 OpenSearch 仪表板。经过身份验证的用户只能通过 OpenSearch 仪表板中的开发工具向 OpenSearch API操作发出请求。您的SAML凭证不允许您直接向 OpenSearch API操作HTTP发出请求。
要设置SAML身份验证,请先配置SAML身份提供者 (IdP)。然后,您可以在数据访问策略中包括来自该 IdP 的一个或多个用户。此策略将授予其针对集合和/或索引的某些权限。然后,用户可以登录 OpenSearch 仪表板并执行数据访问策略中允许的操作。
主题
注意事项
配置SAML身份验证时,请考虑以下几点:
-
不支持已签名和已加密的请求。
-
不支持已加密的断言。
-
不支持 IdP 发起的身份验证和注销。
-
对于非IAM身份SCP(例如在 Amazon OpenSearch Serverless SAML 和亚马逊服务的基本内部用户授权SAML中), OpenSearch 服务控制策略 () 将不适用或评估。
所需权限
SAML OpenSearch 无服务器的身份验证使用以下内容 AWS Identity and Access Management (IAM) 权限:
-
aoss:CreateSecurityConfig
— 创建提供SAML商。 -
aoss:ListSecurityConfig
— 列出当前账户中的所有SAML提供商。 -
aoss:GetSecurityConfig
— 查看SAML提供商信息。 -
aoss:UpdateSecurityConfig
— 修改给定的SAML提供程序配置,包括XML元数据。 -
aoss:DeleteSecurityConfig
— 删除提供SAML商。
以下基于身份的访问策略允许用户管理所有 IdP 配置:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:CreateSecurityConfig", "aoss:DeleteSecurityConfig", "aoss:GetSecurityConfig", "aoss:UpdateSecurityConfig", "aoss:ListSecurityConfigs" ], "Effect": "Allow", "Resource": "*" } ] }
请注意,Resource
元素必须是通配符。
创建SAML提供者(控制台)
这些步骤说明了如何创建SAML提供程序。这允许使用服务提供商 (SP) 启动的SAML身份验证来对 OpenSearch 仪表板进行身份验证。不支持 IdP 发起的身份验证。
为 OpenSearch 仪表板启用SAML身份验证
-
在https://console.aws.amazon.com/aos/家
中登录亚马逊 OpenSearch 服务控制台。 -
在左侧导航面板上,展开无服务器并选择SAML身份验证。
-
选择 “添加SAML提供商”。
-
为提供者提供名称和描述。
注意
您指定的名称可公开访问,当用户登录 OpenSearch 仪表板时,该名称将显示在下拉菜单中。确保该名称易于识别,并且不会泄露有关您的身份提供者的敏感信息。
-
在 “配置你的 IdP” 下,复制断言使用者服务 ()。ACS URL
-
使用您刚才复制的来配置您的身份提供商。ACS URL术语和步骤因提供者而异。请参阅提供程序的文档。
例如,在 Okta 中,您可以创建一个 “SAML2.0 Web 应用程序”,并将指定ACSURL为单点登录URLURL、收件人和目标URL。对于 Auth0,您可以在 “允许的回调 URLs” 中指定它。
-
如果您的 IdP 有用于受众限制的字段,则请提供受众限制。受众限制是SAML断言中的一个值,用于指定断言的对象是谁。对于 OpenSearch 无服务器,请指定
aws:opensearch:<aws account id>
。例如,aws:opensearch:
。123456789012
受众限制字段的名称因提供者而异。对于 Okta 来说,这是受众URI(SP 实体 ID)。对于IAM身份中心来说,它是应用程序SAML受众。
-
如果您使用的是 Ident IAM ity Center,则还需要指定以下属性映射:
Subject=${user:name}
,格式为unspecified
。 -
配置了身份提供程序后,它会生成 IdP 元数据文件。此XML文件包含有关提供商的信息,例如TLS证书、单点登录端点和身份提供者的实体 ID。
复制 IdP 元数据文件中的文本,并将其粘贴到 Provide metadata from your IdP(提供来自您的 IdP 的元数据)字段下。或者,选择 “从XML文件导入” 并上传文件。元数据文件应如下所示:
<?xml version="1.0" encoding="UTF-8"?> <md:EntityDescriptor entityID="
entity-id
" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"> <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <md:KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate>tls-certificate
</ds:X509Certificate> </ds:X509Data> </ds:KeyInfo>s </md:KeyDescriptor> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat> <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="idp-sso-url
"/> <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="idp-sso-url
"/> </md:IDPSSODescriptor> </md:EntityDescriptor> -
将 “自定义用户 ID” 属性字段留空,以使用SAML断言
NameID
元素作为用户名。如果您的断言不使用此标准元素,而是将用户名作为自定义属性,请在此处指定该属性。属性区分大小写。仅支持一个用户属性。以下示例显示了SAML断言
NameID
中的覆盖属性:<saml2:Attribute Name="
UserId
" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">annie
</saml2:AttributeValue> </saml2:Attribute> -
(可选)在 Group attribute(组属性)字段中指定自定义属性,如
role
或group
。仅支持一个组属性。没有默认群组属性。如果您未指定组属性,则您的数据访问策略只能包含用户主体。以下示例显示了SAML断言中的组属性:
<saml2:Attribute Name="
department
" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"> <saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">finance
</saml2:AttributeValue> </saml2:Attribute> -
默认情况下, OpenSearch 控制面板会在 24 小时后注销用户。您可以通过指定OpenSearch 仪表板超时将此值配置为 1 到 12 小时(15 到 720 分钟)之间的任意数字。如果您尝试将超时设置为等于或小于 15 分钟,您的会话将重置为一小时。
-
选择 “创建SAML提供商”。
访问 OpenSearch 仪表板
配置SAML提供商后,与该提供商关联的所有用户和群组都可以导航到 OpenSearch 仪表板端点。仪表板URL具有所有集合
的格式。collection-endpoint
/_dashboards/
如果您已SAML启用,请选择中的链接 AWS Management Console 将您定向到 IdP 选择页面,您可以在其中使用您的SAML凭据登录。首先,使用下拉列表选择身份提供者:
然后,使用您的 IdP 凭证登录。
如果您尚未SAML启用,请选择中的链接 AWS Management Console 将引导您以IAM用户或角色身份登录,但没有选项SAML。
向SAML身份授予对集合数据的访问权限
创建SAML提供商后,您仍然需要向底层用户和群组授予访问您的集合中数据的权限。您可以通过数据访问策略授予访问权限。在您向用户提供访问权限之前,他们将无法读取、写入或删除您的集合中的任何数据。
要授予访问权限,请创建数据访问策略并在Principal
声明IDs中指定您的SAML用户和/或组:
[ { "Rules":[ ... ], "Principal":[ "saml/
987654321098
/myprovider
/user/Shaheen
", "saml/987654321098
/myprovider
/group/finance
" ] } ]
您可以授予针对集合、索引或两者的访问权限。如果您希望不同用户拥有不同权限,请创建多条规则。有关可用权限的列表,请参阅受支持的策略权限。有关如何设置访问策略格式的信息,请参阅策略语法。
创建SAML提供者 (AWS CLI)
要使用 OpenSearch 无服务器创建SAML提供商API,CreateSecurityConfig请发送请求:
aws opensearchserverless create-security-config \ --name
myprovider
\ --type saml \ --saml-options file://saml-auth0
.json
在.json 文件中指定saml-options
为键值映射(包括元数据XML)。XML必须将元数据编码为JSON转义字符串
{ "sessionTimeout":
70
, "groupAttribute": "department
", "userAttribute": "userid
", "metadata": "<EntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ... ... ... IDPSSODescriptor>\r\n<\/EntityDescriptor>
" }
查看SAML提供商
以下ListSecurityConfigs请求列出了您账户中的所有SAML提供商:
aws opensearchserverless list-security-configs --type saml
该请求会返回有关所有现有SAML提供商的信息,包括您的身份提供商生成的完整 IdP 元数据:
{ "securityConfigDetails": [ { "configVersion": "MTY2NDA1MjY4NDQ5M18x", "createdDate": 1664054180858, "description": "Example SAML provider", "id": "saml/123456789012/myprovider", "lastModifiedDate": 1664054180858, "samlOptions": { "groupAttribute": "department", "metadata": "<EntityDescriptor xmlns=\"urn:oasis:names:tc:SAML:2.0:metadata\" ... ... ... IDPSSODescriptor>\r\n<\/EntityDescriptor>", "sessionTimeout": 120, "userAttribute": "userid" } } ] }
要查看有关某个具体提供者的详细信息,包括未来更新的 configVersion
,请发送 GetSecurityConfig
请求。
更新SAML提供商
要使用 OpenSearch Serverless 控制台更新SAML提供商,请选择SAML身份验证,选择您的身份提供商,然后选择编辑。您可以修改所有字段,包括元数据和自定义属性。
要通过 OpenSearch Serverless 更新提供商API,UpdateSecurityConfig请发送请求并包含要更新的策略的标识符。还必须包括配置版本,您可以使用 ListSecurityConfigs
或 GetSecurityConfig
命令检索配置版本。包括最新版本可以确保您不会无意中覆盖其他人所做的更改。
以下请求更新了提供者的SAML选项:
aws opensearchserverless update-security-config \ --id saml/
123456789012
/myprovider
\ --type saml \ --saml-options file://saml-auth0
.json \ --config-versionMTY2NDA1MjY4NDQ5M18x
将您的SAML配置选项指定为.json 文件中的键值映射。
重要
对SAML选项的更新不是渐进式的。如果您在更新时没有为 SAMLOptions
对象中的参数指定值,则现有值将被空值覆盖。例如,如果当前配置包含 userAttribute
的值,然后您进行了更新但不包括此值,则该值将从配置中移除。在您通过调用 GetSecurityConfig
操作进行更新之前,请确保您知道现有值是什么。
删除SAML提供商
删除SAML提供商后,数据访问策略中对关联用户和群组的任何引用都将不再起作用。为避免混淆,建议您在删除端点之前,先移除对访问策略中端点的所有引用。
要使用 OpenSearch 无服务器控制台删除SAML提供商,请选择身份验证,选择提供商,然后选择删除。
要通过 OpenSearch 无服务器删除提供商API,DeleteSecurityConfig请发送请求:
aws opensearchserverless delete-security-config --id saml/
123456789012
/myprovider