sudo -u postgres psql -c "CREATE ROLE myuser WITH LOGIN PASSWORD 'My$ecret' CREATEDB;"
② 定义业务角色并聚合最小权限集
CREATE ROLE analyst_readonly NOINHERIT;GRANT CONNECT ON DATABASE mydb TO analyst_readonly;GRANT USAGE ON SCHEMA public TO analyst_readonly;GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst_readonly;ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO analyst_readonly;
CREATE ROLE data_entry NOINHERIT;GRANT CONNECT ON DATABASE mydb TO data_entry;GRANT USAGE ON SCHEMA public TO data_entry;GRANT INSERT,UPDATE ON ALL TABLES IN SCHEMA public TO data_entry;按理说,ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT INSERT。UPDATE ON TABLES TO data_entry;
报表分析员
CREATE ROLE analyst_report NOINHERIT;GRANT CONNECT ON DATABASE mydb TO analyst_report;GRANT USAGE ON SCHEMA public TO analyst_report;GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst_report;GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO analyst_report;
怎么说呢,
SRE / 程序管理员
CREATE ROLE dba SUPERUSER CREATEROLE CREATEDB;
四、高效权限分配技巧:从“手工”到“自动化”
a) 使用模板快速批量创建使用者
a) 编写 CSV 文件,字段包括使用者名、密码、所属业务角色;b) 使用以下脚本一次性导入:
#!/bin/bash
while IFS=',' read -r username password role;按理说,do
sudo -u postgres psql -c "CREATE ROLE $username WITH LOGIN PASSWORD '$password';"
sudo -u postgres psql -c "GRANT $role TO $username;"
done
b) 利用 pgAdmin 的“查询工具”保存常用授权语句为 Snippet
Snippet 可以在图形界面直接点击执行,大幅降低手敲 SQL 的错误率。
A → R → C → S …其实, : 在对象树中快速打开“Create Role”。
Ctl+Shift+E : 打开 SQL 编辑器并自动填充当前选中对象的 DDL。
Ctl+Alt+L : 切换日志视图,实时查看授权变更记录。
五、审计与排错要点:防止“暗箱操作”成为安全漏洞
定期导出角色映射报告:SELECT rolname,member FROM pg_auth_members; 保存为 CSV,以便对比历史变化。
sudo -u postgres psql -c "CREATE ROLE myuser WITH LOGIN PASSWORD 'My$ecret' CREATEDB;"
② 定义业务角色并聚合最小权限集
CREATE ROLE analyst_readonly NOINHERIT;GRANT CONNECT ON DATABASE mydb TO analyst_readonly;GRANT USAGE ON SCHEMA public TO analyst_readonly;GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst_readonly;ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO analyst_readonly;
CREATE ROLE data_entry NOINHERIT;GRANT CONNECT ON DATABASE mydb TO data_entry;GRANT USAGE ON SCHEMA public TO data_entry;GRANT INSERT,UPDATE ON ALL TABLES IN SCHEMA public TO data_entry;按理说,ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT INSERT。UPDATE ON TABLES TO data_entry;
报表分析员
CREATE ROLE analyst_report NOINHERIT;GRANT CONNECT ON DATABASE mydb TO analyst_report;GRANT USAGE ON SCHEMA public TO analyst_report;GRANT SELECT ON ALL TABLES IN SCHEMA public TO analyst_report;GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO analyst_report;
怎么说呢,
SRE / 程序管理员
CREATE ROLE dba SUPERUSER CREATEROLE CREATEDB;
四、高效权限分配技巧:从“手工”到“自动化”
a) 使用模板快速批量创建使用者
a) 编写 CSV 文件,字段包括使用者名、密码、所属业务角色;b) 使用以下脚本一次性导入:
#!/bin/bash
while IFS=',' read -r username password role;按理说,do
sudo -u postgres psql -c "CREATE ROLE $username WITH LOGIN PASSWORD '$password';"
sudo -u postgres psql -c "GRANT $role TO $username;"
done
b) 利用 pgAdmin 的“查询工具”保存常用授权语句为 Snippet
Snippet 可以在图形界面直接点击执行,大幅降低手敲 SQL 的错误率。
A → R → C → S …其实, : 在对象树中快速打开“Create Role”。
Ctl+Shift+E : 打开 SQL 编辑器并自动填充当前选中对象的 DDL。
Ctl+Alt+L : 切换日志视图,实时查看授权变更记录。
五、审计与排错要点:防止“暗箱操作”成为安全漏洞
定期导出角色映射报告:SELECT rolname,member FROM pg_auth_members; 保存为 CSV,以便对比历史变化。