2023年12月18日发(作者:)
公司MYSQL数据库
权限分离管理分案报告
文档控制
此文档仅供公司驻场工程师与最终用户审阅,不得向与此无关的个人或机构传阅或复制。
修改记录
分发者
审阅记录
日期 作者 版本 修改记录
姓名 职位
姓名 职位
目录
第一章
1.1
1.2
1.3
1.4
1.5
1.6
1.7
第二章
2.1
2.2
账号管理 ................................................................................................................................. 3
数据库账号分类 ..................................................................................................................... 3
普通账号管理 ......................................................................................................................... 4
程序账号管理 ......................................................................................................................... 5
超级账号管理 ......................................................................................................................... 6
内置账号管理 ......................................................................................................................... 8
口令管理 ................................................................................................................................. 8
账号审计、审阅 ..................................................................................................................... 9
权限管理 ................................................................................................................................. 9
权限分配原则 ......................................................................................................................... 9
权限等级 ............................................................................................................................... 10
2.2.1 sysdba .............................................................................................................................. 10
2.2.2 dba .................................................................................................................................. 10
2.2.3 schema所有者 ............................................................................................................... 10
2.2.4 普通用户 ......................................................................................................................... 11
限制dba权限 ....................................................................................................................... 11
权限分离一:创建新dba角色 ........................................................................................... 12
权限分离二:创建不同的角色 ........................................................................................... 12
2.3
2.4
2.5
账号管理
数据库账号分类
(1) 普通账号:指个人维护账号,在数据库中为其设置统一的配置文件(例如PROFILE_WEIHU),包括了广发银行员工及第三方合作单位的个人维护账号。
(2) 程序账号:指应用程序用于连接数据库的账号,可以执行相应的查询、插入、更新、
删除数据等操作,程序账号在数据库中统一设置其配置文件为PROFILE_APP。
(3) 超级账号:指数据库系统中能够以sysdba身份登录,或拥有dba角色等同权限的数据库账号。
(4) 内置账号:指使用dbca工具创建数据库时,系统自动建立的默认账号,或采用oracle自带脚本建立的账号;除sys外,其他账号一般不能为个人使用。
普通账号管理
(1) 普通账号命名规则
账号类型
个人维护账号
适用范围
权限相对比较低,长期授予指定的个人
账号子类型
广发银行员工账号
账号命名规则
部门拼音简写_个人姓名全拼
合作单位个人维护账号 合作单位拼音简写_个人姓名全拼
账号使用人在申请新建账号前,按照以上规则确定账号名。
(2) 普通账号变更流程(包括账号的新建、修改和删除)
<普通帐号管理流程>适用于广发银行员工、第三方维护人员的从帐号的增、删、改等变更及账号的临时使用。申请人帐号所属系统负责人帐号管理员审计管理员01.入职/转岗/离职/临时使用申请人为帐号归属人或归属人直属部室经理01.提出帐号变更申请否02.审批是03.接受申请04.按照要求在进行变更或提交系统侧完成变更事后定期审计05.通知申请人06.根据审计要求对该帐号进行审计
程序账号管理
(1) 程序账号通常以配置文件有方式写入到相关的程序配置文件中,原则上不授予个人使用,如因特殊情况,必须使用程序账号才能完成相应工作,则需根据账号变更管理流程,向所在部门主管提出申请,由系统负责人确认和审批后,才由账号管理员临时授
予相应程序账号的使用权。使用完后由账号管理员根据申请时限进行权限回收。
(2) 程序账号的使用由各系统负责人管理,包括账号权限变更管理、定期审阅和口令的维护。
超级账号管理
(1) 对系统超级用户的账号的使用仅限于经授权的系统管理人员。对操作系统级和数据库层超级用户账号,由系统管理员根据人员变动填写《超级管理员账号授权审批表》,由系统主管部门负责人审核确认后方可授权。具体流程参阅“超级管理员账号权限变更管理流程”。
<超级管理员账号权限变更管理流程>适用于广发银行业务系统超级账号管理员权限的增、删、改等变更和超级账号移交。系统管理员审批人账号管理员审计管理员01.工作岗位需求02.提出超级账号管理员权限变更申请否03.审批是04.在系统侧按照要求对变更权限05.通知申请人06.根据审计要求对账号角色进行审计
(2) 若第三方厂商人员需要使用超级用户账号,应和第三方厂商签订相关的安全保密协议,以合理确保第三方厂商能够执行广发银行的安全管理要求和职责不相容要求(如系统开发人员和维护人员的职责分工),并根据账号变更管理流程填写表单,向所在部门主管提出申请,由系统负责人确认,并通过系统主管部门负责人审核确认后方可授权。
内置账号管理
(1) 对于数据库运行无需使用的内置账号进行锁定,不允许个人使用。
(2) 对内置账号的目录/文件访问权限严格限制在该账号的功能范围内并定期检查。对该类账号的操作要保留日志并定期审阅。
口令管理
(1) 可以接触到口令的人群应限制在最小范围以内。用户有责任保护好个人账号及口令的安全,各级口令不得以任何形式存放于可公共访问的设备中,严禁将账号和口令以任何方式保存在本地或其他媒介。
(2) 密码应至少每90天进行更新,密码长度应至少8位或以上,密码应由大小写字母、数字以及特殊符号至少2种字符组成,且不应为任何有意义的短语(汉语拼音、常用单词、常用命令以及个人信息等)。在技术可行或不影响业务生产的情况下,应限制不得使用最近5次以内重复的密码,且密码重复尝试5次以上应暂停该数据库账号登录。
(3) 对于无法进行定期修改口令的程序账号等,应由账号管理员负责督促落实口令修改工作。
(4) 需要修改口令时,申请人需提交账号变更表单,经过相关负责人审批后,由账号管理员完成,并保留修改日志,以备审计。
(5) 普通账号由使用人自行维护其口令,并在账号口令过期之前(90天内)完成其账号的口令的修改。
(6) 当账号使用者违反了有关口令管理规定或有迹象表明口令可能已经泄露时,应立即锁定账号或进行口令修改,并登记备案。
(7) 安全管理员应对系统中的账号口令策略进行定期抽查,对不符合要求的及时组织整改。
(8) 掌握口令管理员离开岗位后,相关口令必须立即更改。
(9) 数据库超级账号口令由数据库管理员负责维护,并定期更新。严禁未经账号审批人员的许可使用超级账号及口令。如发生丢失或遗忘口令的情况,超级账号管理员应立即通知账号审批人员寻求解决办法。
(10) 程序账号口令需要保存在某文件里面情况下,改为不可读文件、并控制文件只能是对应程序访问。程序账号及口令不能用于日常运维管理,不能供用户使用,严禁扩散。
(11) 内置于业务系统源代码中的数据库调用中的用户名、明文密码,应当进行应用系统改造或使用不可读的配置文件来实现。
账号审计、审阅
(1) 由安全审计员负责账号的审计工作,定期完成账号审阅。
(2) 每季度审计管理员根据超级管理员以及系统应用层超级管理员的清单,结合系统权限和用户职责(或用户角色)矩阵表,对用户的访问权限进行审计,以避免用户的权限中有不兼容职责的存在,清理长期不使用的无效帐号,定期扫描整改帐号弱口令,定期梳理全部帐号,确保帐号的完整性和准确性。
(3) 每半年及业务流程发生重大变更时,审计管理员对系统普通账号的清单,结合系统权限和用户职责(或用户角色)矩阵表,对访问权限进行审计,以避免用户的权限中有不兼容职责的存在,如发现多余或不恰当的帐号或权限应进行及时调整。
(4) 对于部分因系统接口原因在系统中预设的用户帐号,应对接口程序、脚本或相关设置进行加密或实施访问控制,以防止未经授权的访问。对内置帐号的目录/文件访问权限严格限制在该帐号的功能范围内并定期检查。在系统作定期维护时对密码作更改,对该类帐号的操作要保留日志并定期审阅。
(5) 账号管理员不得负责所辖系统的数据库账号及口令的审计工作。
权限管理
权限分配原则
最小化原则,宁少勿滥,尤其对any系统权限,需要谨慎控制
权限等级
sysdba
数据库系统管理员,sys用户默认具有sysdba权限。
可以进行如下管理活动:
启动和关闭数据库
挂载、打开、备份数据库,并且修改字符集
创建数据库
删除数据库
创建服务器参数文件
更改数据库归档模式
执行数据库恢复操作,包括完全恢复和不完全恢复
启用限制会话模式
通常通过操作系统认证,是权限最高的oracle数据库用户,可以认为,sysdba用户,可以对数据库做任任何事情。
dba
数据库管理员,system用户默认具有dba权限:
dba用户可以进行日常的大多数数据库维护操作,可创建、修改、删除任何大多数数据库对象,可创建用户,可修改用户,可修改数据库、数据库系统配置,可审计、调优数据库,可建立自制任务,可影响会话,可备份任何表等等,权限等级仅次于sysdba。
schema所有者
在创建某个用户,并且该用户创建了一些数据库对象(当然,前提是具有相应的create或者create any 的权限),oracle会默认创建并维护一个schema,并且,该用户具有对所创建用户的all权限。
通常,某个用户作为数据库主要的开发用户,赋予该用户connect + resource角色权限即可,connect角色中包含create session系统权限,resource角色权限。
如果该用户需要创建物化视图,则需要另外赋予系统权限:
CREATE MATERIALIZED VIEW
普通用户
在创建普通用户后,应首先赋予create session系统权限,或者connect角色权限,并限定使用的默认表空间及表空间配额。普通用户默认具有public角色权限,public角色。
普通用户的权限需要做到细粒度控制:需要的时候给,不需要的时候立即取消权限。对表的访问,可建立合理视图,再赋予普通用户视图的select权限。对于procedure,切忌赋予execute any procedure权限!!!对于表的更改、插入操作,需要普通用户操作的,可以建立procedure,并赋予该普通用户execute权限。注意在procedure做好审计记录。
限制dba权限
dba对业务数据访问的权限,可以是以下几种:
dba本身具有SELECT ANY TABLE的系统权限,可以访问业务数据;
dba本身具有GRANT ANY PRIVILEGE的权限,可以给自己赋予SELECT ANY TABLE的权限,从而访问业务数据;
dba本身具有GRANT ANY OBJECT PRIVILEGE的权限,可以给自己赋予对相应业务数据表的访问权限,以实现访问目的;
dba本身具有DATAPUMP_IMP_FULL_DATABASE、OLAP_DBA等角色权限,这些角色权限中具有select any table的系统权限,或者GRANT ANY PRIVILEGE、GRANT ANY
OBJECT PRIVILEGE的权限,也可以通过相应的赋权,获得对业务数据的访问。
dba本身具有EXECUTE ANY PROCEDURE的权限,可以通过一些系统包的存储过程,实现给自己赋权,从而访问业务数据。
dba具有ALTER USER的权限,可以通过修改相应schema用户的密码,用shemale
user连接数据库,访问业务数据。
要限制dba对业务数据的访问,就要将这些方面杜绝。为此,建议创建新的dba角色,
将敏感的、不需要的权限,从dba角色中剔除,再建立新的dba账户时,赋予新的dba角色,以起到限制dba的目的。
注意:不要试图直接修改dba角色的权限,这个操作很危险!!!
权限分离一:创建新dba角色
直接修改数据库原有的dba角色是不可能的,我们可以为自己的运维工作创建保留自身要求的dba角色。以下包含了限制dba需要的sql脚本,包括获得dba角色权限的脚本,应该赋予自定义dba角色权限的脚本,以及去掉的权限,仅供参考:
(1) 创建新dba用户,获得dba角色权限的脚本,赋权脚本
(2) 去掉的权限
权限分离二:创建不同的角色
权限分离的基础在于为创建不同的角色,再根据用户的需要分派不同的角色。
以下是一个角色划分的样子,仅供参考:
编号 划分依据
角色名称(命名规则)
角色中文名称
普通维护只读
角色简述
拥有查询任意数据字典,序列权限
角色详细定义或相关表
CREATE SESSION
SELECT ANY DICTIONARY
SELECT ANY SEQUENCE
CREATE SESSION
在自己的帐号下有以下权CREATE TABLE
CREATE SYNONYM
CREATE PROCEDURE
UNLIMITED TABLESPACE
1 基本维护 A1_WH_RO
2 基本维护 A1_WH_WO
普通维护只写
限:建表,建视图,建存储序列等系统权限
过程,包,触发器,同义词,CREATE TRIGGER
EXECUTE ON DBMS_WORKLOAD_REPOSITORY
CREATE SESSION
3 基本维护 A1_WH_HRO
高权限维护只读
拥有查询任意表,数据字典,过程,序列权限及
SELECT ANY TABLE
SELECT ANY DICTIONARY
EXECUTE ANY PROCEDURE
SELECT ANY SEQUENCE
CREATE SESSION
INSERT ANY TABLE
拥有插入、更新、删除任意表数据、执行任意过程、序列权限在自己的帐号下要建存储过程,包,触发器,同义词,序列,无限制表空间等系统权限
DELETE ANY TABLE
UPDATE ANY TABLE
EXECUTE ANY PROCEDURE
CREATE TABLE
CREATE SYNONYM
CREATE TRIGGER
CREATE PROCEDURE
UNLIMITED TABLESPACE
CREATE DATABASE LINK
ALTER SESSION
ALTER ANY PROCEDURE
ALTER ANY SEQUENCE
ALTER ANY TABLE
ALTER ANY TRIGGER
DEBUG ANY PROCEDURE
DEBUG CONNECT SESSION
DROP ANY TABLE
DROP ANY VIEW
DROP ANY PROCEDURE
UPDATE ANY TABLE
INSERT ANY TABLE
DELETE ANY TABLE
CREATE ANY VIEW
CREATE ANY INDEX
UNLIMITED TABLESPACE
LOCK ANY TABLE
SELECT ANY TABLE
SELECT ANY DICTIONARY
4 基本维护 A1_WH_HWO
高权限维护只写
有以下权限:建表,建视图,SELECT ANY SEQUENCE
版本发布5 基本维护 A1_WH_REL
及
割接高权限角色
拥有创建、删除任意表、过程、锁表、导出数据库数据、无限制表空间、查询所有表、建触发器、查询所有表,修改所有表权限
grant CREATE SESSION TO A1_WH_DBA;
grant FLASHBACK ANY TABLE to A1_WH_DBA;
grant ALTER SESSION to A1_WH_DBA;
grant UNLIMITED TABLESPACE to A1_WH_DBA;
在自己的帐号下要有以下grant SELECT ANY DICTIONARY to A1_WH_DBA;
grant CONNECT to A1_WH_DBA;
grant EXECUTE_CATALOG_ROLE to A1_WH_DBA;
grant IMP_FULL_DATABASE to A1_WH_DBA;
grant GATHER_SYSTEM_STATISTICS to A1_WH_DBA;
grant SELECT_CATALOG_ROLE to A1_WH_DBA;
grant OEM_MONITOR to A1_WH_DBA;
grant EXP_FULL_DATABASE to A1_WH_DBA;
grant SCHEDULER_ADMIN to A1_WH_DBA;
grant RESOURCE to A1_WH_DBA;
grant OEM_ADVISOR to A1_WH_DBA;
数据库维6 基本维护 A1_WH_DBA 护DBA角色
权限:建表,建视图,建存储过程,包,触发器,同义词,序列,删除索引、修改索引、修改表、导入数据库对象、导出数据库对象
RMAN备份7 基本维护 A1_WH_BAK 角色,超级DBA
[程序账6 业务模块
B1_程序账号名_RO
号对应模块]非敏感只读角色
[程序账7 业务模块
B1_程序账号名_WO
号对应模块]非敏感只写角色
[程序账8 业务模块
B1_程序账号名_MGRO
号对应模块]敏感只读角色
[程序账9 业务模块
B1_程序账号名_MGWO
号对应模块]敏感只写角色
在自己的帐号下要有做数据库全备的权限
CREATE SESSION
SYSDBA
对[数据库名][账号名]账号非敏感表有只读权限
对[数据库名][账号名]账号非敏感表有只写权限
对[数据库名][账号名]账号敏感表有只读权限
对[数据库名][账号名]账号敏感表有只写权限


发布评论