SAML Amazon OpenSearch Serverless の認証 - Amazon OpenSearch サービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SAML Amazon OpenSearch Serverless の認証

Amazon OpenSearch Serverless のSAML認証を使用すると、既存の ID プロバイダーを使用して、サーバーレスコレクションの OpenSearch Dashboards エンドポイントにシングルサインオン (SSO) を提供できます。

SAML 認証では、サードパーティーの ID プロバイダーを使用して OpenSearch Dashboards にサインインし、データのインデックス作成と検索を行うことができます。 OpenSearch Serverless SAML は、IAMIdentity Center、Okta、Keycloak、Active Directory フェデレーションサービス (AD FS)、Auth0 などの 2.0 標準を使用するプロバイダーをサポートします。IAM Identity Center を設定して、Okta や Microsoft Entra ID などの他の ID ソースのユーザー OneLoginとグループを同期させることができます。Identity Center でサポートされている ID ソースのリストと設定手順については、IAM「 Identity IAM Center ユーザーガイド」の「入門チュートリアル」を参照してください。

注記

SAML 認証は、ウェブブラウザから OpenSearch Dashboards にアクセスするためだけのものです。認証されたユーザーは、 OpenSearch Dashboards の開発ツールを介してのみオペレーションへのリクエスト OpenSearch APIを行うことができます。SAML 認証情報では、 OpenSearch APIオペレーションに直接HTTPリクエストすることはできません。

SAML 認証を設定するには、まず SAML ID プロバイダー (IdP) を設定します。次に、その IdP から 1 人以上のユーザーを、データアクセスポリシーに含めます。このポリシーにより、コレクションやインデックスに対する特定のアクセス許可が付与されす。その後、ユーザーは OpenSearch Dashboards にサインインし、データアクセスポリシーで許可されているアクションを実行できます。

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

考慮事項

SAML 認証を設定するときは、次の点を考慮してください。

  • 署名済みおよび暗号化されたリクエストはサポートされていません。

  • 暗号化されたアサーションはサポートされていません。

  • 認証とサインアウトを IdP が開始することはサポートされていません。

  • サービスコントロールポリシー (SCP) は、ID IAM以外の場合 (Amazon OpenSearch Serverless & SAMLや Amazon OpenSearch Service SAMLの基本的な内部ユーザー認証など) は適用または評価されません。

必要なアクセス許可

SAML OpenSearch Serverless の 認証では、以下を使用します。 AWS Identity and Access Management (IAM) アクセス許可:

  • aoss:CreateSecurityConfig – SAMLプロバイダーを作成します。

  • aoss:ListSecurityConfig – 現在のアカウントのすべてのSAMLプロバイダーを一覧表示します。

  • aoss:GetSecurityConfig – SAMLプロバイダー情報を表示します。

  • aoss:UpdateSecurityConfig – XMLメタデータを含む特定のSAMLプロバイダー設定を変更します。

  • aoss:DeleteSecurityConfig – SAMLプロバイダーを削除します。

次の ID ベースのアクセスポリシーでは、すべての IdP 設定を管理することを、ユーザーに対し許可します。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:CreateSecurityConfig", "aoss:DeleteSecurityConfig", "aoss:GetSecurityConfig", "aoss:UpdateSecurityConfig", "aoss:ListSecurityConfigs" ], "Effect": "Allow", "Resource": "*" } ] }

Resource 要素はワイルドカードにする必要がある点に、注意してください。

SAML プロバイダーの作成 (コンソール)

以下の手順では、SAMLプロバイダーを作成する方法について説明します。これにより、 OpenSearch Dashboards SAMLのサービスプロバイダー (SP) 主導認証による認証が可能になります。認証を IdP が開始することはサポートされていません。

