MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Manajemen Pengguna Basis Data:Mengelola Peran untuk MariaDB

Itu selalu memusingkan... Anda perlu menambahkan peran pengguna baru atau mengubah beberapa hak istimewa, dan Anda perlu menetapkannya satu... demi... satu. Ini adalah tugas rutin, terutama di organisasi besar, atau di perusahaan di mana Anda memiliki struktur hak istimewa yang kompleks, atau bahkan jika Anda harus mengelola sejumlah besar pengguna database.

Misalnya, katakanlah Anda perlu menambahkan hak istimewa UPDATE ke database tertentu untuk semua tim QA, jika mereka adalah tim yang terdiri dari lima orang, tidak masalah, tetapi jika mereka 50... atau 100... menjadi keras. Tentu saja, Anda selalu dapat menulis skrip untuk itu, tetapi dengan cara ini selalu ada risiko.

Di blog ini, kita akan melihat bagaimana kita dapat memecahkan masalah pengelolaan pengguna database ini dengan menggunakan peran dan dengan tips khusus tentang cara menggunakannya dengan MariaDB.

Apa itu Peran?

Di dunia basis data, peran adalah sekelompok hak istimewa yang dapat diberikan ke satu atau lebih pengguna, dan pengguna dapat memiliki satu atau lebih peran yang diberikan kepadanya. Untuk membuat perbandingan, ini seperti grup di OS Linux.

Jika kita melihat contoh sebelumnya tentang hak istimewa UPDATE pada tim QA, jika kita telah membuat peran QA, dan semua anggota QA memiliki peran ini, tidak masalah jumlah anggota, Anda hanya perlu mengubah hak istimewa pada peran QA ini dan itu akan disebarkan untuk semua pengguna QA.

Peran di MariaDB

Untuk mengelola peran di MariaDB, Anda harus membuat peran dengan pernyataan CREATE ROLE, menetapkan hak istimewa untuk peran itu dengan pernyataan GRANT, lalu menetapkan hak istimewa kepada pengguna untuk dapat menggunakan peran ini. Anda juga dapat mengatur peran default, sehingga pengguna akan mengambilnya saat menghubungkan.

Sebagai pengguna database, Anda harus mengatur peran saat mengakses database (jika tidak ada peran default), dan Anda dapat mengubah peran jika diperlukan dengan pernyataan SET ROLE.

Dari sisi aplikasi, Anda harus dapat menyetel peran (atau menggunakan default) sebelum melakukan kueri agar ini berfungsi, jadi di aplikasi lama, penerapannya mungkin rumit.

Mari kita lihat beberapa spesifikasi untuk Roles di MariaDB.

  • Hanya satu peran yang dapat aktif pada saat yang sama untuk pengguna saat ini.
  • Sejak MariaDB 10.1 kami memiliki Peran Default. Peran ini diaktifkan secara otomatis saat pengguna terhubung.
  • Peran disimpan dalam memori.

Cara Memeriksa Peran

Di MariaDB ada beberapa cara untuk memeriksanya:

  • TAMPILKAN HIBAH [ UNTUK (pengguna | peran) ]:Daftar hibah untuk pengguna saat ini atau untuk pengguna tertentu.
    MariaDB [testing]> SHOW GRANTS for [email protected]'%';
    +----------------------------------------------------------------------------------------------------------+
    | Grants for [email protected]%                                                                                   |
    +----------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'testuser'@'%' IDENTIFIED BY PASSWORD '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2' |
    +----------------------------------------------------------------------------------------------------------+
    1 row in set (0.000 sec)
  • PILIH pengguna FROM mysql.user WHERE is_role='Y':Daftar peran yang dibuat dalam database.
    MariaDB [testing]> SELECT user FROM mysql.user WHERE is_role='Y';
    +--------+
    | user   |
    +--------+
    | qateam |
    +--------+
    1 row in set (0.000 sec)
  • PILIH * FROM information_schema.applicable_roles:Ini adalah daftar peran yang tersedia untuk pengguna saat ini.
    MariaDB [testing]> SELECT * FROM information_schema.applicable_roles;
    +-------------+-----------+--------------+------------+
    | GRANTEE     | ROLE_NAME | IS_GRANTABLE | IS_DEFAULT |
    +-------------+-----------+--------------+------------+
    | [email protected]%  | qateam    | NO           | NO         |
    +-------------+-----------+--------------+------------+
    1 row in set (0.000 sec)
  • SELECT * FROM information_schema.enabled_roles:Daftar peran aktif saat ini.
    MariaDB [testing]> SELECT * FROM information_schema.enabled_roles;
    +-----------+
    | ROLE_NAME |
    +-----------+
    | qateam    |
    +-----------+
    1 row in set (0.000 sec)
  • PILIH * FROM mysql.roles_mapping:Daftar hubungan antara peran dan hibah pengguna.
    MariaDB [testing]> SELECT * FROM mysql.roles_mapping;
    +-----------+-----------+--------+--------------+
    | Host      | User      | Role   | Admin_option |
    +-----------+-----------+--------+--------------+
    | localhost | root      | qateam | Y            |
    | %         | testuser  | qateam | N            |
    +-----------+-----------+--------+--------------+
    2 rows in set (0.000 sec)

