Elasticsearch X-Pack menyediakan kontrol akses berbasis peran (RBAC) yang memungkinkan Anda memberikan hak istimewa tertentu kepada role dan menetapkan role tersebut kepada pengguna. Alibaba Cloud Elasticsearch mencakup beberapa role bawaan, dan Anda dapat membuat role kustom untuk kontrol yang lebih granular terhadap kluster, indeks, dan bidang.
Latar Belakang
-
Untuk detail tentang RBAC X-Pack, lihat User authorization.
-
Untuk detail tentang otentikasi keamanan, lihat Authentication and authorization in Elasticsearch.
Prosedur
Petunjuk ini berlaku untuk Elasticsearch V6.7 dan V7.x. Langkah untuk versi lain mungkin berbeda. Rujuk konsol untuk langkah paling akurat.
-
Buat role.
-
Login ke konsol Kibana.
Untuk informasi selengkapnya, lihat Log on to the Kibana console.
-
Navigasi ke halaman management.
-
V6.7: Di panel navigasi kiri, klik Management.
-
V7.x: Di pojok kiri atas halaman, klik ikon
lalu pilih Management > Stack Management.
-
-
Di bagian Security, klik Roles.
-
Klik Create role dan konfigurasikan parameter.
Parameter
Deskripsi
Role Name
Nama role.
Cluster privileges
Menentukan hak istimewa untuk operasi kluster, seperti melihat kesehatan dan pengaturan kluster, atau membuat Snapshot. Untuk informasi selengkapnya, lihat Cluster privileges.
Run As privileges
Opsional. Pengguna yang mengasumsikan role ini. Jika tidak ditentukan di sini, Anda dapat menetapkan role saat membuat pengguna. Untuk informasi selengkapnya, lihat Create a user.
Index privileges
Menentukan hak istimewa untuk operasi indeks, seperti memberikan akses
readke semua bidang dari semua indeks dengan mengatur nama indeks menjadi*. Nama indeks mendukung wildcard (*) dan ekspresi reguler. Untuk informasi selengkapnya, lihat Indices privileges. Konfigurasikan parameter berikut:-
Indices: Saat membuat role, daftar drop-down hanya menampilkan pola indeks yang ada dan tidak secara otomatis memuat semua indeks fisik dalam kluster. Untuk memberikan izin pada indeks yang tidak ditampilkan, masukkan secara manual nama indeks spesifik atau nama indeks yang mengandung wildcard (
*) di kolom input, lalu tekan Enter untuk menambahkannya. Contoh:heartbeat-*.CatatanJika Anda tidak memiliki pola indeks, buka halaman Management, klik Index Pattern di bawah Kibana, lalu ikuti petunjuk di layar untuk membuatnya.
-
Privileges: Hak istimewa yang akan diberikan kepada role.
-
Granted fields (opsional): Bidang tempat hak istimewa diberikan.
Kibana privileges
Menentukan hak istimewa untuk operasi Kibana.
PentingVersi Kibana sebelum 7.0 hanya mendukung Base privileges, yang secara default memberikan akses ke semua space. Kibana 7.0 dan versi setelahnya mendukung Feature privileges selain Base privileges. Feature privileges memberikan akses ke fitur Kibana tertentu dan mengharuskan Anda menentukan space Kibana.
Saat membuat role, Anda harus memberikan hak istimewa. Contoh berikut menunjukkan konfigurasi role umum:
-
Berikan pengguna standar hak istimewa read-only pada indeks tertentu. Pengguna ini hanya dapat mengakses indeks yang ditentukan.
Untuk informasi selengkapnya, lihat Configure read-only index privileges.
-
Berikan pengguna standar hak istimewa untuk melihat semua atau beberapa Dasbor.
Untuk informasi selengkapnya, lihat Configure dashboard privileges.
-
Berikan pengguna standar hak istimewa membaca dan menulis pada beberapa indeks serta hak istimewa read-only pada semua kluster. Misalnya, pengguna dapat melihat kesehatan kluster, Snapshot, dan pengaturan, serta menulis data dan memperbarui pemetaan untuk suatu indeks.
Untuk informasi selengkapnya, lihat Mengonfigurasi Hak Istimewa Baca/Tulis Indeks dan Kluster read-only.
-
Berikan pengguna standar hak istimewa read-only untuk Kibana Discover dan suatu indeks. Pengguna ini dapat membuka halaman Discover di konsol Kibana untuk melihat data indeks tersebut.
Untuk informasi selengkapnya, lihat Mengonfigurasi Hak Istimewa Read-Only Discover untuk Data Indeks.
-
Berikan pengguna standar hak istimewa untuk membuat, membaca, memperbarui, dan menghapus dokumen, membuat dan menghapus indeks, serta memodifikasi konfigurasi indeks, tanpa memberikan akses ke konsol Kibana.
Untuk informasi selengkapnya, lihat Configure permissions to manage indexes and documents without Kibana access.
-
-
Klik Create role.
-
-
Buat pengguna dan tetapkan role untuk memberikan izin.
-
Navigasi ke halaman management.
-
V6.7: Di panel navigasi kiri, klik Management.
-
V7.x: Di pojok kiri atas halaman, klik ikon
lalu pilih Management > Stack Management.
-
-
Di bagian Security, klik Users.
-
Klik Create new user dan konfigurasikan parameter.
Parameter
Deskripsi
Username
Username untuk login ke konsol Kibana.
Password
Password untuk pengguna login ke konsol Kibana.
Confirm Password
Harus sesuai dengan Password.
Full name
Nama lengkap pengguna.
Email address
Alamat email pengguna.
Roles
Tetapkan role kepada pengguna. Anda dapat memilih satu atau beberapa role kustom atau bawaan.
PentingMeskipun Anda telah menentukan pengguna di bagian
Run As privilegessaat membuat role, Anda tetap harus menetapkan role tersebut kepada pengguna di sini. Jika tidak, pengguna tidak dapat login. -
Klik Create user.
-
-
Login ke konsol Kibana sebagai pengguna baru dan lakukan operasi untuk memverifikasi izin.
Konfigurasi hak istimewa indeks read-only
Kasus Penggunaan
Berikan pengguna standar hak istimewa read-only untuk indeks tertentu. Pengguna dapat melakukan kueri data indeks di konsol Kibana tetapi tidak dapat mengakses API tingkat kluster.
Konfigurasi Role
Tabel 1. Deskripsi hak istimewa
|
Jenis hak istimewa |
Kunci hak istimewa |
Nilai hak istimewa |
Deskripsi |
|
Index privileges |
indices |
kibana_sample_data_logs |
Nama indeks. Anda dapat menentukan nama lengkap, alias, wildcard, atau ekspresi reguler. Untuk informasi selengkapnya, lihat Indices Privileges. |
|
privileges |
|
Memberikan hak istimewa read-only pada indeks. Hak istimewa ini mencakup |
|
|
Granted fields (opsional) |
|
Bidang indeks. * menunjukkan semua bidang. |
|
|
Kibana privileges |
privileges |
|
Memberikan akses read-only Kibana ke semua space. Nilai default adalah none, yang menolak akses ke semua space Kibana. Penting
Versi Kibana sebelum 7.0 hanya mendukung Base privileges, yang secara default memberikan akses ke semua space. Kibana 7.0 dan versi setelahnya mendukung Feature privileges selain Base privileges. Feature privileges memberikan akses ke fitur Kibana tertentu dan mengharuskan Anda menentukan space Kibana. |
Verifikasi
-
Login ke konsol Kibana sebagai pengguna baru dan jalankan perintah baca. Perintah tersebut harus mengembalikan hasil normal.
GET /kibana_sample_data_logs/_search -
Jalankan perintah tulis. Anda akan menerima error otorisasi.
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 }
Konfigurasi hak istimewa dasbor
Kasus Penggunaan
Berikan pengguna standar hak istimewa read-only untuk indeks tertentu dan izinkan pengguna melihat data dasbor dari indeks tersebut.
Konfigurasi Role
Saat Anda membuat pengguna, tetapkan role read-index dan kibana_dashboard_only_user kepada pengguna.
-
read-index: Contoh role kustom yang harus Anda buat. Role ini memiliki hak istimewa read-only untuk indeks tertentu.
-
kibana_dashboard_only_user: Role bawaan Kibana yang memiliki hak istimewa untuk melihat data dasbor dari indeks tertentu.
Catatan-
Pada Kibana 7.0 dan versi setelahnya, role kibana_dashboard_only_user telah ditinggalkan. Untuk melihat dasbor dari indeks tertentu, Anda hanya perlu mengonfigurasi hak istimewa read-only untuk indeks tersebut. Untuk informasi selengkapnya, lihat Configuring read-only privileges for an index.
-
Role kibana_dashboard_only_user dapat digunakan bersama role kustom dalam banyak skenario. Jika Anda hanya perlu menetapkan fitur Dashboards only roles ke role kustom, di area Kibana pada halaman Management, temukan bagian Dashboard, lalu bind role kustom (default adalah role kibana_dashboard_only_user).
-
Verifikasi
Login ke konsol Kibana sebagai pengguna baru. Anda dapat melihat dasbor dari indeks yang sesuai.
Dasbor bernama heartbeat-dashboard berisi grafik garis heartbeat-visu, dengan Count pada sumbu Y dan @timestamp per 30 seconds pada sumbu X, yang menunjukkan tren jumlah heartbeat dari waktu ke waktu.
Konfigurasi read/write indeks dan read-only kluster
Kasus Penggunaan
Berikan pengguna hak istimewa membaca, menulis, dan menghapus untuk indeks tertentu, serta hak istimewa read-only untuk kluster dan Kibana.
Konfigurasi Role
Tabel 2. Deskripsi hak istimewa
|
Jenis hak istimewa |
Kunci hak istimewa |
Nilai hak istimewa |
Deskripsi |
|
Cluster privileges |
Cluster |
|
Memberikan hak istimewa read-only pada kluster, seperti melihat kesehatan kluster, status, hot thread, informasi node, dan tugas yang diblokir. |
|
Index privileges |
indices |
|
Nama indeks. Anda dapat menentukan nama lengkap, alias, wildcard, atau ekspresi reguler. Untuk informasi selengkapnya, lihat roles-indices-priv. |
|
privileges |
|
Memberikan hak istimewa read-only pada indeks. Hak istimewa ini mencakup |
|
|
|
Hak istimewa untuk membuat indeks. Jika Anda menentukan alias indeks saat membuat indeks, Anda juga perlu memberikan hak istimewa Penting
Alias indeks juga harus memenuhi aturan pencocokan yang ditentukan di bawah indices. |
||
|
|
Memberikan akses read-only ke metadata indeks, seperti pemetaan dan pengaturan. |
||
|
|
Hak istimewa untuk melakukan semua operasi tulis pada dokumen, termasuk |
||
|
|
Hak istimewa untuk memantau semua operasi, termasuk |
||
|
|
Hak istimewa untuk menghapus dokumen indeks. |
||
|
|
Hak istimewa untuk menghapus indeks. |
||
|
granted fields |
|
Bidang indeks yang diberi otorisasi. * merepresentasikan semua bidang indeks. |
|
|
Kibana privileges |
privileges |
|
Memberikan akses read-only Kibana ke semua space. Nilai default adalah none, yang menolak akses ke semua space Kibana. Penting
Versi Kibana sebelum 7.0 hanya mendukung Base privileges, yang secara default memberikan akses ke semua space. Kibana 7.0 dan versi setelahnya mendukung Feature privileges selain Base privileges. Feature privileges memberikan akses ke fitur Kibana tertentu dan mengharuskan Anda menentukan space Kibana. |
Verifikasi
Login ke konsol Kibana sebagai pengguna standar. Semua perintah berikut berhasil.
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
--- Output ---
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
-
Lihat informasi detail tentang indeks dalam kluster.
GET /_cat/indices?v -
Lihat status kluster.
GET /_cluster/stats -
Lakukan kueri data dalam indeks
library_v1.GET /library_v1/_search -
Lakukan kueri data dalam indeks
library_v2.GET /library_v2/_search -
Tulis data ke indeks
heartbeat-2023.01.01menggunakan metode POST.POST /heartbeat-2023.01.01/_doc/2 { "productName": "testpro", "annual_rate": "3.22%", "describe": "testpro" } -
Tulis data ke indeks
library_v3menggunakan metode PUT.PUT /library_v3/_doc/1 { "productName": "testpro", "annual_rate": "3.22%", "describe": "testpro" } -
Hapus indeks
library_v1.DELETE library_v1
Konfigurasi hak istimewa Discover read-only
Kasus Penggunaan
Berikan pengguna standar hak istimewa read-only untuk Kibana Discover dan suatu indeks. Pengguna ini dapat membuka halaman Discover di konsol Kibana untuk melihat data indeks tersebut.
Konfigurasi Role
Tabel 3. Deskripsi hak istimewa
|
Jenis hak istimewa |
Kunci hak istimewa |
Nilai hak istimewa |
Deskripsi |
|
Cluster privileges |
Privileges |
|
Memberikan hak istimewa read-only pada semua kluster, seperti melihat kesehatan dan status kluster, hot thread, informasi node, statistik node dan kluster, serta tugas kluster yang tertunda. |
|
Index privileges |
Indices |
kibana_sample_data_ecommerce |
Nama indeks. Anda dapat menentukan nama lengkap, alias, wildcard, atau ekspresi reguler. Untuk informasi selengkapnya, lihat Indices Privileges. |
|
Privileges |
|
Memberikan hak istimewa read-only pada indeks. Hak istimewa ini mencakup |
|
|
Granted fields (opsional) |
|
Bidang indeks. |
|
|
Kibana privileges |
Privileges |
|
Memberikan hak istimewa read-only untuk semua space Kibana. Nilai default adalah Penting
Versi Kibana sebelum 7.0 hanya mendukung Base privileges, yang secara default memberikan akses ke semua space. Kibana 7.0 dan versi setelahnya mendukung Feature privileges selain Base privileges. Feature privileges memberikan akses ke fitur Kibana tertentu, seperti halaman Discover, dan mengharuskan Anda menentukan space Kibana. |
Verifikasi
Login ke konsol Kibana sebagai pengguna baru. Anda dapat melihat data indeks yang ditentukan di halaman Discover.
Indeks yang sedang dilihat adalah kibana_sample_data_ecommerce, dan halaman berhasil menampilkan detail dokumen pesanan e-commerce dalam indeks tersebut.
Atur indeks dan dokumen tanpa akses Kibana
Kasus Penggunaan
Berikan pengguna hak istimewa untuk mengelola indeks dan dokumen melalui API, tanpa akses ke konsol Kibana.
Konfigurasi Role
Tabel 4. Deskripsi hak istimewa
|
Jenis hak istimewa |
Kunci hak istimewa |
Nilai hak istimewa |
Deskripsi |
|
Index privileges |
Indices |
|
Nama indeks. Anda dapat menentukan nama lengkap, alias, wildcard, atau ekspresi reguler. Untuk informasi selengkapnya, lihat Indices Privileges. |
|
Privileges |
|
Hak istimewa untuk membuat indeks. Jika permintaan pembuatan indeks berisi alias yang akan ditambahkan ke indeks, Anda juga perlu memberikan hak istimewa |
|
|
|
Hak istimewa untuk menghapus indeks. |
||
|
|
Hak istimewa untuk mengindeks dan memperbarui dokumen, serta memperbarui pemetaan indeks. |
||
|
|
Hak istimewa untuk menghapus dokumen. |
||
|
|
Memberikan hak istimewa read-only pada indeks. Hak istimewa ini mencakup |
||
|
|
Memberikan hak istimewa untuk operasi manajemen indeks, seperti mengelola alias, pengaturan, pemetaan, dan templat. |
||
|
Granted fields (opsional) |
|
Bidang indeks. |
|
|
Kibana privileges |
Privileges |
|
Diatur ke Penting
Versi Kibana sebelum 7.0 hanya mendukung Base privileges, yang secara default memberikan akses ke semua space. Kibana 7.0 dan versi setelahnya mendukung Feature privileges selain Base privileges. Feature privileges memberikan akses ke fitur Kibana tertentu dan mengharuskan Anda menentukan space Kibana. |
Verifikasi
-
Gunakan cURL untuk membuat lalu menghapus indeks.
[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 ~]# -
Modifikasi konfigurasi indeks. Contoh ini mengatur data indeks menjadi data dingin.
[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 ~]# -
Lakukan operasi CRUD pada dokumen.
[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 ~]# -
Login ke konsol Kibana sebagai pengguna.
Pesan ditampilkan yang menunjukkan bahwa pengguna tidak memiliki hak istimewa yang diperlukan.
FAQ
Apakah saya dapat menggunakan ID AccessKey dan Rahasia AccessKey pengguna Resource Access Management (RAM) untuk langsung mengakses data dalam kluster Elasticsearch?
Tidak. ID AccessKey dan Rahasia AccessKey pengguna Resource Access Management (RAM) hanya dapat digunakan untuk memanggil API manajemen Alibaba Cloud, seperti API untuk membuat atau me-restart instans dan memodifikasi konfigurasi. API tersebut tidak dapat digunakan untuk langsung mengakses atau memanipulasi data dalam kluster Elasticsearch. Untuk membaca atau menulis data kluster atau melakukan operasi indeks, gunakan username dan password yang dibuat dalam sistem otentikasi keamanan Elasticsearch X-Pack.
Mengapa superuser elastic menerima error 403 insufficient privileges saat menghapus indeks .kibana_security_session_1?
Indeks .kibana_security_session_1 adalah indeks sistem terlindungi yang digunakan Kibana untuk menyimpan informasi sesi pengguna. Bahkan pengguna elastic dengan role superuser tidak dapat langsung menghapus indeks ini menggunakan API. Ini merupakan pembatasan keamanan dari Elasticsearch dan Kibana, bukan kesalahan konfigurasi izin. Jika terjadi masalah pada indeks ini yang menyebabkan gangguan login atau sesi, bersihkan cache browser dan login kembali ke konsol Kibana.