すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:X-Pack ロールによるユーザー権限の管理

最終更新日:Sep 15, 2026

Elasticsearch X-Pack は、ロールに特定の権限を付与し、それらのロールをユーザーに割り当てる、ロールベースのアクセス制御 (RBAC) を提供します。Alibaba Cloud Elasticsearch にはいくつかの組み込みロールが含まれており、クラスター、インデックス、フィールドのよりきめ細かなコントロールのためにカスタムロールを作成できます。

背景

操作手順

説明

本手順は Elasticsearch V6.7 および V7.x に適用されます。他のバージョンでは手順が異なる場合があります。正確な手順については、コンソールをご参照ください。

  1. ロールを作成します。

    1. Kibana コンソールにログインします。

      詳細については、「Kibana コンソールへのログイン」をご参照ください。

    2. 管理ページに移動します。

      • V6.7:左側メニューで、管理 をクリックします。

      • V7.x:ページの左上隅にある 展开图标 アイコンをクリックし、管理 > [スタックの管理] を選択します。

    3. Security セクションで、役割 をクリックします。

    4. [ロールの作成] をクリックし、パラメーターを設定します。

      パラメーター

      説明

      [ロール名]

      ロールの名前です。

      クラスター権限

      クラスターのヘルス状態や設定の表示、スナップショットの作成など、クラスター操作の権限を定義します。詳細については、「クラスター権限」をご参照ください。

      Run As 権限

      任意。このロールを引き受けるユーザーです。ここで指定しない場合は、ユーザーの作成時にロールを割り当てることができます。詳細については、「ユーザーの作成」をご参照ください。

      インデックス権限

      インデックス操作の権限を定義します。たとえば、インデックス名を * に設定して、すべてのインデックスのすべてのフィールドへの read アクセスを許可することができます。インデックス名では、ワイルドカード () と正規表現がサポートされています。詳細については、「インデックス権限」をご参照ください。次のパラメーターを設定します:

      • インデックス:ロールを作成する際、ドロップダウンリストには既存のインデックスパターンのみが表示され、クラスター内のすべての物理インデックスが自動的に読み込まれるわけではありません。表示されていないインデックスに権限を付与するには、特定のインデックス名またはワイルドカード (*) を含むインデックス名を入力フィールドに手動で入力し、Enter キーを押して追加します。例: heartbeat-*。

        説明

        インデックスパターンがない場合は、管理 ページに移動し、Kibana の下にある [インデックスパターン] をクリックして、画面の指示に従って作成します。

      • 権限:ロールに割り当てる権限です。

      • 付与されるフィールド (任意):権限を付与するフィールドです。

      Kibana 権限

      Kibana 操作の権限を定義します。

      重要

      7.0 より前の Kibana バージョンは、デフォルトですべてのスペースへのアクセスを許可するベース権限のみをサポートします。 Kibana 7.0 以降は、ベース権限に加えて機能権限をサポートします。 機能権限は、特定の Kibana 機能へのアクセスを許可するもので、Kibana スペースの指定が必要です。

      ロールを作成する際には、権限を割り当てる必要があります。以下に、一般的なロール設定の例を示します:

      • 標準ユーザーに特定のインデックスに対する読み取り専用権限を付与します。このユーザーは指定されたインデックスにのみアクセスできます。

        詳細については、「読み取り専用インデックス権限の設定」をご参照ください。

      • 標準ユーザーに、すべてまたは一部のダッシュボードを表示する権限を付与します。

        詳細については、「ダッシュボード権限の設定」をご参照ください。

      • 標準ユーザーに、一部のインデックスに対する読み書き権限と、すべてのクラスターに対する読み取り専用権限を付与します。たとえば、ユーザーはクラスターのヘルス状態、スナップショット、設定を表示したり、インデックスへのデータ書き込みやマッピングの更新を行ったりできます。

        詳細については、「インデックスの読み書き権限とクラスターの読み取り専用権限の設定」をご参照ください。

      • 標準ユーザーに、Kibana Discover とインデックスに対する読み取り専用権限を付与します。このユーザーは、Kibana コンソールの Discover ページに移動して、そのインデックスのデータを表示できます。

        詳細については、「インデックスデータに対する Discover の読み取り専用権限の設定」をご参照ください。

      • 標準ユーザーに、Kibana コンソールへのアクセス権を付与せずに、ドキュメントの作成、読み取り、更新、削除、インデックスの作成と削除、およびインデックス設定の変更を行う権限を付与します。

        詳細については、「Kibana アクセスなしでインデックスとドキュメントを管理する権限の設定」をご参照ください。

    5. [ロールの作成] をクリックします。

  2. ユーザーを作成し、ロールを割り当てて権限を付与します。

    1. 管理ページに移動します。

      • V6.7:左側メニューで、管理 をクリックします。

      • V7.x:ページの左上隅にある 展开图标 アイコンをクリックし、管理 > [スタックの管理] を選択します。

    2. Security セクションで、[ユーザー] をクリックします。

    3. [新規ユーザーの作成] をクリックし、パラメーターを設定します。

      パラメーター

      説明

      [ユーザー名]

      Kibana コンソールへのログインに使用するユーザー名です。

      [ログインパスワード]

      ユーザーが Kibana コンソールにログインするためのパスワードです。

      [確認パスワード]

      ログインパスワード と一致している必要があります。

      フルネーム

      ユーザーのフルネームです。

      E メールアドレス

      ユーザーの E メールアドレスです。

      [役割]

      ユーザーにロールを割り当てます。1 つ以上のカスタムロールまたは組み込みロールを選択できます。

      重要

      ロールを作成する際に [実行ユーザー権限] セクションでユーザーを指定した場合でも、ここでそのロールをユーザーに割り当てる必要があります。そうしないと、ユーザーはログオンできません。

    4. [ユーザーの作成] をクリックします。

  3. 新しいユーザーとして Kibana コンソールにログインし、操作を実行して権限を確認します。

