# 信息安全 ## 前言 信息安全主要包括以下五方面的内容,即需保证信息的`保密性`、`真实性`、`完整性`、`禁止未授权拷贝`和`所寄生系统的安全性`。 站在企业角度分看信息安全,将其分成三大类:`信息层面的信息安全`、`用户层面的信息安全`、`架构层面的信息安全`。 ## 分类 #### 信息层面的信息安全 此层面主要是包括基础性、传统性的安全领域,比如通信安全、密码加固等。 #### 用户层面的信息安全 也就是说用户把信息存储到了你的服务器上,你要怎么样保证用户的隐私不受侵犯。 #### 架构层面的信息安全 此层面的架构包含服务器架构、应用层架构,简而言之,就是如何保证服务器安全运行、数据不丢失。 ## 行为规范 为了打造一个信息安全的环境体系,从上面提到的三个信息层面分析并建立解决方案,制定以下行为规范。 ### 应用层功能实现层面的信息安全 此安全包括**安全的需求分析与设计**、**功能编码安稳实现**两大内容 #### 安全的需求分析与设计 在产品开发实现之前,产品的设计是否合理安全更为重要。产品在研发需求的同时,在注重功能是否可以实现、功能实现的业务流程时,往往更要考虑业务在某一个业务流程是不是会造成一定的问题,特别是涉及到企业的资金,影响会非常严重,比如利用脚本、机器批量刷新用户优惠等。 #### 开发环节信息安全意识 - 开发过程中,要充分考虑用户数据安全和数据隔离,关键信息不允许未经鉴权直接获取; - 账号密码等敏感信息,不能明文传输和存储; - 日志不能记录敏感信息; - 如果必须要到正式环境测试数据,注意不能随意使用线上用户的信息,尽量使用自己的信息。如果必须使用他人信息,需要向部门负责人申请。并且在测试过程中,注意不要泄露用户信息,不要随意发生业务(如挂号、缴费等),以免给用户造成信息泄露的困扰而引起用户投诉。 ### 用户层面的信息安全 #### 管理端数据权限处理 医院管理后台、企业管理后台等管理后台管理端,登录用户在拥有某项菜单查看权限时,即有权限查看该项菜单的所有信息,比如用户的信息、用户的订单信息。 为防止用户相关的隐私数据泄露,需要把握数据分析和用户隐私之间的平衡,管理后台的权限粒度划分要细化,精准分配必要权限。 正式环境的管理员账号分配和账号权限设置,都由运营负责人负责管理。 ### 信息传输层面的信息安全 - [x] 使用`https`取代`http。` 目前,全站服务实现了从`http`转向`https`,因为HTTP无论对于网络传输的内容,还是对于协议本身信息都没有做过任何的加密,从而使得用户的任何信息在网络中都可能被捕获,甚至会发生数据注入等行为,也就是我们经常说的流量劫持。**在生产环境上,我们已经全部使用了`https`协议。** - [x] 接口数据加密签名 对外的通讯接口采用加密的方式传输,比如合作方获取订单信息,我们将其回调数据信息进行签名加密后再通讯传输,确保信息不被显性截取。 ### 架构层面的信息安全 - [x] 服务器端口开放策略管理 目前,阿里云服务主机已配置防火墙和进出站规则来管理端口开放。必要的端口才开放对外的端口,不需要公网访问的端口都对外关闭。 - [x] 服务器服务配置安全策略 对于 Redis 等服务,为了数据、程序安全稳健运行,将默认的端口进行更换,同时将加上密码的服务添加复杂的密码。 默认的服务配置,对于专业的非法分子是很容易进行扫描端口、撞库等方式渗透服务器,防止非法人员进行数据盗取、非法进入服务器,我们务必需要配置此项安全策略。 - [x] 服务器管理策略 采用一台服务器作为堡垒机,生产服务器仅对堡垒机白名单。登录生产服务器必须经过堡垒机作跳板。 - [ ] 部署方式采用“容器”化 所有实例均跑在“容器”内,某种程度上算是一层隔离,同时可限制IO权限,也方便后面提到的CI。 - [x] 服务器用户权限及管理 此项工作属于运维的重点工作,关乎生产环境的文件、数据的权限,分配哪些用户、用户权限对应哪些可读、可写、可执行的操作。对于开发者而言,尽可能只提供对应的只读权限。 - [x] CI/持续集成 | CD/持续部署,敏捷开发 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 持续部署(continuous deployment)是通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化相对也提高了人的效率,让 engineering productivity 最大化。 敏捷开发,减少软件开发的成本与时间,减少风险。 - [x] 数据容灾备份 数据可谓一个企业的血液,数据信息万万不可丢失。但是服务器灾害具有随机性、不确定性,即使像全球最大云计算服商亚马逊AWS多次机房故障导致的云服务中断再次警示合作商,即使最优秀的云计算平台也难以避免地发生突发故障。因此我们做好数据容灾是极其重要的工作。 目前采用的是 RDS 定时备份(频率:1 天 1 次) + DTS 数据同步(秒级同步)方案。 目前数据同步流程架构图: ![数据同步架构图](./pictures/%E6%95%B0%E6%8D%AE%E5%90%8C%E6%AD%A5%E6%B5%81%E7%A8%8B%E6%9E%B6%E6%9E%84.png) ## 其他存在的安全性问题 以下的安全性问题是在互联网环境也常见的,只要是在互联网提供服务,都可能会遇到,只能做好防御。 - `DDOS` 接口出现异常性的高发请求、恶意流量攻击等。 解决方法:目前已接入云防火墙,可以识别机器流量、拉黑非法攻击 IP 等。 - 挖矿程序 遭遇挖矿程序恶意运行等,引起服务器故障或数据泄露。 解决方法:定期扫描服务器,定期打安全补丁。