PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Създайте PostgreSQL 9 роля с вход (потребител) само за изпълнение на функции

Изпълнете това свързано към базата данни, която искате да конфигурирате.

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

Ако имате повече схеми от „обществени“, тогава ще трябва да ги добавите към двете REVOKE ALL PRIVILEGES ON ALL ... изявления.

Не забравяйте, че функциите трябва да са създадени с SECURITY DEFINER или този потребител пак няма да може да ги изпълни, тъй като съдържанието на функцията ще бъде изпълнено с разрешенията на този потребител, вместо на потребителя, който е създал функцията.

Вижте:

  • CREATE FUNCTION особено SECURITY DEFINER
  • GRANT както за добавяне на потребители към роли, така и за присвояване на права за достъп до таблици, последователности и т.н.
  • REVOKE
  • CREATE ROLE



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да предотвратя SQL инжектиране с произволен JSONB низ на заявка, предоставен от външен клиент?

  2. Същият maven с различно поведение

  3. разрешението е отказано при опит за четене на csv файл с помощта на JDBC за база данни на postgres

  4. Как мога да накарам инсталирането на gem да работи на OS X Lion с Ruby 1.8.7 без сег неизправност?

  5. Създайте sql таблица от dask dataframe, като използвате map_partitions и pd.df.to_sql