Adakah mungkin untuk memberikan kebenaran metadata secara eksklusif dalam MySQL?
P粉715274052
P粉715274052 2024-03-21 20:02:42
0
1
428

TLDR;

Matlamat:

Adakah mungkin untuk memberikan akses pengguna "audit" kepada metadata MySQL sahaja (sekurang-kurangnya skema, jadual, lajur) dan bukan data tepat dalam jadual?

Versi

MySQL 8+

Cuba:

Sebelum soalan ini,

Saya telah mencuba atau tahu:

  • Lihat dokumentasi MySQL rasmi tentang kebenaran (sila beritahu saya jika saya terlepas jawapan di sana)
  • Cari kata kunci di SOF: mysqlprivilegemetadatadsb.
  • Mencari penyelesaian dengan rakan DBA saya
  • Beri pengguna showdatabases kebenaran, tetapi hanya boleh mendapatkan senarai skema
  • Seperti yang kita sedia maklum, semua pembiayaan untuk infomatica_schema adalah sia-sia
  • SELECT ON *.* adalah jawapan lain tetapi ketua saya tidak mahu membocorkan data melaluinya

Latar belakang:

Syarikat saya mengarahkan devops untuk mengumpul metadata MySQL untuk pengauditan atau pemantauan keselamatan atau isu lain (saya tidak tahu butiran keseluruhan cerita). Kepimpinan saya menjangkakan bahawa pelanggaran data yang tidak perlu tidak akan berlaku. BTW, saya tidak tahu kaedah khusus yang mereka (mungkin jabatan audit) akan mengumpul metadata. Apa yang saya perlu lakukan ialah mencipta pengguna yang dibenarkan untuk mereka.

P粉715274052
P粉715274052

membalas semua(1)
P粉739706089

Saya rasa saya telah menemui penyelesaian untuk masalah ini, tetapi ia hanyalah satu penggodaman dan bukan penyelesaian sebenar.

https://dev.mysql.com/doc /refman/8.0/en/show-tables.html berkata:

Iaitu, anda tidak boleh menggunakan SHOW TABLES atau melihat jadual dalam pertanyaan terhadap INFORMATION_SCHEMA (memandangkan SHOW TABLES sebenarnya hanya pertanyaan terhadap paparan sistem ini).

Tetapi bahasa "tiada keistimewaan" membuatkan saya berfikir. Adakah terdapat kebenaran yang boleh dimiliki pengguna tetapi tidak dibenarkan membaca atau menulis data?

https://dev.mysql.com/doc/refman /8.0/en/grant.html berkata:

SHOW VIEWMacam mana? Ini hanya membenarkan melihat metadata, bukan menanyakan jadual atau paparan.

Jadi saya mencubanya:

mysql> create user 'auditor'@'%';
mysql> grant show view on test.* to 'auditor'@'%';

Kemudian saya log masuk sebagai pengguna itu dan mencuba:

mysql> show grants;
+----------------------------------------------+
| Grants for auditor@%                         |
+----------------------------------------------+
| GRANT USAGE ON *.* TO `auditor`@`%`          |
| GRANT SHOW VIEW ON `test`.* TO `auditor`@`%` |
+----------------------------------------------+

mysql> use test

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| Accounts       |
| Bugs           |
| BugsProducts   |
| BugStatus      |
...

Saya juga boleh melihat lajur dsb.

Untuk lebih jelas, ini adalah jadual khusus, bukan paparan. Tetapi memandangkan pengguna juruaudit saya tidak mempunyai sebarang kebenaran pada jadual (walaupun keizinan yang tidak berkaitan), ia berfungsi untuk membolehkan mereka melihat metadata tentang jadual.

Dalam MySQL 8.0.20, mereka menambahkan SHOW ROUTINES 权限。在此之前,您需要 SELECT kebenaran untuk melihat badan prosedur atau fungsi yang disimpan. Tetapi anda tidak menyebut rutin melihat juruaudit dalam soalan anda.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan