Files
web/deployment/init-postgres.sql.template
T

42 lines
2.4 KiB
Plaintext

-- PostgreSQL initialization script for FromChat compliance architecture
-- Creates separate databases and users for each service with minimal required permissions
-- Create users with passwords from environment variables
-- Variables are substituted by envsubst before PostgreSQL runs this script
CREATE USER main_user WITH PASSWORD '${MAIN_DB_PASSWORD}';
CREATE USER messaging_user WITH PASSWORD '${MESSAGING_DB_PASSWORD}';
CREATE USER file_storage_user WITH PASSWORD '${FILE_STORAGE_DB_PASSWORD}';
-- Create databases for each service
CREATE DATABASE fromchat_main OWNER main_user;
CREATE DATABASE fromchat_messaging OWNER messaging_user;
CREATE DATABASE fromchat_files OWNER file_storage_user;
-- Connect to main database and set up
\c fromchat_main
CREATE SCHEMA IF NOT EXISTS fromchat_main AUTHORIZATION main_user;
GRANT ALL PRIVILEGES ON DATABASE fromchat_main TO main_user;
GRANT ALL PRIVILEGES ON SCHEMA fromchat_main TO main_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA fromchat_main TO main_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA fromchat_main GRANT ALL ON TABLES TO main_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA fromchat_main GRANT ALL ON SEQUENCES TO main_user;
-- Connect to messaging database and set up
\c fromchat_messaging
CREATE SCHEMA IF NOT EXISTS fromchat_messaging AUTHORIZATION messaging_user;
GRANT ALL PRIVILEGES ON DATABASE fromchat_messaging TO messaging_user;
GRANT USAGE ON SCHEMA fromchat_messaging TO messaging_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA fromchat_messaging TO messaging_user;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA fromchat_messaging TO messaging_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA fromchat_messaging GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO messaging_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA fromchat_messaging GRANT USAGE ON SEQUENCES TO messaging_user;
-- Connect to files database and set up
\c fromchat_files
CREATE SCHEMA IF NOT EXISTS fromchat_files AUTHORIZATION file_storage_user;
GRANT ALL PRIVILEGES ON DATABASE fromchat_files TO file_storage_user;
GRANT USAGE ON SCHEMA fromchat_files TO file_storage_user;
GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA fromchat_files TO file_storage_user;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA fromchat_files TO file_storage_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA fromchat_files GRANT SELECT, INSERT, UPDATE ON TABLES TO file_storage_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA fromchat_files GRANT USAGE ON SEQUENCES TO file_storage_user;