Anda dapat mengontrol izin pengguna pada database tertentu untuk mencegah data Anda diakses atau dirusak oleh pengguna tidak sah. Dengan cara ini, keamanan database dapat ditingkatkan. Secara default, fitur autentikasi pengguna dan verifikasi izin dinonaktifkan untuk LindormTSDB. Anda harus mengaktifkan fitur autentikasi pengguna dan verifikasi izin secara manual. Setelah fitur ini diaktifkan, Anda harus menyertakan kredensial pengguna dalam permintaan saat terhubung ke LindormTSDB. Jika tidak, permintaan akan gagal autentikasi. Topik ini menjelaskan cara mengaktifkan fitur autentikasi pengguna dan verifikasi izin, cara menyertakan kredensial pengguna dalam informasi koneksi, serta izin yang diperlukan untuk mengeksekusi pernyataan SQL umum dan memanggil operasi API umum.
Kontrol akses di LindormTSDB
Lindorm menyediakan sistem kontrol akses berlapis untuk memastikan keamanan aplikasi tingkat perusahaan. Kontrol akses dilakukan di tiga lapisan berikut:
RAM yang disediakan oleh Alibaba Cloud.
Instans pada lapisan fisik.
Untuk informasi lebih lanjut, lihat Konfigurasikan Daftar Putih.
Mesin pada lapisan logis.
Kontrol akses diimplementasikan untuk mesin berdasarkan autentikasi pengguna dan verifikasi izin.
Catatan penggunaan
Secara default, pengguna awal dibuat setelah instans Lindorm dibuat. Nama pengguna dan kata sandi default untuk pengguna awal adalah root_tsdb. Jika Anda menggunakan LindormTSDB 3.4.30 atau versi sebelumnya, nama pengguna dan kata sandi default untuk pengguna awal adalah root. Ubah kata sandi pengguna awal segera setelah instans dibuat untuk menghindari risiko keamanan.
Setelah fitur autentikasi pengguna dan verifikasi izin diaktifkan, layanan yang sedang berjalan mungkin gagal mengakses LindormTSDB jika permintaan yang dikirim oleh layanan tidak menyertakan kredensial pengguna. Dalam hal ini, Anda harus menambahkan kredensial pengguna ke permintaan dan memulai ulang layanan. Oleh karena itu, kami sarankan Anda merencanakan dengan hati-hati dan sepenuhnya mengevaluasi dampak sebelum mengaktifkan fitur ini.
Aktifkan fitur autentikasi pengguna dan verifikasi izin
Secara default, fitur autentikasi pengguna dan verifikasi izin dinonaktifkan. Anda harus masuk ke database untuk mengaktifkan fitur ini.
Prosedur
ALTER SYSTEM SET USER_AUTH=TRUE;Setelah fitur autentikasi pengguna dan verifikasi izin diaktifkan, Anda dapat mengeksekusi pernyataan ALTER SYSTEM SET USER_AUTH=FALSE; untuk menonaktifkan fitur ini. Jika Anda menonaktifkan fitur ini, autentikasi pengguna dan verifikasi izin tidak dilakukan, yang menimbulkan risiko keamanan. Oleh karena itu, kami sarankan Anda tidak menonaktifkan fitur ini.
Periksa apakah fitur autentikasi pengguna dan verifikasi izin diaktifkan
SHOW PARAMETER USER_AUTH;Tambahkan kredensial pengguna ke informasi koneksi
Setelah Anda mengaktifkan fitur autentikasi pengguna dan verifikasi izin, permintaan yang dikirim oleh aplikasi untuk mengakses LindormTSDB harus menyertakan nama pengguna dan kata sandi. Anda harus memiliki izin pada objek yang ingin Anda akses saat menulis atau mengambil data dari objek di LindormTSDB. Dengan cara ini, LindormTSDB dapat secara ketat mengontrol akses ke bisnis Anda dan mengisolasi izin yang diperlukan.
Contoh
lindorm-cli
lindorm-cli -url <Endpoint untuk LindormTSDB SQL> -username <Nama Pengguna> -password <Kata Sandi> -database <Nama Database>Untuk informasi lebih lanjut, lihat Gunakan Lindorm-cli untuk Terhubung dan Menggunakan LindormTSDB.
JDBC
String url = "<Endpoint untuk LindormTSDB SQL>";
String username = "<Nama Pengguna>";
String password = "<Kata Sandi>";
Connection conn = null;
try {
conn = DriverManager.getConnection(url, username, password);
// Lakukan operasi setelah klien terhubung ke LindormTSDB.
} catch (SQLException e) {
e.printStackTrace();
}Untuk informasi lebih lanjut tentang cara menggunakan JDBC untuk terhubung ke LindormTSDB, lihat Tutorial: Gunakan Driver JDBC untuk Lindorm untuk Terhubung dan Menggunakan LindormTSDB.
Druid
dataSource.setDriver(DriverManager.getDriver("<Endpoint untuk LindormTSDB SQL>"))
dataSource.setUrl("<Endpoint untuk LindormTSDB SQL>")
dataSource.setUsername("<Nama Pengguna>")
dataSource.setPassword("<Kata Sandi>")Untuk informasi lebih lanjut tentang cara menggunakan Druid untuk terhubung ke LindormTSDB, lihat Tutorial: Gunakan Kumpulan Koneksi Druid untuk Terhubung ke LindormTSDB.
HTTP API
Jika aplikasi Anda memanggil operasi API HTTP yang kompatibel dengan OpenTSDB untuk mengakses LindormTSDB, saat fitur autentikasi pengguna dan verifikasi izin diaktifkan, permintaan yang dikirim dengan memanggil operasi API tersebut harus menyertakan kredensial pengguna.
Metode menentukan kredensial pengguna saat memanggil operasi API yang kompatibel dengan OpenTSDB untuk mengakses LindormTSDB
Sertakan kredensial pengguna yang dikodekan Base64 dalam header permintaan HTTP. Metodenya mirip dengan memanggil operasi API umum untuk mengirim permintaan SQL. Untuk informasi lebih lanjut, lihat Tentukan Kredensial Pengguna untuk Autentikasi.
Untuk aplikasi yang menggunakan SDK Time Series Database (TSDB), Anda dapat menentukan nama pengguna dan kata sandi dengan memanggil metode basicAuth saat Anda membuat objek TSDBConfig.
url = "<HTTP Endpoint untuk LindormTSDB>/api/v2/sql"
username = "<Nama Pengguna>"
password = "<Kata Sandi>"
auth = HTTPBasicAuth(username, password)
headers = {
"Content-Type": "text/plain",
"Authorization": f"Basic {base64.b64encode(f'{username}:{password}'.encode()).decode()}"
}Untuk informasi lebih lanjut tentang cara menggunakan operasi API HTTP untuk terhubung ke LindormTSDB, lihat Isi Permintaan.
Untuk informasi lebih lanjut tentang izin yang diperlukan untuk memanggil operasi API HTTP, lihat Izin yang Diperlukan untuk Memanggil Operasi API yang Kompatibel dengan OpenTSDB untuk Mengakses LindormTSDB.
Pengguna dan izin
Model izin
Tipe izin
Di LindormTSDB, izin diklasifikasikan menjadi empat jenis. Tabel berikut menjelaskan keempat jenis izin tersebut.
Nama izin | Deskripsi |
READ | Izin baca. Untuk mengambil data dalam tabel, Anda harus memiliki izin baca pada tabel tersebut. |
WRITE | Izin tulis. Untuk menulis data ke tabel, Anda harus memiliki izin tulis pada tabel tersebut. |
ADMIN | Izin administratif. Untuk mengelola objek data di LindormTSDB, Anda harus memiliki izin administratif pada objek data yang ingin Anda kelola. |
SYSTEM | Izin sistem. Anda harus memiliki izin sistem untuk melakukan operasi yang dapat memengaruhi seluruh instans. |
Ruang lingkup izin
LindormTSDB memungkinkan Anda menentukan ruang lingkup izin yang Anda berikan kepada pengguna berdasarkan kebutuhan bisnis yang berbeda. LindormTSDB mendukung dua ruang lingkup izin berikut:
GLOBAL
Anda dapat memberikan dan mencabut izin pada semua sumber daya secara global.
Jika pengguna diberikan izin pada semua sumber daya secara global, pengguna dapat melakukan operasi yang sesuai pada semua objek data di LindormTSDB. Misalnya, jika pengguna diberikan izin READ pada semua sumber daya secara global, pengguna dapat mengambil data di semua tabel seri waktu di semua database.
DATABASE
Anda dapat memberikan dan mencabut izin pada database tertentu.
Jika pengguna diberikan izin pada database, pengguna dapat melakukan operasi yang sesuai pada semua objek data di database tersebut. Misalnya, jika pengguna diberikan izin READ pada database bernama DB1, pengguna dapat mengambil data di semua tabel seri waktu di database tersebut.
Aturan otorisasi
Ruang lingkup izin SYSTEM adalah GLOBAL.
Hanya pengguna yang memiliki izin ADMIN pada ruang lingkup GLOBAL atau izin SYSTEM yang dapat membuat, menghapus, dan mengotorisasi pengguna atau mencabut izin dari pengguna.
Izin pengguna adalah gabungan semua izin yang diberikan kepada pengguna. Misalnya, jika Anda memiliki izin READ pada ruang lingkup GLOBAL dan izin READ pada ruang lingkup DATABASE pada saat yang sama, Anda dapat mengambil data di semua database LindormTSDB.
Kelola pengguna dan izin
LindormTSDB memungkinkan Anda menggunakan SQL dan sistem manajemen kluster LindormTable untuk mengelola pengguna dan izin.
Gunakan SQL untuk mengelola pengguna dan izin
Untuk informasi lebih lanjut tentang sintaks SQL yang digunakan untuk membuat pengguna, lihat CREATE USER.
Untuk informasi lebih lanjut tentang sintaks SQL yang digunakan untuk menghapus pengguna, lihat DROP USER.
Untuk informasi lebih lanjut tentang sintaks SQL yang digunakan untuk memodifikasi kata sandi pengguna, lihat ALTER USER.
Untuk informasi lebih lanjut tentang sintaks SQL yang digunakan untuk melihat semua pengguna, lihat SHOW.
Untuk informasi lebih lanjut tentang sintaks SQL yang digunakan untuk memberikan izin kepada pengguna, lihat GRANT.
Untuk informasi lebih lanjut tentang sintaks SQL yang digunakan untuk mencabut izin dari pengguna, lihat REVOKE.
Gunakan sistem manajemen kluster untuk mengelola pengguna dan izin
Data pengguna dan izin dibagikan di LindormTSDB dan LindormTable. Jika Anda mengaktifkan LindormTable, Anda dapat masuk ke sistem manajemen kluster LindormTable untuk mengelola pengguna dan izin. Untuk informasi lebih lanjut tentang cara menggunakan sistem manajemen kluster, lihat Masuk ke Sistem Manajemen Kluster.
Sistem manajemen kluster LindormTable mendukung izin TRASH. Izin ini tidak digunakan di LindormTSDB.
Jika namespace di LindormTable memiliki nama yang sama dengan database di LindormTSDB dan pengguna diberikan izin pada namespace tersebut, pengguna memiliki izin untuk mengakses database dengan nama yang sama di LindormTSDB secara default.
Izin yang diperlukan untuk mengeksekusi pernyataan SQL umum
Tabel berikut menjelaskan izin yang diperlukan untuk mengeksekusi pernyataan SQL umum.
Dalam tabel berikut, ○ menunjukkan bahwa izin diperlukan, dan × menunjukkan bahwa izin tidak diperlukan.
Pernyataan SQL | GLOBAL | DATABASE | Deskripsi | |||||
READ | WRITE | ADMIN | SYSTEM | READ | WRITE | ADMIN | ||
SELECT...FROM... | ○ | × | × | × | ○ | × | × | - |
INSERT INTO...VALUES... | × | ○ | × | × | × | ○ | × | - |
INSERT INTO...SELECT... | ○ | ○ | × | × | ○ | ○ | × | Izin WRITE pada tabel tempat data dimasukkan diperlukan. Izin READ pada tabel tempat data diambil diperlukan. |
DESCRIBE DATABASE ... | × | × | ○ | × | × | × | ○ | - |
CREATE DATABASE... | × | × | ○ | × | × | × | × | - |
ALTER DATABASE... | × | × | ○ | × | × | × | ○ | - |
DROP DATABASE... | × | × | ○ | × | × | × | ○ | - |
SHOW DATABASES | × | × | ○ | × | × | × | × | - |
DESCRIBE TABLE ... | ○ | × | × | × | ○ | × | × | - |
CREATE TABLE... | × | × | ○ | × | × | × | ○ | - |
DROP TABLE... | × | × | ○ | × | × | × | ○ | - |
CREATE USER | × | × | ○ | ○ | × | × | × | - |
ALTER USER... | × | × | ○ | ○ | × | × | × | - |
DROP USER... | × | × | ○ | ○ | × | × | × | - |
SHOW USERS | × | × | ○ | ○ | × | × | × | - |
GRANT... | × | × | ○ | ○ | × | × | × | - |
REVOKE... | × | × | ○ | ○ | × | × | × | - |
SHOW PRIVILEGES... | × | × | ○ | ○ | × | × | × | - |
ALTER SYSTEM... | × | × | × | ○ | × | × | × | - |
SHOW PARAMETER... | × | × | × | ○ | × | × | × | - |
Izin yang diperlukan untuk memanggil operasi API HTTP yang kompatibel dengan OpenTSDB
Untuk memanggil operasi API HTTP yang kompatibel dengan OpenTSDB, Anda harus memiliki izin yang sesuai pada ruang lingkup GLOBAL.
Tabel berikut menjelaskan izin yang diperlukan untuk memanggil setiap operasi API HTTP.
Dalam tabel berikut, ○ menunjukkan bahwa izin diperlukan, dan × menunjukkan bahwa izin tidak diperlukan.
Operasi API | GLOBAL WRITE | GLOBAL READ | GLOBAL ADMIN |
/api/put | ○ | × | × |
/api/query | × | ○ | × |
/api/query/last | × | ○ | × |
/api/mput | ○ | × | × |
/api/mquery | × | ○ | × |
/api/query/mlast | × | ○ | × |
/api/suggest | × | ○ | × |
/api/dump_meta | × | ○ | × |
/api/search/lookup | × | ○ | × |
/api/ttl | × | × | ○ |
/api/truncate | × | × | ○ |