sql >> Database teknologi >  >> RDS >> PostgreSQL

Opret PostgreSQL 9-rolle med login (bruger) bare for at udføre funktioner

Udfør dette forbundet med den database, du vil konfigurere.

-- Create the user. CREATE ROLE somebody WITH LOGIN PASSWORD '...'; -- Prevent all authenticated users from being able to use the database, -- unless they have been explicitly granted permission. REVOKE ALL PRIVILEGES ON DATABASE foo FROM PUBLIC; REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM PUBLIC; REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM PUBLIC; REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM PUBLIC; -- Allow the user to only use the specified functions. GRANT CONNECT ON DATABASE foo TO somebody; GRANT EXECUTE ON FUNCTION return_customers(), return_time() TO somebody;

Hvis du har flere skemaer end "offentlige", bliver du nødt til at tilføje dem til de to REVOKE ALL PRIVILEGES ON ALL ... udsagn.

Glem ikke, at funktionerne skal være oprettet med SECURITY DEFINER eller denne bruger vil stadig ikke være i stand til at udføre dem, da indholdet af funktionen vil blive udført med denne brugers tilladelser i stedet for den bruger, der oprettede funktionen.

Se:




  1. Valg af første række pr. gruppe

  2. Generering af flere rækker fra en enkelt række baseret på datoer

  3. Hvordan vælger man data fra en tabel, hvor tabelnavnet har tomme mellemrum?

  4. Lagret procedure med tabelnavn som parameter