View a markdown version of this page

Amazon OpenSearch Service nの JWT 認証と承認 - Amazon OpenSearch Service

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

Amazon OpenSearch Service nの JWT 認証と承認

Amazon OpenSearch Service では、認証と承認に JSON Web トークン (JWT) を使用できるようになりました。JWT は、シングルサインオン (SSO) アクセスを付与するために使用される JSON ベースのアクセストークンです。OpenSearch Service の JWT を使用してシングルサインオントークンを作成し、OpenSearch Service ドメインへのリクエストを検証できます。JWT を使用するには、きめ細かなアクセスコントロールを有効にし、有効な RSA または ECDSA PEM 形式のパブリックキーを指定する必要があります。きめ細かなアクセスコントロールの詳細については、「Fine-grained access control in Amazon OpenSearch Service」を参照してください。

OpenSearch Service コンソール、 AWS Command Line Interface (AWS CLI)、または AWS SDKs を使用して、JSON ウェブトークンを設定できます。

考慮事項

Amazon OpenSearch Service で JWT を使用する前に、以下を考慮する必要があります。

  • PEM 形式の RSA パブリックキーのサイズが大きいため、 AWS コンソールを使用して JWT 認証と承認を設定することをお勧めします。

  • JWT のサブジェクトとロールフィールドを指定するときは、有効なユーザーとロールを指定する必要があります。指定しないと、リクエストは拒否されます。

  • OpenSearch 2.11 は、JWT 認証に使用できる最も古い互換性のあるバージョンです。

ドメインアクセスポリシーの変更

