トークンベースの認証サービス
Elastic Stackのセキュリティ機能は、レルムと1つ以上のトークンベースの認証サービスを使用してユーザーを認証します。トークンベースの認証サービスは、トークンの認証と管理に使用されます。これらのトークンをElasticsearchに送信されるリクエストに添付し、資格情報として使用できます。Elasticsearchが認証が必要なリクエストを受信すると、最初にトークンベースの認証サービスを参照し、その後にレルムチェーンを参照します。
セキュリティ機能は、以下の組み込みトークンベースの認証サービスを提供しており、参照される順序でリストされています:
- service-accounts
- サービスアカウントは、サービスアカウントトークン作成APIまたはelasticsearch-service-tokens CLIツールを使用してサービスアカウントトークンを生成します。
サービスアカウントトークンを使用するには、生成されたトークン値をリクエストにAuthorization: Bearer
ヘッダーとして含めます:
シェル
curl -H "Authorization: Bearer AAEAAWVsYXN0aWMvZ...mXQtc2VydmMTpyNXdkYmRib1FTZTl2R09Ld2FKR0F3" http://localhost:9200/_cluster/health
個々のユーザーを認証するためにサービスアカウントを使用しないでください。サービスアカウントは、通常のユーザーには適用されないサービストークンでのみ認証できます。
- token-service
- トークンサービスは、トークン取得APIを使用して、OAuth2仕様に基づいてアクセストークンとリフレッシュトークンを生成します。アクセストークンは短命のトークンです。デフォルトでは、20分後に期限切れになりますが、最大1時間まで持続するように設定できます。リフレッシュトークンを使用してリフレッシュできます。リフレッシュトークンの有効期限は24時間です。アクセストークンはベアラートークンです。
Authorization
ヘッダーを持つリクエストを送信することで使用できます。値は「Bearer 」というプレフィックスの後にアクセストークンの値が続きます。例えば:
シェル
curl -H "Authorization: Bearer dGhpcyBpcyBub3Qx5...F0YS4gZG8gbm90IHRyeSB0byByZWFkIHRva2VuIQ==" http://localhost:9200/_cluster/health
- api-key-service
- APIキーサービスは、APIキー作成APIを使用してAPIキーを生成します。デフォルトでは、APIキーは期限切れになりません。APIキーを作成するリクエストを行うときに、APIキーの有効期限と権限を指定できます。権限は、認証されたユーザーの権限によって制限されます。APIキーは、
Authorization
ヘッダーを持つリクエストを送信することで使用できます。値は「ApiKey 」というプレフィックスの後に資格情報が続きます。資格情報は、APIキーIDとAPIキーをコロンで結合したもののbase64エンコーディングです。例えば:
シェル
curl -H "Authorization: ApiKey VnVhQ2ZHY0JDZGJrU...W0tZTVhT3g6dWkybHAyYXhUTm1zeWFrd0dk5udw==" http://localhost:9200/_cluster/health
使用ケースに応じて、これらのサービスによって生成されるトークンの有効期限を決定することを検討するかもしれません。これにより、トークンを生成および管理するためにどのサービスを使用するかを決定できます。期限切れのないAPIキーは簡単な選択肢のように見えるかもしれませんが、期限切れのないキーに伴うセキュリティの影響を考慮する必要があります。token-serviceとapi-key-serviceの両方は、トークンを無効にすることを許可します。トークン無効化APIおよびAPIキー無効化APIを参照してください。
JWTベアラートークンの認証サポートは、Elasticsearch 8.2でJWT認証を通じて導入され、トークン認証サービスを通じて有効にすることはできません。レルムは、ゼロ、1、または複数のJWTレルムの柔軟な順序と構成を提供します。