北大荒建设集团有限公司网站sae网站备案
2026/4/6 10:53:31 网站建设 项目流程
北大荒建设集团有限公司网站,sae网站备案,怎么做一个企业的网站,网站管理系统 php文章目录一、权限概述1.1 为什么权限管理至关重要#xff1f;1.2 安全检查清单1.3 权限管理核心原则二、PostgreSQL 权限体系全景图1. 核心概念层级2. 权限类型速查表三、角色#xff08;Roles#xff09;管理#xff1a;权限的载体1. 创建角色#xff08;用户/组#xf…文章目录一、权限概述1.1 为什么权限管理至关重要1.2 安全检查清单1.3 权限管理核心原则二、PostgreSQL 权限体系全景图1. 核心概念层级2. 权限类型速查表三、角色Roles管理权限的载体1. 创建角色用户/组2. 角色继承与成员关系四、数据库级权限1. 授权连接与创建对象2. 默认权限关键五、Schema 级权限1. 基础权限2. 安全建议六、表级权限最常用1. 基础 CRUD 授权2. 列级权限敏感数据保护3. 序列权限自增ID七、函数与存储过程权限八、权限查询与审计1. 查看对象权限2. 查看角色拥有的权限3. 使用 psql 快捷命令九、企业级权限管理流程场景为新微服务 order-service 配置权限步骤 1创建专用角色步骤 2授权数据库连接步骤 3授权 Schema 权限步骤 4授权表权限步骤 5设置默认权限防遗漏步骤 6验证权限十、高级技巧与陷阱规避1. 权限回收REVOKE2. PUBLIC 角色陷阱3. 权限与 Ownership4. RLS行级安全补充适用版本PostgreSQL 12语法兼容 10目标读者DBA、后端开发、运维工程师核心价值从零构建企业级权限体系避免“删库跑路”风险一、权限概述1.1 为什么权限管理至关重要PostgreSQL 的权限模型是其安全基石。错误的权限配置可能导致数据泄露如普通用户读取users.password服务中断如应用账号误删表权限蔓延如开发人员拥有SUPERUSER合规失败违反 GDPR、等保要求黄金法则最小权限原则Principle of Least Privilege1.2 安全检查清单部署前必查所有应用账号无SUPERUSER权限敏感表如users已限制列权限publicschema 已禁用CREATE默认权限已配置无多余PUBLIC权限密码符合复杂度要求用scram-sha-256防火墙限制数据库端口访问 IP1.3 权限管理核心原则分层授权Database → Schema → Table → Column角色驱动用非登录角色作为权限容器默认权限防止新对象权限遗漏最小特权只给必要权限定期审计自动化用脚本管理权限避免手工操作记住权限体系不是“一次配置终身无忧”而是需要持续维护的安全防线。二、PostgreSQL 权限体系全景图1. 核心概念层级Cluster (实例) └── Database (数据库) ├── Schema (模式) │ ├── Table/View/Sequence (对象) │ └── Function (函数) └── Roles (角色) → 权限载体2. 权限类型速查表对象类型可授权权限关键说明DATABASECONNECT,CREATE,TEMPORARYCONNECT是基础SCHEMAUSAGE,CREATEUSAGE允许访问对象TABLESELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER列级权限需单独授权COLUMNSELECT,INSERT,UPDATE高敏感字段保护SEQUENCEUSAGE,SELECT,UPDATE自增ID控制FUNCTIONEXECUTE存储过程调用ALL PRIVILEGES所有权限慎用不包含GRANT OPTION注意GRANT OPTION允许被授权者再授权默认不包含三、角色Roles管理权限的载体PostgreSQL 中用户 角色 LOGIN 属性1. 创建角色用户/组-- 创建登录用户带密码CREATEROLE app_userWITHLOGIN PASSWORDStrongPass123!;-- 创建非登录角色用于权限分组CREATEROLE read_only;CREATEROLE data_writer;-- 创建超级用户极度危险仅限DBACREATEROLE dba_adminWITHSUPERUSER CREATEDB CREATEROLE LOGIN PASSWORD...;2. 角色继承与成员关系-- 将用户加入权限组自动继承权限GRANTread_onlyTOapp_user;GRANTdata_writerTOapp_user;-- 查看角色成员\du app_user最佳实践用非登录角色作为权限容器如read_only用户只加入必要角色避免直接授权四、数据库级权限1. 授权连接与创建对象-- 允许角色连接数据库GRANTCONNECTONDATABASEmyappTOapp_user;-- 允许在数据库中创建临时表GRANTTEMPORARYONDATABASEmyappTOapp_user;-- 允许创建新 schema通常只给管理员GRANTCREATEONDATABASEmyappTOdba_admin;2. 默认权限关键新创建的对象不会自动继承权限需设置默认权限-- 设置未来在 public schema 创建的表自动授权 SELECT 给 read_onlyALTERDEFAULTPRIVILEGESFORROLE db_owner-- 对象创建者INSCHEMApublicGRANTSELECTONTABLESTOread_only;-- 设置序列 USAGE 权限ALTERDEFAULTPRIVILEGESFORROLE db_ownerINSCHEMApublicGRANTUSAGEONSEQUENCESTOdata_writer;血泪教训忘记设默认权限 → 新表无法被应用访问五、Schema 级权限1. 基础权限-- 允许使用 schema必须先有此权限才能访问内部对象GRANTUSAGEONSCHEMApublicTOapp_user;-- 允许在 schema 中创建对象表/函数等GRANTCREATEONSCHEMAanalyticsTOdata_scientist;2. 安全建议不要滥用publicschema生产环境建议创建专用 schema如app_schema限制public权限REVOKECREATEONSCHEMApublicFROMPUBLIC;-- 禁止所有用户在 public 建表六、表级权限最常用1. 基础 CRUD 授权-- 授权完整 CRUDGRANTSELECT,INSERT,UPDATE,DELETEONTABLEordersTOdata_writer;-- 只读权限GRANTSELECTONTABLEusersTOread_only;-- 授权所有表慎用GRANTSELECTONALLTABLESINSCHEMApublicTOread_only;2. 列级权限敏感数据保护-- 只允许读取非敏感列GRANTSELECT(id,name,email)ONTABLEusersTOapp_user;-- 禁止更新密码列GRANTUPDATE(name,email)ONTABLEusersTOapp_user;-- 注意未授权的列将无法 UPDATE3. 序列权限自增ID-- 允许获取下一个 IDINSERT 必需GRANTUSAGEONSEQUENCE orders_id_seqTOdata_writer;-- 允许查看当前值调试用GRANTSELECTONSEQUENCE orders_id_seqTOread_only;七、函数与存储过程权限-- 授权执行函数GRANTEXECUTEONFUNCTIONcalculate_discount(numeric)TOapp_user;-- 授权所有函数GRANTEXECUTEONALLFUNCTIONSINSCHEMApublicTOapp_user; 函数权限独立于表权限即使无表 SELECT 权限仍可执行返回数据的函数。八、权限查询与审计1. 查看对象权限-- 查看表权限SELECTgrantee,privilege_typeFROMinformation_schema.role_table_grantsWHEREtable_nameorders;-- 查看列权限SELECTgrantee,column_name,privilege_typeFROMinformation_schema.column_privilegesWHEREtable_nameusers;2. 查看角色拥有的权限-- 查看角色能访问哪些表SELECTtable_schema,table_name,privilege_typeFROMinformation_schema.table_privilegesWHEREgranteeapp_user;-- 查看默认权限SELECT*FROMpg_default_acl;3. 使用 psql 快捷命令-- 列出数据库权限\l myapp -- 列出 schema 权限\dn public -- 列出表权限\dp orders九、企业级权限管理流程场景为新微服务order-service配置权限步骤 1创建专用角色-- 权限组角色非登录CREATEROLE order_reader;CREATEROLE order_writer;-- 应用用户CREATEROLE order_appWITHLOGIN PASSWORD...;GRANTorder_reader,order_writerTOorder_app;步骤 2授权数据库连接GRANTCONNECTONDATABASEecommerceTOorder_app;步骤 3授权 Schema 权限-- 假设使用专用 schemaCREATESCHEMAIFNOTEXISTSorder_schemaAUTHORIZATIONdb_owner;GRANTUSAGEONSCHEMAorder_schemaTOorder_reader;GRANTCREATEONSCHEMAorder_schemaTOdb_owner;-- 仅 DBA步骤 4授权表权限-- 只读表GRANTSELECTONTABLEorder_schema.productsTOorder_reader;-- 读写表GRANTSELECT,INSERT,UPDATEONTABLEorder_schema.ordersTOorder_writer;GRANTUSAGEONSEQUENCE order_schema.orders_id_seqTOorder_writer;-- 敏感表禁止访问-- 不授权 payment_cards 表步骤 5设置默认权限防遗漏ALTERDEFAULTPRIVILEGESFORROLE db_ownerINSCHEMAorder_schemaGRANTSELECTONTABLESTOorder_reader;ALTERDEFAULTPRIVILEGESFORROLE db_ownerINSCHEMAorder_schemaGRANTSELECT,INSERT,UPDATEONTABLESTOorder_writer;步骤 6验证权限-- 切换到应用用户测试SETROLE order_app;-- 应成功SELECT*FROMorder_schema.productsLIMIT1;INSERTINTOorder_schema.orders(...)VALUES(...);-- 应失败权限拒绝SELECT*FROMpayment_cards;-- 表不存在或权限拒绝十、高级技巧与陷阱规避1. 权限回收REVOKE-- 回收表权限REVOKEDELETEONTABLElogsFROMapp_user;-- 回收角色成员REVOKEdata_writerFROMapp_user;-- 回收默认权限ALTERDEFAULTPRIVILEGESFORROLE db_ownerINSCHEMApublicREVOKESELECTONTABLESFROMread_only;⚠️注意REVOKE不会级联影响已存在的对象需手动处理。2. PUBLIC 角色陷阱PUBLIC是隐式包含所有角色的特殊角色默认权限可能通过PUBLIC泄露-- 检查危险的 PUBLIC 权限SELECT*FROMinformation_schema.role_table_grantsWHEREgranteePUBLIC;加固建议REVOKEALLONDATABASEmyappFROMPUBLIC;REVOKEALLONSCHEMApublicFROMPUBLIC;3. 权限与 Ownership对象所有者Owner自动拥有所有权限且不能被 REVOKE转移所有权ALTERTABLEorders OWNERTOdb_owner;4. RLS行级安全补充当需要动态行过滤如多租户配合使用 RLS-- 启用行级安全ALTERTABLEtenant_dataENABLEROWLEVELSECURITY;-- 创建策略用户只能看自己的数据CREATEPOLICY tenant_isolationONtenant_dataUSING(tenant_idcurrent_setting(app.current_tenant)::int);RLS 是权限体系的强力补充但不替代基础权限。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询