ユーザーの作成または更新 API

ネイティブ領域にユーザーを追加および更新します。これらのユーザーは一般的に ネイティブユーザー と呼ばれます。

リクエスト

POST /_security/user/<username>

PUT /_security/user/<username>

前提条件

  • この API を使用するには、少なくとも manage_security クラスター権限が必要です。

説明

新しいユーザーを追加するには password が必要ですが、既存のユーザーを更新する際にはオプションです。ユーザーのパスワードを他のフィールドを更新せずに変更するには、パスワード変更 API を使用してください。

ネイティブ領域に関する詳細は、領域 および ネイティブユーザー認証 を参照してください。

パスパラメータ

  • username
  • (必須、文字列) ユーザーの識別子。

    ユーザー名は1文字以上、507文字以下でなければなりません。英数字 (a-z, A-Z, 0-9)、スペース、句読点、および 基本ラテン (ASCII) ブロック の印刷可能な記号を含むことができます。先頭または末尾の空白は許可されていません。

クエリパラメータ

  • refresh
  • (文字列) truefalse、または wait_for のいずれか。これらの値は インデックス API と同じ意味を持ちますが、この API (ユーザーの更新) のデフォルト値は true です。

リクエストボディ

POST または PUT リクエストのボディに指定できるパラメータは次のとおりです:

  • enabled
  • (ブール値) ユーザーが有効かどうかを指定します。デフォルト値は true です。
  • email
  • (文字列) ユーザーのメールアドレス。
  • full_name
  • (文字列) ユーザーのフルネーム。
  • metadata
  • (オブジェクト) ユーザーに関連付けたい任意のメタデータ。
  • password
  • (必須*、文字列) ユーザーのパスワード。パスワードは6文字以上でなければなりません。
    ユーザーを追加する際には password または password_hash のいずれかが必要です。既存のユーザーを更新する際には、パスワードはオプションであり、ユーザーの他のフィールド(役割など)を更新する際にパスワードを変更せずに済みます。
  • password_hash
  • (文字列) ユーザーのパスワードのハッシュ。このハッシュは、パスワードストレージのために設定されたのと同じハッシュアルゴリズムを使用して生成する必要があります。詳細については、ユーザーキャッシュとパスワードハッシュアルゴリズムxpack.security.authc.password_hashing.algorithm 設定の説明を参照してください。
    このパラメータを使用すると、クライアントはパフォーマンスおよび/または機密性の理由からパスワードを事前にハッシュ化できます。
    password パラメータと password_hash パラメータは同じリクエストで使用できません。
  • roles
  • (必須、リスト) ユーザーが持つ役割のセット。役割はユーザーのアクセス権を決定します。役割なしでユーザーを作成するには、空のリストを指定します: [].

*この設定は、すべての状況ではなく、一部の状況で必要であることを示します。

次の例は、ユーザー jacknich を作成します:

Python

  1. resp = client.security.put_user(
  2. username="jacknich",
  3. password="l0ng-r4nd0m-p@ssw0rd",
  4. roles=[
  5. "admin",
  6. "other_role1"
  7. ],
  8. full_name="Jack Nicholson",
  9. email="[email protected]",
  10. metadata={
  11. "intelligence": 7
  12. },
  13. )
  14. print(resp)

Js

  1. const response = await client.security.putUser({
  2. username: "jacknich",
  3. password: "l0ng-r4nd0m-p@ssw0rd",
  4. roles: ["admin", "other_role1"],
  5. full_name: "Jack Nicholson",
  6. email: "[email protected]",
  7. metadata: {
  8. intelligence: 7,
  9. },
  10. });
  11. console.log(response);

コンソール

  1. POST /_security/user/jacknich
  2. {
  3. "password" : "l0ng-r4nd0m-p@ssw0rd",
  4. "roles" : [ "admin", "other_role1" ],
  5. "full_name" : "Jack Nicholson",
  6. "email" : "[email protected]",
  7. "metadata" : {
  8. "intelligence" : 7
  9. }
  10. }

成功した呼び出しは、ユーザーが作成または更新されたかどうかを示す JSON 構造を返します。

コンソール-結果

  1. {
  2. "created": true
  3. }
既存のユーザーが更新されると、created は false に設定されます。

ユーザーを追加した後、そのユーザーからのリクエストは認証可能になります。例えば:

シェル

  1. curl -u jacknich:l0ng-r4nd0m-p@ssw0rd http://localhost:9200/_cluster/health