読み取り専用インデックス権限の設定

ユースケース

標準ユーザーに特定のインデックスに対する読み取り専用権限を付与します。ユーザーは Kibana コンソールでインデックスデータをクエリできますが、クラスターレベルの API にはアクセスできません。

ロール設定

表 1. 権限の説明

権限タイプ

権限キー

権限値

説明

インデックス権限

indices

kibana_sample_data_logs

インデックスの名前です。フルネーム、エイリアス、ワイルドカード、または正規表現を指定できます。詳細については、インデックス権限をご参照ください。

privileges

read

インデックスに対する読み取り専用権限を付与します。これらの権限には、get、mget、search、count が含まれます。詳細については、privileges-list-indices をご参照ください。

付与されたフィールド (任意)

*

インデックスフィールドです。* はすべてのフィールドを示します。

Kibana 権限

privileges

read

すべてのスペースに対する Kibana の読み取り専用アクセスを付与します。デフォルトは none で、すべての Kibana スペースへのアクセスを拒否します。

重要

7.0 より前のバージョンの Kibana は、デフォルトですべてのスペースへのアクセスを許可するベース権限のみをサポートしています。Kibana 7.0 以降では、ベース権限に加えて機能権限がサポートされています。機能権限は、特定の Kibana 機能へのアクセスを許可するもので、Kibana スペースを指定する必要があります。

検証

  • 新しいユーザーとして Kibana コンソールにログインし、読み取りコマンドを実行します。コマンドは正常な結果を返します。

    GET /kibana_sample_data_logs/_search
  • 書き込みコマンドを実行します。認可エラーが表示されます。

    POST /kibana_sample_data_logs/_doc/1
    {
        "productName": "testpro",
        "annual_rate": "3.22%",
        "describe": "testpro"
    }
    {
      "error": {
        "root_cause": [
          {
            "type": "security_exception",
            "reason": "action [indices:data/write/index] is unauthorized for user [user-test]"
          }
        ],
        "type": "security_exception",
        "reason": "action [indices:data/write/index] is unauthorized for user [user-test]"
      },
      "status": 403
    }

ダッシュボード権限の設定

ユースケース

標準ユーザーに特定のインデックスに対する読み取り専用権限を付与し、そのインデックスのダッシュボードデータを表示できるようにします。

ロール設定

ユーザーを作成する際に、read-index ロールと kibana_dashboard_only_user ロールをユーザーに割り当てます。

  • read-index: 作成が必要なカスタムロールの例です。このロールには、指定されたインデックスに対する読み取り専用権限があります。

  • kibana_dashboard_only_user: 指定されたインデックスのダッシュボードデータを表示する権限を持つ、Kibana の組み込みロールです。

    説明
    • Kibana 7.0 以降では、kibana_dashboard_only_user ロールは非推奨となっています。特定のインデックスのダッシュボードを表示するには、そのインデックスに対する読み取り専用権限を設定するだけで済みます。詳細については、「インデックスの読み取り専用権限の設定」をご参照ください。

    • kibana_dashboard_only_user ロールは、多くのシナリオでカスタムロールと併用できます。カスタムロールに [ダッシュボード専用ロール] 機能のみを割り当てる必要がある場合は、管理 ページの Kibana エリアで Dashboard セクションを見つけ、カスタムロールをバインドします (デフォルトは kibana_dashboard_only_user ロールです)。

