Role-Based Access Control (RBAC) & Least Privilege
Yetki Modeli & En Az Yetki Prensibi
Uygulama kullanıcısına ASLA superuser veya DDL izni vermeyin. Rol ayrımı, schema kısıtlamaları ve salt-okunur kullanıcı şablonları.
Motor Filtresi:
PostgreSQL • Uygulama Kullanıcısı (App User)
Yalnızca SELECT, INSERT, UPDATE, DELETE izinlerine sahiptir. DDL (DROP, ALTER, CREATE), TRUNCATE ve şema sahipliği kesinlikle yasaktır.
İzin VerilenlerSELECT, INSERT, UPDATE, DELETE, EXECUTE
YasaklananlarDROP, ALTER, TRUNCATE, SUPERUSER, DBA
SQL Şablonu:
-- PostgreSQL Least-Privilege App User
REVOKE ALL ON SCHEMA public FROM PUBLIC;
CREATE ROLE app_user WITH LOGIN PASSWORD 'strong_scram_pass';
GRANT USAGE ON SCHEMA public TO app_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;PostgreSQL • Raporlama & Analitik (Read-Only)
Yalnızca SELECT iznine sahiptir. Yazma, silme veya tablo kilitleme yetkisi yoktur. Statement timeout ile uzun sorguların kilit koyması engellenir.
İzin VerilenlerSELECT
YasaklananlarINSERT, UPDATE, DELETE, DDL, LOCK TABLE
SQL Şablonu:
-- Read-Only User with 30s Statement Timeout
CREATE ROLE bi_readonly WITH LOGIN PASSWORD 'strong_pass';
GRANT CONNECT ON DATABASE production_db TO bi_readonly;
GRANT USAGE ON SCHEMA public TO bi_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO bi_readonly;
ALTER ROLE bi_readonly SET statement_timeout = '30s';MySQL • Uygulama Kullanıcısı (App User)
MySQL üzerinde sadece belirlenen veritabanında DML yetkileri verilir. SUPER, FILE, SHUTDOWN, GRANT OPTION yasaklanır.
İzin VerilenlerSELECT, INSERT, UPDATE, DELETE, EXECUTE
YasaklananlarDROP, ALTER, SUPER, FILE, GRANT OPTION
SQL Şablonu:
-- MySQL Least-Privilege App User
CREATE USER 'app_user'@'10.0.4.%' IDENTIFIED WITH caching_sha2_password BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON app_db.* TO 'app_user'@'10.0.4.%';
FLUSH PRIVILEGES;