SAML適用於 Amazon OpenSearch 無伺服器的身分 - Amazon OpenSearch Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SAML適用於 Amazon OpenSearch 無伺服器的身分

使用適用於 Amazon OpenSearch 無伺服器的身分SAML驗證,您可以使用現有的身分供應商為無伺服器集合的 OpenSearch 儀表板端點提供單一登入 (SSO)。

SAML驗證可讓您使用第三方身分識別提供者登入 OpenSearch 儀表板,以索引和搜尋資料。 OpenSearch 無伺服器支援使用 SAML 2.0 標準的提供者,例如IAM身分識別中心、Okta、金鑰遮罩、作用中目錄同盟服務 (AD FS) 和 Auth0。您可以設定IAM身分識別中心, OneLogin以同步處理來自其他身分識別來源 (例如 Okta 和 Microsoft Entra ID) 的使用者和群組。如需 Identity Center 支援的身分識IAM別來源清單及其設定步驟,請參閱IAM身分識別中心使用者指南中的入門教學課程

注意

SAML驗證僅適用於透過 Web 瀏覽器存取 OpenSearch 儀表板。已驗證的使用者只能透過 OpenSearch 儀表板中的開發工具向 OpenSearch API作業發出要求。您的SAML憑據允許您直接向 OpenSearch API操作發出HTTP請求。

若要設定SAML驗證,請先設定SAML身分識別提供者 (IdP)。然後,您可以將該 IdP 中的一個或多個使用者納入資料存取政策中。此政策會向它授予集合和/或索引的某些許可。然後,使用者可以登入 OpenSearch 儀表板並執行資料存取原則中允許的動作。

SAML authentication flow with data access policy, OpenSearch interface, and JSON configuration.

考量事項

設定SAML驗證時,請考慮下列事項:

  • 不支援已簽署和已加密的請求。

  • 不支援已加密的聲明。

  • 不支援 IdP 啟動的身分驗證和登出。

  • 如SAML果是非IAM身分識別 SCP (例如 Amazon OpenSearch 無伺服器SAML和 Amazon 服務的基本內部使用者授權),則不適用或評估 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提供者。這可讓使SAML用服務提供者 (SP) 起始的 OpenSearch 儀表板驗證進行驗證。不支援 IdP 啟動的身分驗證。

啟用 OpenSearch 儀表板的SAML驗證
  1. https://console.aws.amazon.com/aos/家中登錄 Amazon OpenSearch 服務控制台。

  2. 在左側導覽面板上,展開「無伺服器」,然後選擇「SAML驗證」。

  3. 選擇新增SAML提供者

  4. 提供提供者的名稱和描述。

    注意

    您指定的名稱可公開存取,當使用者登入 OpenSearch 儀表板時,會出現在下拉式功能表中。確保名稱易於識別,並且不會洩露有關您身分提供者的敏感資訊。

  5. 在「設定您的 IdP」下,複製宣告取用者服務 () ACS。URL

  6. 使用您剛剛複製的來設定您的身分識別提供者。ACS URL術語和步驟因提供者而異。請咨詢供應商文件。

    例如,在 Okta 中,您建立了「SAML2.0 Web 應用程式」,並指定ACSURL為「單一登入」URL、「收件者 URL」和「目URL的地」。對於 Auth0,您可以在允許的回呼URLs中指定它。

  7. 如果 IdP 有此值的欄位,請提供對象限制。受眾限制是SAML斷言中的一個值,用於指定斷言的目的。對於 OpenSearch 無伺服器,請指定aws:opensearch:<aws account id>。例如:aws:opensearch:123456789012

    對象限制欄位的名稱因提供者而異。對於奧克塔,它是受眾URI(SP 實體 ID)。IAM身分識別中心是應用程式SAML受眾

  8. 如果您使用的是IAM身分識別中心,您還需要指定下列屬性對應:Subject=${user:name}, 格式為unspecified.

  9. 設定身分提供者之後,它會產生 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>
  10. 將 [自訂使用者 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>
  11. (選用) 在 Group attribute (群組屬性) 欄位中指定自訂屬性,例如 rolegroup。僅支援單一群組屬性。沒有預設的群組屬性。如果未指定群組屬性,資料存取政策只能包含使用者主體。

    下面的例子顯示了SAML斷言中的 group 屬性:

    <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>
  12. 依預設, OpenSearch 儀表板會在 24 小時後將使用者登出。您可以透過指定OpenSearch 儀表板逾時,將此值設定為 1 到 12 小時 (15 到 720 分鐘) 之間的任何數字。如果您嘗試將逾時設定為等於或小於 15 分鐘,您的工作階段將重設為一小時。

  13. 選擇建立SAML提供者

存取 OpenSearch 儀表板

設定提供者之後,與該SAML提供者關聯的所有使用者和群組都可以導覽至 OpenSearch 儀表板端點。儀表板URL具有所有集合的格式collection-endpoint/_dashboards/

如果您已SAML啟用,請選取 AWS Management Console 將您導向至 IdP 選擇頁面,您可以在其中使用您的SAML認證登入。首先,使用下拉式清單選取身分提供者:

OpenSearch login page with dropdown menu for selecting SAML Identity Provider options.

然後使用 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

將包括saml-options中繼資料XML在內的 .json 檔案中指定為索引鍵值對映。中繼資料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 無伺服器主控台更新SAML提供者,請選擇SAML驗證,選取您的身分識別提供者,然後選擇編輯。您可以修改所有欄位,包括中繼資料和自訂屬性。

若要透過 OpenSearch 無伺服器更新提供者API,請傳送UpdateSecurityConfig要求並包含要更新之原則的識別碼。您還必須包含組態版本,您可以使用 ListSecurityConfigsGetSecurityConfig 命令擷取該版本。將最新的版本納入其中,可確保您不會意外覆寫其他人所做的變更。

下列要求會更新提供者的SAML選項:

aws opensearchserverless update-security-config \ --id saml/123456789012/myprovider \ --type saml \ --saml-options file://saml-auth0.json \ --config-version MTY2NDA1MjY4NDQ5M18x

將您的SAML組態選項指定為 .json 檔案中的索引鍵值對映。

重要

對SAML選項的更新是增量的。如果您在進行更新時未指定 SAMLOptions 物件中的參數值,則會以空白值覆寫現有值。例如,如果目前的組態包含 userAttribute 的值,然後您進行更新但不包含此值,則系統會將該值從組態中移除。透過呼叫 GetSecurityConfig 操作進行更新之前,請確保您知道現有值為何。

刪除SAML提供者

當您刪除SAML提供者時,對資料存取原則中關聯使用者和群組的任何參考將不再起作用。為避免混淆,建議您先移除存取政策中對端點的所有參考,然後再刪除該端點。

若要使用 OpenSearch 無伺服器主控台刪除SAML提供者,請選擇 [驗證],選取提供者,然後選擇 [刪除]。

若要透過 OpenSearch 無伺服器刪除提供者API,請傳送要DeleteSecurityConfig求:

aws opensearchserverless delete-security-config --id saml/123456789012/myprovider