検証

新しいユーザーとして Kibana コンソールにログインします。対応するインデックスのダッシュボードを表示できます。

[heartbeat-dashboard] という名前のダッシュボードには、[heartbeat-visu] 折れ線グラフが含まれており、Y 軸にはカウント、X 軸には @timestamp per 30 seconds が表示され、時間経過に伴うハートビートカウントの傾向を示します。

インデックスの読み取り/書き込みとクラスターの読み取り専用権限の設定

ユースケース

ユーザーに特定のインデックスに対する読み取り、書き込み、削除の権限と、クラスターおよび Kibana に対する読み取り専用権限を付与します。

ロール設定

表 2. 権限の説明

権限タイプ

権限キー

権限値

説明

クラスター権限

[クラスター]

monitor

クラスターに対する読み取り専用権限を付与します。クラスターヘルス、ステータス、ホットスレッド、ノード情報、ブロックされたタスクの表示などが含まれます。

インデックス権限

indices

heartbeat-*,library*

インデックスの名前です。完全な名前、エイリアス、ワイルドカード、または正規表現を指定できます。詳細については、「roles-indices-priv」をご参照ください。

privileges

read

インデックスに対する読み取り専用権限を付与します。この権限には、get、mget、search、count が含まれます。詳細については、「privileges-list-indices」をご参照ください。

create_index

インデックスを作成する権限です。インデックスの作成時にインデックスエイリアスを定義する場合は、manage 権限も付与する必要があります。

重要

インデックスエイリアスも、indices で定義されたマッチングルールを満たす必要があります。

view_index_metadata

マッピングや設定などのインデックスメタデータへの読み取り専用アクセスを許可します。

write

ドキュメントに対するすべての書き込み操作を実行する権限です。これには、index、update、delete、bulk、およびマッピングの更新操作が含まれます。この権限は、create および index よりも広範囲な操作を対象とします。

monitor

すべての操作をモニターする権限です。インデックスリカバリー、segments info、index stats、status などが含まれます。

delete

インデックスのドキュメントを削除する権限です。

delete_index

インデックスを削除する権限です。

granted fields

*

権限を付与する対象のインデックスフィールドです。* はインデックスのすべてのフィールドを表します。

Kibana 権限

privileges

read

すべてのスペースに対する Kibana の読み取り専用アクセスを許可します。デフォルトは none で、すべての Kibana スペースへのアクセスが拒否されます。

重要

Kibana 7.0 より前のバージョンでは、ベース権限のみがサポートされており、デフォルトですべてのスペースへのアクセスが付与されます。Kibana 7.0 以降では、ベース権限に加えて フィーチャー権限がサポートされます。フィーチャー権限は、特定の Kibana 機能へのアクセスを付与し、Kibana スペースの指定が必要です。

検証

一般ユーザーとして Kibana コンソールにログインします。次の操作を実行すると、すべて成功します。

GET _cat/indices?v
GET _cluster/stats

GET /product_info/_search
GET /product_info1/_search

POST /kibana_sample_data_logs/_doc/2
{
"productName":"testpro",
"annual_rate":"3.22%",
"describe":"testpro"
}
PUT /product_info2/_doc/1
{
"productName":"testpro",
"annual_rate":"3.22%",
"describe":"testpro"
}

DELETE product_info

