翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon OpenSearch Serverless での SAML 認証
Amazon OpenSearch Serverless で SAML 認証を使用すると、Serverless コレクションの OpenSearch Dashboards エンドポイントに対し、既存の ID プロバイダーによるシングルサインオン (SSO) を提供できます。
SAML 認証により、ユーザーはサードパーティの ID プロバイダーを使用して OpenSearch Dashboards にサインインし、データのインデックス化と検索を行えます。OpenSearch Serverless では、IAM Identity Center、Okta、Keycloak、Active Directory Federation Services (AD FS)、Auth0 など、SAML 2.0 標準を使用するプロバイダーをサポートしています。Okta、OneLogin 、Microsoft Entra ID などの他の ID ソースからのユーザーとグループを同期するように IAM Identity Center を設定できます。IAM Identity Center でサポートされている ID ソースのリストと設定手順については、「IAM Identity Center ユーザーガイド」の「Getting started tutorials」を参照してください。
注記
SAML 認証は、ウェブブラウザから OpenSearch Dashboards にアクセスする場合のみに使用します。この認証を受けたユーザーは、OpenSearch Dashboards の [Dev Tools] (開発ツール) を通じてのみ、OpenSearch API オペレーションにリクエストを行うことができます。ユーザーが、SAML 認証情報により、OpenSearch API オペレーションに直接 HTTP リクエストを発行することはできません。
SAML 認証の使用を開始するには、まず SAML の ID プロバイダー (IdP) を設定します。次に、その IdP から 1 人以上のユーザーを、データアクセスポリシーに含めます。このポリシーにより、コレクションやインデックスに対する特定のアクセス許可が付与されす。その後、ユーザーは、OpenSearch Dashboards にサインインして、データアクセスポリシーで許可されているアクションを実行できます。
トピック
考慮事項
SAML 認証を設定する際には、以下を考慮します。
-
署名済みおよび暗号化されたリクエストはサポートされていません。
-
暗号化されたアサーションはサポートされていません。
-
認証とサインアウトを IdP が開始することはサポートされていません。
-
サービスコントロールポリシー (SCP) は、IAM 以外の ID (Amazon OpenSearch Serverless の SAML と SAML、Amazon OpenSearch Service の基本的な内部ユーザー許可など) の場合に適用または評価されません。
必要なアクセス許可
OpenSearch Serverless の SAML 認証では、以下の AWS Identity and Access Management (IAM) の許可を使用します。
-
aoss:CreateSecurityConfig
– SAML プロバイダーを作成します。 -
aoss:ListSecurityConfig
– 現在のアカウントのすべての SAM Lプロバイダーを一覧表示します。 -
aoss:GetSecurityConfig
– SAML プロバイダーの情報を表示します。 -
aoss:UpdateSecurityConfig
– 特定の SAML プロバイダーの (XML メタデータを含む) 設定を変更します。 -
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 プロバイダーを作成する方法について説明します。この手順により、SAML 認証がサービスプロバイダー (SP) を使用して、OpenSearch Dashboards に対する認証を開始できるようになります。認証を IdP が開始することはサポートされていません。
OpenSearch Dashboards の SAML 認証を有効にするには
-
Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/home
) にサインインします。 -
左側のナビゲーションパネルで [Serverless] (サーバーレス) を展開し、[SAML authentication] (SAML 認証) を選択します。
-
[Add SAML provider] (SAML プロバイダーを追加) を選択します。
-
プロバイダーの名前と説明を入力します。
注記
ここで指定した名前はパブリックにアクセス可能で、OpenSearch Dashboards にサインインしたユーザーは、ドロップダウンメニューに表示することができます。名前は認識しやすく、また、ID プロバイダーに関する機密情報が明らかにならないものにしてください。
-
[Configure your IdP] (IDP の設定) で、アサーションコンシューマーサービス (ACS) のURL をコピーします。
-
ここでコピーした ACS URL は、ID プロバイダーを設定するために使用します。用語と手順はプロバイダーによって異なります。プロバイダーのドキュメントを参照してください。
例えば、Okta では「SAML 2.0 ウェブアプリケーション」を作成し、ACS URL を、[Single Sign On URL] (シングルサインオン URL)、[Recipient URL] (受信者 URL)、[Destination URL] (送信先 URL) として指定します。Auth0 の場合は、この情報を [Allowed Callback URLs] (許可するコールバック URL) の中で指定します。
-
IdP にオーディエンス制限用のフィールドがある場合は、オーディエンス制限を設定します。オーディエンス制限は SAML アサーション内の値であり、これによりアサーションの対象者を指定します。OpenSearch Serverless の場合は、
aws:opensearch:<aws account id>
を指定します。例えば、aws:opensearch:
と指定します。123456789012
オーディエンス制限フィールドの名前は、プロバイダーによって異なります。Okta の場合は、[Audience URI (SP Entity ID)] (オーディエンス URI (SP エンティティ ID)) です。IAM ID センターでは、[Application SAML audience] (アプリケーション SAML オーディエンス) になります。
-
IAM ID センターを使用している場合は、属性マッピング (
unspecified
の形式を使用するSubject=${user:name}
) も指定する必要があります。 -
ID プロバイダーを設定すると、IdP メタデータファイルが生成されます。この XML ファイルには、TLS 証明書、Single Sign-On エンドポイント、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> -
ユーザーネームに対する SAML アサーションの
NameID
要素を使用するために、[Custom user ID attribute] (カスタムユーザー 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> -
(オプション) [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> -
OpenSearch Dashboards のデフォルトでは、 24 時間を経過したユーザーはログアウトされます。[OpenSearch Dashboards のタイムアウト] を指定することで、この値を 1~12 時間 (15~720 分) の任意の数値に設定することができます。タイムアウトを 15 分以下に設定しようとすると、セッションは 1 時間にリセットされます。
-
[Create SAML provider] (SAML プロバイダーを作成) を選択します。
OpenSearch Dashboards へのアクセス
SAML プロバイダーを設定すると、そのプロバイダーに関連付けられたすべてのユーザーとグループは、OpenSearch Dashboards エンドポイントを使用できるようになります。Dashboards URL は、すべてのコレクションで
の形式になっています。collection-endpoint
/_dashboards/
SAML を有効にしている場合は、AWS Management Console 内のリンクをクリックすると IdP の選択ページに移動し、そこで SAML 認証情報を使ってサインインできます。まず、ドロップダウンから ID プロバイダーを選択します。
次に、自分の IdP 認証情報を使用してサインインします。
SAML を有効にしていない場合は、AWS Management Console 内のリンクをクリックすると、IAM ユーザーまたはロールとしてログインするように指示されます。SAML のオプションはありません。
SAML ID に対するコレクションデータへのアクセス権の付与
SAML プロバイダーを作成した後も、基盤となるユーザーとグループに対して、コレクション内のデータへのアクセス権を付与する必要があります。アクセス権は、データアクセスポリシーを介して付与します。アクセスが付与されるまで、ユーザーはコレクション内のデータの読み取り、書き込み、削除を行うことはできません。
アクセスを許可するには、データアクセスポリシーを作成し、Principal
ステートメントの中で、SAML ユーザーおよび/またはグループ ID を指定します。
[ { "Rules":[ ... ], "Principal":[ "saml/
987654321098
/myprovider
/user/Shaheen
", "saml/987654321098
/myprovider
/group/finance
" ] } ]
アクセス権は、コレクション、インデックス、またはその両方に付与できます。ユーザーごとに異なる権限を持たせたい場合は、複数のルールを作成します。使用可能な許可のリストについては、「Supported policy permissions」(サポートされるポリシーの許可) を参照してください。アクセスポリシーの形式の詳細については、「Policy syntax」(ポリシーの構文) を参照してください。
SAML プロバイダの作成 (AWS CLI)
OpenSearch Serverless API を使用して SAML プロバイダーを作成するには、CreateSecurityConfig リクエストを送信します。
aws opensearchserverless create-security-config \ --name
myprovider
\ --type saml \ --saml-options file://saml-auth0
.json
.json ファイル内のキーと値のマップとして (メタデータ XML を含めながら) saml-options
を指定します。メタデータ 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 プロバイダーに関する (ID プロバイダーが生成する完全な 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 authentication] (SAML 認証) を選択し、ID プロバイダーを選択した後に、[Edit] (編集) を選択します。メタデータやカスタム属性を含め、すべてのフィールドを変更可能です。
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 Serverless コンソールを使用して SAML プロバイダーを削除するには、[Authentication] (認証) を選択し、プロバイダーを選択した後に、[Delete] (削除) を選択します。
OpenSearch サーバーServerless API を使用してプロバイダーを削除するには、DeleteSecurityConfig リクエストを送信します。
aws opensearchserverless delete-security-config --id saml/
123456789012
/myprovider