论系统安全架构设计及其应用
2021
试题二论系统安全架构设计及其应用
信息安全的特征是为了保证信息的机密性、完整性、可用性、可控性和不可抵赖性。信息系统的安全保障是以风险和策略为基础,在信息系统的整个生命周期中提供包括技术、管理、人员和工程过程的整体安全,在信息系统中保障信息的这些安全特征,并实现组织机构的使命。许多信息系统的用户需要提供一种方法和内容对信息系统的技术框架、工程过程能力和管理能力提出安全性要求,并进行可比性的评估、设计和实施。
请围绕“论系统安全架构设计及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你所参与管理或开发的软件项目,以及你在其中所承担的主要工作。
2.详细论述安全架构设计中鉴别框架和访问控制框架设计的内容,并论述鉴别和访问控制所面临的主要威胁,并说明其危害。
3.阐述你在软件开发的过程中都遇到了哪些实际问题及解决方法。
摘要:
2022年3月,我负责了某公司基于云原生理念的“自动化运维系统”的建设项目,由我担任系统架构设计师,负责系统架构设计工作,在该项目的实施过程中,系统数据安全尤为重要,主要采用了鉴别和访问控制两种方式来保证数据安全,在鉴别方面,采用用户、密码登陆和JWT token的方式,来进行实名认证和登陆访问,在访问控制访问,采用RBAC,基于角色、权限的方式,控制不同角色的人访问不同的菜单。同时系统记录每个用户的每次操作,将审计信息完整记录,确保整个系统的数据安全。该项目总投入近450万,历时15个月,于2023年6月交付至今,不仅帮助运维人员高效、安全的管理云上应用和后端服务器资源,同时帮助开发和测试人员实现应用的快速迭代和测试,大大提升了团队之间的协作效率,消除了运维和开发之间的壁垒,得到了用户的一致好评。
正文:
随着云原生技术的发展,企业也逐渐引入相关技术,在基础设施层,越来越多的企业开始购买云上服务器,如应用服务器企业可选择阿里云的ECS服务器,数据库服务器企业可选择阿里云的RDS,DNS服务企业可选择阿里云的域名解析,云上资源购买十分方便,在页面中点击几下即可购买成功,但在实际工作中,不能随意购买,需要结合企业成本和服务器资源使用情况来综合考量,避免资源浪费,所以对云上资源的成本、资源使用情况的可视化管理就很重要。同时,随着容器技术和微服务架构的发展,企业应用也都选择微服务架构,采用容器的方式部署在kubernets集群中,在这种情况下,应用的快速发布、容器资源管理、监控告警就显得尤为重要。
为了实现云上资源的可视化管理和基于云原生应用的快速发布,我所在的公司决定开发一个“自动化运维”系统,我们称之为云平台,并在2022年3月正式启动该项目的建设工作,我被任命为系统架构设计师,负责系统架构设计工作。该项目总投入450万元人民币,建设周期从2022年3月至2023年6月截止,历时15个月。该系统主要包括应用中心、发布中心、监控中心、成本中心、容器中心、权限管理和变更管理七大模块,应用中心是整个系统的数据中心,其他模块的功能都围绕“应用”来进行资源的展示和操作;发布中心以“应用”为单位,向用户提供应用的快速发布功能;监控中心以“应用”为单位,向用户提供应用的监控告警功能;成本中心以“应用”为单位,向用户展示每个应用的成本;容器中心以“应用”为单位,展示应用的相关容器资源;权限管理是对用户分类,使得不同的用户可看到不同的模块;变更管理主要对云上资源的变更进行管控,避免对云上资源的误操作导致系统故障。
该系统主要采用鉴别和访问控制两种方式来保证系统的数据安全。鉴别方式面临的主要威胁是可冒充他人进行一些数据窃取或数据销毁操作,例如其他人可能通过非常规手段获取他人的用户名、密码信息或窃取到他人的认证卡片等,窃取到用于鉴别的信息后,就能对系统或资源进行破坏操作或盗取重要数据。访问控制服务面临的威胁是获取到非自己权限范围内的数据,进行信息的窃取和违规操作,导致数据丢失或泄密。为了有效保护该系统数据机密性、完整性和提升基础设施的可靠性,该系统采用鉴别和访问控制两种方式,对进入该系统的成员进行认证和权限控制,获得认证并拥有相关权限的人员才能进行对应的操作。
由于该平台是对公司所有业务应用的基础设施进行管理的平台,基础设施出现问题,全公司业务就会瘫痪,影响广大用户体验,所以该平台的数据安全和操作安全十分重要,在系统设计时,在安全方面做了较严格的限制。
在鉴别方面,主要分为web端认证、对外接口的认证。对于web端的认证,首先进行网络限制,即非公司内网不能登陆访问,居家处理问题的员工,如果想要登陆web访问系统,需要首先成功访问公司的vpn,进入内网之后才能进行相应的操作。能够登陆系统后,进入系统要进行用户名和密码的认证,同时需要输入手机收到的验证码才能进入系统,在这里,用户名只能是公司为员工随机生成的域账号,确保只有公司员工能够登陆,密码复杂度也有提升,需要包含大写字母、小写字母、数字、特殊符号,并且长度不能小于10位,确保只有用户名的非法用户无法在短时间内获取密码,如果某非法用户输入5次不正确的用户名和密码,那么该用户在当日则无法再次进到系统中,同时还会发送一条警告信息给系统管理员或拥有该用户名的用户,提示有人尝试非法进入系统,当然,如果是用户自己忘记了密码,可以联系管理员进行解锁,重新设置密码即可。用户名和密码输入成功之后,还会自动发送验证码到用户的手机,验证码输入正确后才正式进入系统中。用户登陆成功后,后台会生成一个JWT token给前端,token的有效期是1小时,在这一小时范围内,用户的操作不需要每次都重新登陆、认证,每次的访问请求会带着相应的token给后端,后端从token中获取用户名和密码信息,并将每次的操作记录到审计表中,记录用户每次的操作时间、操作人员、接口、入参等信息,便于后面问题的追踪。
在接口的认证方面,由于该系统需要提供接口给其他系统,所以这些接口的访问也要进行控制,在用户访问接口时,需要先调用认证接口,进行用户名和密码的认证,系统会返回jwt token给接口调用者,获取到token后,才能进行接口的请求,系统也会把每次的接口请求记录到审计表中。
在访问控制方面,主要采用RBAC基于角色的权限访问控制,对登陆系统的用户划分为多个角色,每个角色配置不同的权限,使得每个角色下的用户能够访问的系统菜单和接口各不相同,严格控制每种角色的可操作资源。
经过近15个月的项目开发,“自动化运维系统”顺利投入使用,开发人员和测试人员可通过该系统实现应用发布的自动化,无需运维人员的协助,消除了运维和开发的固有壁垒;运维人员可通过该系统高效管理云上资源,实时查看云上资源的使用率和成本,减少资源浪费,提高资源使用率。当然,在本项目中还有一些不足之处,在进行云上资源成本统计时,最初我们通过阿里云的费用接口来拉取各个产品的成本,由于产品很多,写了很多逻辑,后来通过和阿里云的技术人员沟通,可以在阿里云平台上将所有产品的费用一键转储到oss中,直接通过oss的sdk即可快速查询所有产品的费用,后来我们开发人员快速修改下成本获取的逻辑,并没有对项目产生什么影响。由于架构合理且考虑周全,进展顺利,得到了公司技术人员的认可,大大提高了技术团队的协作效率。