PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Utwórz rolę PostgreSQL 9 z loginem (użytkownikiem) tylko po to, aby wykonywać funkcje

Wykonaj to w połączeniu z bazą danych, którą chcesz skonfigurować.

-- 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;

Jeśli masz więcej schematów niż „publiczne”, musisz dodać je do dwóch REVOKE ALL PRIVILEGES ON ALL ... oświadczenia.

Nie zapominaj, że funkcje musiały zostać utworzone za pomocą SECURITY DEFINER lub ten użytkownik nadal nie będzie mógł ich wykonać, ponieważ zawartość funkcji zostanie wykonana z uprawnieniami tego użytkownika, a nie użytkownika, który utworzył funkcję.

Zobacz:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql wybierz aż do osiągnięcia określonej łącznej kwoty

  2. Dodanie kolumny niedopuszczającej wartości null do istniejącej tabeli kończy się niepowodzeniem. Czy atrybut wartości jest ignorowany?

  3. Jak przerwać zapytanie RPostgresql w R

  4. Próba zmodyfikowania ograniczenia w PostgreSQL

  5. Lista ograniczeń dla wszystkich tabel z różnymi właścicielami w PostgreSQL