Rumah > Soal Jawab > teks badan
TLDR;
Adakah mungkin untuk memberikan akses pengguna "audit" kepada metadata MySQL sahaja (sekurang-kurangnya skema, jadual, lajur) dan bukan data tepat dalam jadual?
MySQL 8+
Sebelum soalan ini,
Saya telah mencuba atau tahu:
mysql
、privilege
、metadata
dsb.showdatabases
kebenaran, tetapi hanya boleh mendapatkan senarai skemainfomatica_schema
adalah sia-siaSELECT ON *.*
adalah jawapan lain tetapi ketua saya tidak mahu membocorkan data melaluinyaSyarikat 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粉7397060892024-03-22 18:38:15
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 VIEW
Macam 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.