Cara mengelola peran di MariaDB

Mari kita lihat contoh cara mengelolanya di MariaDB. Dalam hal ini, kami akan menggunakan versi MariaDB 10.3 yang berjalan di CentOS 7.

Pertama, mari kita buat pengguna database baru:

MariaDB [testing]> CREATE USER [email protected]'%' IDENTIFIED BY 'PASSWORD';

Jika kita memeriksa hibah untuk pengguna baru ini, kita akan melihat sesuatu seperti ini:

MariaDB [testing]> SHOW GRANTS for [email protected]'%';
+----------------------------------------------------------------------------------------------------------+
| Grants for [email protected]%                                                                                   |
+----------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'testuser'@'%' IDENTIFIED BY PASSWORD '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2' |
+----------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

Sekarang, mari kita coba login dengan pengguna ini dan sambungkan ke database pengujian:

$ mysql -utestuser -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 54
Server version: 10.3.16-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use testing
ERROR 1044 (42000): Access denied for user 'testuser'@'%' to database 'testing'

Seperti yang bisa kita lihat, kita tidak dapat terhubung ke database pengujian dengan pengguna ini, jadi, sekarang, kita akan membuat peran "qateam" dengan hak istimewa dan kita akan menetapkan peran ini ke pengguna baru ini.

MariaDB [testing]> CREATE ROLE qateam;
Query OK, 0 rows affected (0.001 sec)
MariaDB [testing]> GRANT SELECT,INSERT,UPDATE,DELETE ON testing.* TO qateam;
Query OK, 0 rows affected (0.000 sec)

Jika kami mencoba menggunakan peran ini tanpa GRANT, kami akan melihat kesalahan berikut:

MariaDB [(none)]> SET ROLE qateam;
ERROR 1959 (OP000): Invalid role specification `qateam`

Jadi, sekarang kita akan menjalankan GRANT untuk mengizinkan pengguna menggunakannya:

MariaDB [(none)]> GRANT qateam TO [email protected]'%';
Query OK, 0 rows affected (0.000 sec)

Setel peran ke pengguna saat ini:

MariaDB [(none)]> SET ROLE qateam;
Query OK, 0 rows affected (0.000 sec)

Dan coba akses databasenya:

MariaDB [(none)]> use testing;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [testing]>

Kami dapat memeriksa hibah untuk pengguna saat ini:

MariaDB [(none)]> SHOW GRANTS for [email protected]'%';
+----------------------------------------------------------------------------------------------------------+
| Grants for [email protected]%                                                                                   |
+----------------------------------------------------------------------------------------------------------+
| GRANT qateam TO 'testuser'@'%'                                                                          |
| GRANT USAGE ON *.* TO 'testuser'@'%' IDENTIFIED BY PASSWORD '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2' |
+----------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

Dan peran saat ini:

MariaDB [testing]> SELECT CURRENT_ROLE;
+--------------+
| CURRENT_ROLE |
+--------------+
| qateam       |
+--------------+
1 row in set (0.000 sec)

Di sini kita dapat melihat hibah untuk peran qateam, dan hanya itu, kami tidak memiliki hak istimewa yang diberikan langsung ke pengguna, kami memiliki hak istimewa untuk peran tersebut, dan pengguna mengambil hak istimewa dari sana.

Kesimpulan

Mengelola peran dapat membuat hidup kita lebih mudah di perusahaan besar atau database dengan jumlah pengguna yang tinggi yang mengaksesnya. Jika kita ingin menggunakannya dari aplikasi kita, kita harus memperhitungkan aplikasi tersebut harus bisa mengelolanya juga.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana PERIOD_ADD() Bekerja di MariaDB

  2. Cara Menyebarkan MariaDB Cluster 10.5 untuk Ketersediaan Tinggi

  3. Bagaimana UPPER() Bekerja di MariaDB

  4. Pertimbangan Keamanan untuk Penerapan MariaDB di Lingkungan Cloud Hibrida

  5. Kembalikan Baris Acak dari Tabel di MariaDB