Peranan dan Keistimewaan
Berikan dan tarik balik akses dengan GRANT dan REVOKE.
Peranan dan Keistimewaan ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah Peranan dan Keistimewaan?
Dalam SQL, peranan ialah kumpulan keistimewaan bernama yang boleh diberikan kepada pengguna. Keistimewaan mengawal tindakan yang dibenarkan dilakukan oleh pengguna atau peranan pada objek pangkalan data seperti jadual, paparan dan fungsi.
Daripada memberikan keizinan kepada setiap pengguna secara individu, anda mencipta peranan dengan keistimewaan yang diperlukan, kemudian memberikannya kepada ramai pengguna sekali gus. Hal ini menjadikan kawalan akses lebih mudah diurus pada skala besar.
Mencipta Peranan
Gunakan CREATE ROLE untuk mentakrifkan peranan baharu dalam PostgreSQL. Peranan boleh mewakili seorang pengguna atau sekumpulan pengguna, bergantung pada cara anda mengkonfigurasinya.
Peranan dicipta tanpa sebarang keistimewaan secara lalai — anda mesti memberikan akses kepada objek secara jelas.
CREATE ROLE readonly_user;
CREATE ROLE app_writer;
CREATE ROLE db_admin;Memberikan Keistimewaan Jadual
Pernyataan GRANT memberikan keizinan kepada peranan atau pengguna untuk melakukan operasi tertentu pada objek pangkalan data. Keistimewaan peringkat jadual yang biasa termasuk SELECT, INSERT, UPDATE dan DELETE.
Anda boleh memberikan satu keistimewaan atau beberapa keistimewaan sekali gus dengan memisahkannya menggunakan koma.
-- Grant SELECT only (read-only role)
GRANT SELECT ON employees TO readonly_user;
-- Grant multiple privileges
GRANT SELECT, INSERT, UPDATE ON orders TO app_writer;Memberikan Semua Keistimewaan
Jika peranan memerlukan akses penuh kepada jadual, anda boleh menggunakan GRANT ALL PRIVILEGES dan bukannya menyenaraikan setiap keizinan secara berasingan. Ini memberikan setiap keistimewaan yang berkenaan pada objek yang ditentukan.
Berhati-hati dengan ALL PRIVILEGES — berikannya hanya kepada peranan yang benar-benar memerlukan kawalan penuh terhadap objek tersebut.
-- Grant full access to db_admin on a table
GRANT ALL PRIVILEGES ON employees TO db_admin;
-- Or the shorthand form
GRANT ALL ON orders TO db_admin;Menarik Balik Keistimewaan
Pernyataan REVOKE membuang keistimewaan yang sebelum ini diberikan kepada peranan atau pengguna. Beginilah cara anda mengetatkan akses apabila keperluan berubah atau apabila peranan tidak lagi memerlukan keizinan tertentu.
Selepas REVOKE, peranan yang terjejas akan kehilangan keistimewaan yang ditentukan pada objek bernama itu serta-merta.
-- Remove UPDATE access from app_writer
REVOKE UPDATE ON orders FROM app_writer;
-- Remove all privileges from a role
REVOKE ALL PRIVILEGES ON employees FROM readonly_user;Memberikan Peranan kepada Pengguna
Dalam PostgreSQL, pengguna juga ialah peranan — peranan dengan atribut LOGIN boleh menyambung ke pangkalan data. Anda memberikan peranan kumpulan kepada peranan log masuk menggunakan GRANT role TO user.
Selepas diberikan, pengguna mewarisi semua keistimewaan yang dimiliki oleh peranan tersebut, menjadikan pengurusan keizinan untuk ramai pengguna sekali gus lebih mudah.
-- Create a login user
CREATE ROLE alice WITH LOGIN PASSWORD 'secret123';
-- Assign the readonly role to alice
GRANT readonly_user TO alice;
-- Alice can now SELECT on tables granted to readonly_userMenarik Balik Peranan daripada Pengguna
Untuk membuang pemberian peranan daripada pengguna, gunakan REVOKE role FROM user. Selepas itu, pengguna tidak lagi mewarisi keistimewaan yang datang bersama peranan tersebut.
Ini berguna apabila seorang pekerja bertukar tanggungjawab atau meninggalkan organisasi — anda boleh menarik balik peranannya tanpa mengubah definisi keistimewaan peranan itu sendiri.
-- Remove the readonly role from alice
REVOKE readonly_user FROM alice;
-- Alice no longer has SELECT on tables via that roleKeistimewaan Peringkat Schema
Sebelum peranan boleh mengakses sebarang objek dalam schema, peranan itu memerlukan keistimewaan USAGE pada schema tersebut. Tanpanya, peranan yang mempunyai SELECT pada jadual tertentu pun tidak boleh membaca data kerana tidak dapat menentukan laluan schema.
Sentiasa berikan USAGE pada schema bersama-sama keistimewaan peringkat objek.
-- Allow readonly_user to see inside the public schema
GRANT USAGE ON SCHEMA public TO readonly_user;
-- Then grant table-level privilege
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;Keistimewaan Lalai untuk Objek Akan Datang
Apabila jadual baharu dicipta dalam schema, peranan sedia ada tidak mendapat akses kepadanya secara automatik. Gunakan ALTER DEFAULT PRIVILEGES untuk memastikan objek akan datang yang dicipta oleh peranan tertentu boleh diakses secara automatik oleh peranan lain.
Ini mengelakkan masalah biasa apabila jadual yang baru dicipta tidak kelihatan kepada peranan aplikasi sehingga seseorang teringat untuk menjalankan GRANT secara manual.
-- Future tables created by the current user will be SELECTable by readonly_user
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO readonly_user;
-- Future tables will allow INSERT/UPDATE/DELETE for app_writer
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_writer;WITH GRANT OPTION
Secara lalai, peranan yang menerima keistimewaan tidak boleh menyerahkan keistimewaan itu kepada peranan lain. Menambahkan WITH GRANT OPTION membolehkan penerima turut memberikan keistimewaan tersebut kepada pihak lain.
Gunakan ciri ini dengan berhati-hati — ini bermakna peranan tersebut menjadi titik pewakilan yang dipercayai untuk kawalan akses, yang boleh menyukarkan pengauditan jika digunakan secara berlebihan.
-- app_writer can now grant SELECT on orders to other roles
GRANT SELECT ON orders TO app_writer WITH GRANT OPTION;
-- app_writer can then do:
-- GRANT SELECT ON orders TO reporting_role;Melihat Keistimewaan yang Diberikan
PostgreSQL menyimpan maklumat keistimewaan dalam paparan katalog sistem. Anda boleh membuat pertanyaan pada information_schema.role_table_grants untuk melihat peranan yang telah diberikan keistimewaan tertentu pada jadual tertentu.
Perintah garis miring songsang \dp tablename dalam psql turut memaparkan senarai keistimewaan akses bagi jadual dalam format yang padat.
-- List all table-level grants in the current database
SELECT grantee, table_schema, table_name, privilege_type
FROM information_schema.role_table_grants
WHERE table_schema = 'public'
ORDER BY grantee, table_name;Semakan Pantas
Uji kefahaman anda tentang peranan dan keistimewaan dalam SQL.
Ulang Kaji: Peranan dan Keistimewaan
Dalam pelajaran ini, anda telah mempelajari cara SQL mengurus kawalan akses melalui peranan dan keistimewaan:
- CREATE ROLE mentakrifkan peranan baharu atau akaun pengguna
- GRANT memberikan keistimewaan (SELECT, INSERT, UPDATE, DELETE, ALL) pada objek kepada peranan
- REVOKE membuang keistimewaan tersebut
- GRANT peranan TO pengguna memberikan peranan kumpulan kepada pengguna log masuk supaya pengguna itu mewarisi keistimewaannya
- Peranan memerlukan USAGE pada schema sebelum boleh mengakses objek di dalamnya
- ALTER DEFAULT PRIVILEGES memastikan objek akan datang boleh diakses secara automatik
- WITH GRANT OPTION membolehkan penerima menyerahkan keistimewaan itu kepada pihak lain
Mengekalkan keistimewaan pada tahap minimum dan berasaskan peranan ialah prinsip utama reka bentuk pangkalan data yang selamat — berikan hanya perkara yang diperlukan dan tarik balik keistimewaan dengan segera apabila tidak lagi diperlukan.
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Soalan Lazim
Adakah pelajaran “Peranan dan Keistimewaan” percuma?
Ya — teks penuh “Peranan dan Keistimewaan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Peranan dan Keistimewaan”?
Berikan dan tarik balik akses dengan GRANT dan REVOKE. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Peranan dan Keistimewaan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Peranan dan Keistimewaan
- Dasar Keselamatan Aras Baris
- Kebenaran Aras Lajur
- Mengaudit Akses