--- 出力 ---
health status index                           uuid  pri rep docs.count docs.deleted store.size pri.store.size
green  open   .monitoring-es-6-2020.12.14     xxx   1   1
green  open   .kibana_1                       xxx   1   1
green  open   kibana_sample_data_logs         xxx   5   1   2          0            18.1kb     9kb
green  open   .monitoring-kibana-6-2020.12.12 xxx   1   1
green  open   .monitoring-es-6-2020.12.11     xxx   1   1
green  open   .monitoring-es-6-2020.12.10     xxx   1   1
green  open   .monitoring-kibana-6-2020.12.14 xxx   1   1
green  open   .monitoring-es-6-2020.12.09     xxx   1   1
green  open   .kibana_task_manager            xxx   1   1
green  open   .monitoring-kibana-6-2020.12.13 xxx   1   1
green  open   .monitoring-kibana-6-2020.12.09 xxx   1   1
green  open   product_info1                   xxx   5   1   0          0            2.5kb      1.2kb
green  open   .monitoring-kibana-6-2020.12.11 xxx   1   1
green  open   .monitoring-es-6-2020.12.12     xxx   1   1
green  open   product_info2                   xxx   5   1   1          0            9.3kb      4.6kb
green  open   .monitoring-kibana-6-2020.12.10 xxx   1   1
green  open   .monitoring-es-6-2020.12.13     xxx   1   1
green  open   .security-6                     xxx   1   1
  • クラスター内のインデックスの詳細情報を表示します。

    GET /_cat/indices?v
  • クラスターのステータスを表示します。

    GET /_cluster/stats
  • library_v1 インデックスのデータをクエリします。

    GET /library_v1/_search
  • library_v2 インデックスのデータをクエリします。

    GET /library_v2/_search
  • POST メソッドを使用して、heartbeat-2023.01.01 インデックスにデータを書き込みます。

    POST /heartbeat-2023.01.01/_doc/2
    {
        "productName": "testpro",
        "annual_rate": "3.22%",
        "describe": "testpro"
    }
  • PUT メソッドを使用して、library_v3 インデックスにデータを書き込みます。

    PUT /library_v3/_doc/1
    {
        "productName": "testpro",
        "annual_rate": "3.22%",
        "describe": "testpro"
    }
  • library_v1 インデックスを削除します。

    DELETE library_v1

Discover の読み取り専用権限の設定

ユースケース

標準ユーザーに Kibana Discover とインデックスに対する読み取り専用権限を付与します。このユーザーは、Kibana コンソールの Discover ページに移動して、そのインデックスのデータを表示できます。

ロール設定

表 3. 権限の説明

権限タイプ

権限キー

権限値

説明

クラスター権限

Privileges

monitor

クラスターのヘルスとステータス、ホットスレッド、ノード情報、ノードとクラスターの統計、保留中のクラスタータスクの表示など、すべてのクラスターに対する読み取り専用権限を付与します。

インデックス権限

Indices

kibana_sample_data_ecommerce

インデックスの名前です。フルネーム、エイリアス、ワイルドカード、または正規表現を指定できます。詳細については、「インデックス権限」をご参照ください。

Privileges

read

インデックスに対する読み取り専用権限を付与します。これらの権限には、 get、 mget、 search、 count が含まれます。詳細については、「privileges-list-indices」をご参照ください。

付与されたフィールド (任意)

*

インデックスフィールド。 * はすべてのフィールドを表します。

Kibana 権限

Privileges

read

すべての Kibana スペースに対する読み取り専用権限を付与します。デフォルト値は none で、すべての Kibana スペースへのアクセスを拒否します。

重要

7.0 より前のバージョンの Kibana は、デフォルトですべてのスペースへのアクセスを許可する ベース権限のみをサポートしています。Kibana 7.0 以降では、ベース権限に加えて 機能権限がサポートされています。機能権限は、Discover ページなどの特定の Kibana 機能へのアクセスを許可するもので、Kibana スペースを指定する必要があります。

検証

新しいユーザーとして Kibana コンソールにログインします。 Discover ページで指定されたインデックスのデータを表示できます。

現在、インデックス kibana_sample_data_ecommerce が表示されており、そのインデックス内の e コマース注文ドキュメントの詳細がページに正常に表示されます。

Kibana アクセスなしでのインデックスとドキュメントの管理

ユースケース

ユーザーに Kibana コンソールへのアクセス権を付与することなく、API 経由でインデックスとドキュメントを管理する権限を付与します。

ロール設定

表 4. 権限の説明

権限タイプ

権限キー

権限値

説明

インデックス権限

インデックス

test*

インデックスの名前です。フルネーム、エイリアス、ワイルドカード、または正規表現を指定できます。詳細については、「インデックス権限」をご参照ください。

権限

create_index

インデックスを作成する権限です。インデックス作成リクエストにエイリアスが含まれる場合は、manage 権限も付与する必要があります。

delete_index

インデックスを削除する権限です。

index

ドキュメントのインデックス登録と更新、およびインデックスマッピングの更新を行う権限です。

delete

ドキュメントを削除する権限です。

read

インデックスに対する読み取り専用の権限です。この権限には、get、mget、search、count が含まれます。詳細については、「privileges-list-indices」をご参照ください。

manage

エイリアス、設定、マッピング、テンプレートの管理など、インデックス管理操作を行うための権限です。

対象フィールド (任意)

*

インデックスフィールド。 * はすべてのフィールドを表します。

Kibana権限

権限

none

none (デフォルト) に設定します。これにより、すべての Kibana スペースへのアクセスが拒否されます。

重要