OpenSearch Dashboards のSAML認証を有効にするには
  1. ホーム で Amazon OpenSearch Service コンソールにサインインします。 https://console.aws.amazon.com/aos/

  2. 左側のナビゲーションパネルで、サーバーレス を展開し、SAML認証 を選択します。

  3. SAML プロバイダーの追加 を選択します。

  4. プロバイダーの名前と説明を入力します。

    注記

    指定した名前はパブリックにアクセス可能で、ユーザーが OpenSearch Dashboards にサインインするとドロップダウンメニューに表示されます。名前は認識しやすく、また、ID プロバイダーに関する機密情報が明らかにならないものにしてください。

  5. IdP を設定する で、アサーションコンシューマーサービス (ACS) をコピーしますURL。

  6. コピーACSURLした を使用して ID プロバイダーを設定します。用語と手順はプロバイダーによって異なります。プロバイダーのドキュメントを参照してください。

    たとえば、Okta では、SAML「2.0 ウェブアプリケーション」を作成し、 を Single Sign On URL受信者 URL、送信先 URLACSURLとして指定します。Auth0 の場合は、許可されたコールバック で指定しますURLs

  7. IdP にオーディエンス制限用のフィールドがある場合は、オーディエンス制限を設定します。対象者の制限は、SAMLアサーションの対象者を指定するアサーション内の値です。 OpenSearch Serverless には、 を指定しますaws:opensearch:<aws account id>。例えば、aws:opensearch:123456789012 と指定します。

    オーディエンス制限フィールドの名前は、プロバイダーによって異なります。Okta の場合、対象者 URI (SP エンティティ ID) です。IAM Identity Center の場合、アプリケーションSAMLオーディエンスは です。

  8. IAM Identity Center を使用している場合は、次の属性マッピング も指定する必要があります: Subject=${user:name}。形式は ですunspecified

  9. ID プロバイダーを設定すると、IdP メタデータファイルが生成されます。このXMLファイルには、TLS証明書、シングルサインオンエンドポイント、ID プロバイダーのエンティティ 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. ユーザー名のSAMLアサーションの NameID要素を使用するには、カスタムユーザー ID 属性フィールドを空のままにします。アサーションでこの標準エレメントを使用せず、代わりにユーザーネームをカスタム属性として含める場合は、ここでその属性を指定します。属性では、大文字と小文字が区別されます。シングルユーザー属性のみがサポートされています。

    次の例は、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] (グループ属性) フィールドで、カスタム属性 (role または groupなど) を指定します。グループ属性は、 1 つだけがサポートされます。グループ属性には、デフォルト値はありません。これを指定しない場合、データアクセスポリシーにはユーザープリンシパルのみが含まれます。

    次の例は、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>
  12. デフォルトでは、 OpenSearch Dashboards は 24 時間後にユーザーをサインアウトします。OpenSearch Dashboards タイムアウト を指定することで、この値を 1~12 時間 (15~720 分) の任意の数値に設定できます。タイムアウトを 15 分以下に設定しようとすると、セッションは 1 時間にリセットされます。

  13. SAML プロバイダーの作成 を選択します。

OpenSearch ダッシュボードへのアクセス

SAML プロバイダーを設定すると、そのプロバイダーに関連付けられているすべてのユーザーとグループが OpenSearch Dashboards エンドポイントに移動できます。Dashboards URLには、すべてのコレクション collection-endpoint/_dashboards/の形式があります。

SAML を有効にしている場合は、 でリンクを選択します。 AWS Management Console は IdP 選択ページに移動します。このページでは、SAML認証情報を使用してサインインできます。まず、ドロップダウンから ID プロバイダーを選択します。

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

次に、自分の IdP 認証情報を使用してサインインします。

SAML を有効にしていない場合は、 でリンクを選択します。 AWS Management Console は、 のオプションなしで、IAMユーザーまたはロールとしてログインするように指示しますSAML。

ID SAML にコレクションデータへのアクセスを許可する

SAML プロバイダーを作成した後も、基になるユーザーとグループにコレクション内のデータへのアクセスを許可する必要があります。アクセス権は、データアクセスポリシーを介して付与します。アクセスが付与されるまで、ユーザーはコレクション内のデータの読み取り、書き込み、削除を行うことはできません。

アクセスを許可するには、データアクセスポリシーを作成し、 PrincipalステートメントIDsでSAMLユーザーまたはグループを指定します。

[ { "Rules":[ ... ], "Principal":[ "saml/987654321098/myprovider/user/Shaheen", "saml/987654321098/myprovider/group/finance" ] } ]

アクセス権は、コレクション、インデックス、またはその両方に付与できます。ユーザーごとに異なる権限を持たせたい場合は、複数のルールを作成します。使用可能な許可のリストについては、「Supported policy permissions」(サポートされるポリシーの許可) を参照してください。アクセスポリシーの形式の詳細については、「Policy syntax」(ポリシーの構文) を参照してください。

SAML プロバイダーの作成 (AWS CLI)

OpenSearch Serverless を使用してSAMLプロバイダーを作成するにはAPI、 CreateSecurityConfigリクエストを送信します。

aws opensearchserverless create-security-config \ --name myprovider \ --type saml \ --saml-options file://saml-auth0.json

メタデータ saml-optionsを含む をXML、.json ファイル内のキーと値のマップとして指定します。メタデータはエスJSONケープ文字列 としてエンコードXMLする必要があります。

{ "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

リクエストは、ID 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認証 を選択し、ID プロバイダーを選択し、編集 を選択します。メタデータやカスタム属性を含め、すべてのフィールドを変更可能です。

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-version MTY2NDA1MjY4NDQ5M18x

.json ファイル内のキーと値のマップとしてSAML設定オプションを指定します。

重要

SAML オプションの更新は増分 ではありません。更新時に、SAMLOptions オブジェクト内でパラメータの値を指定しない場合、既存の値は空の値で上書きされます。例えば、現在の構成で userAttribute に値が指定されていて、この値を含めずに更新を行った場合、その値は構成から削除されます。GetSecurityConfig オペレーション呼び出しにより更新を実行する前に、既存の値が何であるかを確認してください。

SAML プロバイダーの削除

SAML プロバイダーを削除すると、データアクセスポリシー内の関連付けられたユーザーやグループへの参照は機能しなくなります。混乱を避けるため、エンドポイントを削除する前に、アクセスポリシー内で (指定している) エンドポイントへの参照を、すべて削除することをお勧めします。

OpenSearch Serverless コンソールを使用してSAMLプロバイダーを削除するには、認証 を選択し、プロバイダーを選択し、削除 を選択します。

OpenSearch Serverless を介してプロバイダーを削除するにはAPI、 DeleteSecurityConfigリクエストを送信します。

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