ドメインを設定して JWT 認証と認可を使用する前に、ドメインアクセスポリシーを更新して JWT ユーザーがドメインにアクセスできるようにする必要があります。更新しないと、受信する JWT 認証リクエストはすべて拒否されます。サブリソース (/*) へのフルアクセスを提供するために推奨されるドメインアクセスポリシーは次のとおりです。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:ESHttp*", "Resource": "arn:aws:es:us-east-1:111122223333:domain/domain-name/*" } ] }

JWT 認証と認可の設定

ドメイン作成プロセス中、または既存のドメインを更新することで、JWT 認証と承認を有効にすることができます。セットアップ手順は、選択するオプションに応じて若干異なります。

次の手順では、OpenSearch Service コンソールで JWT 認証と承認用に既存のドメインを設定する方法について説明します。

  1. [ドメイン設定] で、[OpenSearch の JWT 認証と承認] に移動し、[JWT 認証と承認を有効にする] を選択します。

  2. ドメインに使用するパブリックキーを設定します。これを行うには、パブリックキーを含む PEM ファイルをアップロードするか、手動で入力します。

    注記

    アップロードまたは入力されたキーが有効でない場合、問題を指定する警告がテキストボックスの上に表示されます。

  3. (オプション) [その他の設定] で、次のオプションフィールドを設定します。

    • サブジェクトキー — このフィールドを空のままにして JWT のデフォルト sub キーを使用できます。

    • ロールキー — このフィールドを空のままにして、JWT のデフォルト roles キーを使用できます。

    変更を行ったら、ドメインを保存します。

JWKS エンドポイントを使用して JWT を検証する

静的パブリックキーを設定する代わりに、ID プロバイダーからパブリックキーを動的に取得するように JSON Web Key Set (JWKS) エンドポイント URL を設定できます。JWKS エンドポイントを設定すると、OpenSearch Service は JWT 署名の検証に使用されるパブリックキーを自動的にフェッチしてキャッシュするため、ID プロバイダーが署名キーをローテーションするときにキーを手動で更新する必要がなくなります。

JWKS エンドポイント設定にはOpenSearch バージョン 3.3 以降が必要です。

注記

JWKS URL と静的パブリックキーの両方が設定されている場合、JWKS URL が優先され、静的パブリックキーは無視されます。

下位互換性

この機能は、完全な下位互換性を維持します。

  • が指定されJwksUrlていない場合、または null に設定されている場合、システムは既存の静的パブリックキーメカニズムを使用します。

  • 既存の JWT 設定は変更することなく引き続き機能します。

  • ドメイン設定を更新することで、静的キーと JWKS を切り替えることができます。

JWKS エンドポイントの設定

OpenSearch Service コンソール、、または設定 API を使用して AWS CLI、JWKS エンドポイントを設定できます。

JWKS エンドポイントを設定するには
  1. ドメイン設定で、OpenSearch の JWT 認証と認可に移動します。

  2. JWT 認証と認可を有効にするを選択します。

  3. キーソースで、JWKS URL を選択します。

  4. ID プロバイダーから提供された JWKS エンドポイント URL を入力します (例: https://example.com/.well-known/jwks.json)。

  5. (オプション) 追加設定サブジェクトキーロールキーフィールドを設定します。

  6. [Save changes] (変更の保存) をクリックします。

次の AWS CLI コマンドは、既存のドメインで JWT 認証用の JWKS エンドポイントを設定します。

aws opensearch update-domain-config \ --domain-name my-domain \ --advanced-security-options '{"JWTOptions":{"Enabled":true, "JwksUrl":"https://example.com/.well-known/jwks.json", "SubjectKey":"sub", "RolesKey":"roles"}}'

設定 API への次のリクエストは、既存のドメインで JWT 認証用の JWKS エンドポイントを設定します。

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config { "AdvancedSecurityOptions": { "JWTOptions": { "Enabled": true, "JwksUrl": "https://example.com/.well-known/jwks.json", "RolesKey": "optional-roles-key", "SubjectKey": "optional-subject-key" } } }

JWT ヘッダーの要件

JWKS エンドポイントを使用する場合、JWT ヘッダーには、検証に使用する特定のキーを識別するキー ID (kid) を含める必要があります。

{ "alg": "RS256", "typ": "JWT", "kid": "V-diposfUJIk5jDBFi_QRouiVinG5PowskcSWy5EuCo" }

kid 値は、JWKS エンドポイントレスポンスのキー識別子と一致する必要があります。

JWKS 設定オプションとセキュリティ設定の詳細については、OpenSearch ドキュメントの「JWKS エンドポイントを使用して JWT を検証する」を参照してください。

JWT を使用してテストリクエストを送信する

指定されたサブジェクトとロールのペアを使用して新しい JWT を作成したら、テストリクエストを送信できます。これを行うには、プライベートキーを使用して、JWT を作成したツールを使用してリクエストに署名します。OpenSearch Service は、この署名を検証することで、受信リクエストを検証できます。

注記

JWT にカスタムサブジェクトキーまたはロールキーを指定した場合は、JWT に正しいクレーム名を使用する必要があります。

以下は、JWT トークンを使用してドメインの検索エンドポイントから OpenSearch Service にアクセスする方法の例です。

curl -XGET "$search_endpoint" -H "Authorization: Bearer <JWT>"

次の AWS CLI コマンドは、ドメインが存在する場合、OpenSearch の JWT 認証と認可を有効にします。

aws opensearch update-domain-config --domain-name <your_domain_name> --advanced-security-options '{"JWTOptions":{"Enabled":true, "PublicKey": "<your_public_key>", "SubjectKey": "<your_subject_key>", "RolesKey": "<your_roles_key>"}}'

JWT 認証と承認の設定 (API を介した設定)

設定 API への次のリクエストにより、既存のドメイン上の OpenSearch の JWT 認証と承認を有効にします。

POST https://es.us-east-1.amazonaws.com/2021-01-01/opensearch/domain/my-domain/config { "AdvancedSecurityOptions": { "JWTOptions": { "Enabled": true, "PublicKey": "public-key", "RolesKey": "optional-roles-key", "SubjectKey": "optional-subject-key" } } }
キーペアの生成

OpenSearch ドメインの JWT を設定するには、プライバシー強化メール (PEM) 形式でパブリックキーを指定する必要があります。Amazon OpenSearch Service は現在 JWT を使用する際に、RSA と ECDSA の 2 つの非対称暗号化アルゴリズムをサポートしています。

共通 OpenSSL ライブラリを使用して RSA キーペアを作成するには、次の手順に従います。

  1. openssl genrsa -out privatekey.pem 2048

  2. openssl rsa -in privatekey.pem -pubout -out publickey.pem

この例では、publickey.pem ファイルには Amazon OpenSearch Service で使用するパブリックキーが含まれ、privatekey.pem にはサービスに送信された JWT に署名するためのプライベートキーが含まれます。さらに、JWT を生成するためにプライベートキーが必要な場合は、プライベートキーを一般的に使用される pkcs8 形式に変換することもできます。

アップロードボタンを使用して PEM ファイルをコンソールに直接追加する場合、ファイルの拡張子は .pem である必要があります。.crt.cert、または .key などの他のファイル拡張子は現在サポートされていません。