7.0 より前のバージョンの Kibana は、デフォルトですべてのスペースへのアクセスを許可するベース権限のみをサポートしています。Kibana 7.0 以降では、ベース権限に加えてフィーチャー権限がサポートされています。フィーチャー権限は、特定の Kibana フィーチャーへのアクセスを許可し、Kibana スペースを指定する必要があります。

検証

  • cURL を使用してインデックスを作成してから削除します。

    [root@iZbp17az4re1xxx ~]#
    [root@iZbp17az4re1xxx ~]# curl -u 'test:xxx' -XPUT "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role"
    {"acknowledged":true,"shards_acknowledged":true,"index":"test_role"}[root@iZbp17az4re1kuerxxx ~]#
    [root@iZbp17az4re1xxx ~]#
    [root@iZbp17az4re1xxx ~]# curl -u 'test:xxx' -XDELETE "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role"
    {"acknowledged":true} root@iZbp17az4re1kuerxxx ~]#
  • インデックス設定を変更します。この例では、インデックスデータをウォームデータに設定します。

    [root@iZbp17az4re1kuere  ~]#
    [root@iZbp17az4re1kuere  ~]# curl -u 'test:xxx'  -XPUT "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_settings" -H 'content-Type:application/json' -d '{"index":{"routing":{"allocation":{"require.box_type": "warm"}}}}'
    {"acknowledged":true}[root@iZbp17az4re1kuere-xxx  ~]#
  • ドキュメントの CRUD 操作を実行します。

    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]# curl -u 'test:xxx' -XPOST "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_doc/1" -H 'content-Type:application/json' -d '{"test":"you know, for search"}'
    {"_index":"test_role","_type":"_doc","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":0,"_primary_term":1}
    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]# curl -u 'test:xxx' -XPOST "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_doc/2" -H 'content-Type:application/json' -d '{"test":"you know, for search"}'
    {"_index":"test_role","_type":"_doc","_id":"2","_version":1,"result":"created","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":1,"_primary_term":1}
    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]# curl -u 'test:xxx' -XPOST "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_doc/2" -H 'content-Type:application/json' -d '{"test":"you know, for search, 2.0"}'
    {"_index":"test_role","_type":"_doc","_id":"2","_version":2,"result":"updated","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":2,"_primary_term":1}
    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]# curl -u 'test:xxx' -XGET "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_search?q=test:'search'"
    {"took":64,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":2,"max_score":0.19100356,"hits":[{"_index":"test_role","_type":"_doc","_id":"1","_score":0.19100356,"_source":{"test":"you know,for search"}},{"_index":"test_role","_type":"_doc","_id":"2","_score":0.17439455,"_source":{"test":"you know,for search, 2.0"}}]}}
    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]# curl -u 'test:xxx' -XDELETE "http://es-cn-co92y5p2b000xxx.elasticsearch.aliyuncs.com:9200/test_role/_doc/2"
    {"_index":"test_role","_type":"_doc","_id":"2","_version":3,"result":"deleted","_shards":{"total":2,"successful":2,"failed":0},"_seq_no":3,"_primary_term":1}
    [root@iZbp17az4re1kueren xxx ~]#
    [root@iZbp17az4re1kueren xxx ~]#
  • ユーザーとして Kibana コンソールにログインします。

    ユーザーが必要な権限を持っていないことを示すメッセージが表示されます。

よくある質問

RAM ユーザーの AccessKey ID と AccessKey Secret を使用して、Elasticsearch クラスター内のデータに直接アクセスできますか?

いいえ、できません。RAM ユーザーの AccessKey ID と AccessKey Secret は、インスタンスの作成や再起動、設定の変更といった Alibaba Cloud 管理 API の呼び出しにのみ使用できます。Elasticsearch クラスター内のデータへの直接アクセスやデータ操作には使用できません。クラスターデータの読み取りや書き込み、またはインデックス操作を行うには、Elasticsearch X-Pack セキュリティ認証システムで作成されたユーザー名とパスワードを使用してください。

elastic スーパーユーザーが .kibana_security_session_1 インデックスを削除しようとすると、「403 insufficient privileges」エラーが表示されるのはなぜですか?

.kibana_security_session_1 インデックスは、Kibana がユーザーセッション情報を保存するために使用する保護されたシステムインデックスです。superuser ロールを持つ elastic ユーザーであっても、API を使用してこのインデックスを直接削除することはできません。これは Elasticsearch と Kibana のセキュリティ制限であり、権限設定の誤りではありません。このインデックスに関する問題が原因でログインやセッションの問題が発生している場合は、ブラウザキャッシュをクリアしてから、Kibana コンソールに再度ログインしてください。