购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.5 套路源自云端研发的流程

3.5.1 开发流程需要的标准

云端典型的开发流程一般采用敏捷开发,典型的流程是DevOps(第 7 章),如下图所示:

图 486

可以看到:比较完整的云安全需要包括上云安全和云上安全。

●云上的安全需要:

云设施安全建设标准。这是关键,相当于小区安防系统,重点写。(上节)

云运维安全配置基线。这是保障,相当于小区保安操作手册,举例写。(本节)

还需要更多云上标准规范,比如服务器部署指南、安全运营指南等,略。

●上云的安全需要:

云端应用安全规范。这是根本,打铁必须自身硬,这是要保护的家,简要写。(第 4 章)

云平台安全设计要点就是云平台几个重点地方的安全,整体上的几点要求,可能和云端应用安全规范有重叠的地方,但更加实用,简单写。(本节)

还需要更多上云标准规范,比如:安全编码规范、安全测试规范,数据跨境指南等,略。

3.5.2 运维安全配置的基线

3.5.2.1 系统基线

以Linux系统说明系统的运维基线的配置,如下图所示:

图 487

对于运维,口令和用户的基础安全是必须保证的,毕竟只要稍微有点计算机知识,就能破解弱口令。必须限制登录的次数、时间等,及时退出登录状态是安全的基本保障,而root必须只有一个才对,假如有多个root用户,那么管控就非常麻烦,说不清楚;用户配置的权限、访问控制配置等这些配置文件的权限必须保证只有root才能访问;及时记录登录的情况、操作的情况,有利于出现问题后查找问题在哪以及责任归属;而地址空间的随机化是算是一个比较高的要求了,但由于配置简单,所以也纳入基线要求。

3.5.2.2 服务基线

Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。(百度百科)

所以以Tomcat服务器说明其运维基线的配置,如下图所示:

图 488

●只要有身份鉴权,就不能有弱口令;

●也需要禁止部署,要不哪个恶意程序就可以启动它;

●目录权限是被窥探的入口,需要被控制,特别是避免root权限;

●假如ROOT启动tomcat服务,就很容易被攻破,需要禁止;

●调试信息往往包含很多系统的很多信息;

●不管做什么,审计都是需要的,可以溯源和分析攻击手段等;

●删除无关的文件有利于节省资源,文件越少,出安全问题的地方也会越少。

3.5.2.3 容器基线

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。(百度百科)

所以以Docker容器说明其运维基线的配置,如下图所示:

图 489

●各个容器之间的网络通信必须隔离,这尤为重要,只有这样一个容器出问题了才不会影响到其他容器的安全;

●容器里限制挂载系统目录,不要挂载系统的敏感目录,避免容器出现问题影响到系统;

●必须限制容器的资源使用,要不一个容器出现内存问题,会影响到一个系统的稳定性;

●内容信任提供数字签名机制,可以运行客户端验证资源的完整性;

●容器相关的权限必须合适设置,避免除root外其他用户可启动;

●设定合适的日记级别,审计需要;

●对IP地址的限制,可以在很大程度上提高网络安全级别,也是访问控制需要。

3.5.2.4 数据库基线

常用的数据库有三个:MySQL、redis、MongoDB。三种数据库有不同的使用场景。

图 490

Redis是一种基于内存的数据结构存储系统,因其高速、稳定的特点被广泛应用于缓存解决方案中;是一个内存数据库,数据都放在内存中。(来自网络)

MongoDB则是一种文档型数据库,使用JSON格式存储数据。MongoDB适合于海量数据存储和处理,具有高扩展性和灵活性,常用于大规模分布式系统中;数据实际上是存放在硬盘的,所有要操作的数据通过mmap的方式映射到内存某个区域内。(来自网络)

MySQL是一种关系型数据库,被广泛应用于Web应用程序开发。它支持SQL语言,具有强大的数据处理能力,可以处理包括多表联合查询、事务处理等在内的各种复杂数据操作;无论数据还是索引都存放在硬盘中。到要使用的时候才交换到内存中。(来自网络)

选择MySQL说明其运维基线的配置,其他数据库类型类似:

图 491

●必须删除匿名账户,已有账户的密码复杂度必须做要求,这是身份鉴别的基本要求;

●需要现在所有账户都可以访问数据库;

●需要进行网络隔离,避免数据库暴露到公网;

●需要对权限做控制,最小权限运行数据库服务;

●需要修改常用端口,减少被扫描工具扫描到的风险;

●需要设置日记,可以进行调试和安全审计,也要防止密码被审计看到;

●需要删除无用的数据库,防止密码设置在配置中。

每个需要运维的云端配件应该都需要运维安全基线。

3.5.3 平台安全设计的要点

要期望云开发工程师完全按照规范去开发确实有点难,但几个设计要点就肯定要落实到位。

3.5.3.1 通信安全

(1)要求

●TLS要求:

采用双向身份认证或SSL-pining;

采用TLS v.12 以上版本。

●证书要求:

采用CA证书或自发证书;

证书有效期不超过 24 个月。

(2)方案

●申请某公有云免费HTTPS证书

局限:支持单页面网站。

证书类型:DV SSL。

有效期 1 年。

●采用自建密钥管理系统证书

局限:和第三方互信困难,只能局限于自有网络。

3.5.3.2 接口安全

(1)要求

●Token要求

唯一性:每次生成的Token不一样。

时间性:需要设置超期时间。

●时间戳要求

每次请求都要带上时间戳,防重放攻击和DDOS攻击;

超时规则 2 分钟。

●URL签名要求

需对明文参数做签名,防止被篡改;

登录、支付、刷新token等接口需增加URL签名。

●防重放要求

对时间戳加上签名,防止重复攻击;

登录、支付、刷新token、物端控制等接口需增加防重放机制。

●数据脱敏

对敏感数据(手机号、姓名、身份证等)进行模糊处理,如 135*****282。

(2)方案

●Token方案

采用Token + JWT方式;

access_token、refresh_token根据用户ID、时间戳、随机数等的哈希方式生成;

所有请求需携带access_token;

access_token有效期小于 2 小时;

refresh_token有效期小于 14 天。

●时间戳方案,略。

●URL签名,略。

●数据脱敏,略。

3.5.3.3 数据安全

●数据传输要求

加密密钥应保证随机性;

密钥长度 128 位以上;

加密算法采用AES、模式为CFB或OFB、IV为随机数。

●个人敏感信息要求

HMAC-SHA256 方式进行HASH处理;

根据实际应用场景去标识化、匿名化等。

●消息认证要求

时间戳为毫秒级;

有效期为前后 10 秒;

签名采用HMAC-SHA256 对数据内容进行校验。

●数据过滤要求

采用PUT或POST传输JSON数据,请求头应指明Application/json;

使用明确的字符集,并验证数据范围、长度、类型;

JSON的所有参数应使用强类型或固定长度;

应使用白名单对所有参数进行安全过滤;

对包含特殊字符和注入攻击行为进行严格检测。

●错误信息处理要求

通过错误编码表示错误类型;

不能暴露敏感数据。

3.5.3.4 密钥证书

●证书要求

证书的生命周期通过PKI(Public key Infrastructure)来管理;

通过密钥管理系统来管理;

设置专人管理证书。

●服务器密钥要求

限制其访问权限;

分段进行存储。

●客户端密钥要求

使用复杂的算法生成私钥;

对私钥进行加密、分散、安全区域等方式进行保护。

3.5.3.6 日志审计

●日志系统

应具备自动化请求日志收集和审计的系统,能通过分析识别发现潜在的攻击行为。

●日志内容

应包括API接口日志、业务服务日志、流量日志;

不应记录用户敏感信息。

●审计系统

应明确审计记录内容、实施审计;

妥善保存审计记录、定期分析和审查审计记录;

防止非法授权、篡改、删除审计记录。

●日志保存时间

不少于 6 个月。

●异常日志处理

应自动告警运维人员;

应该及时分析与处理。

3.5.3.7 三方依赖

●应采用最新的安全的版本;

●如无人维护的三方库,应及时自行修复;

●定期对三方依赖进行漏洞扫描。

通过了云上安全建设标准核心级、配置基线、安全设计要点后的平台合规情况如何呢,这就要看等保评测了。 LDLo6hnAXhG/p1ZKJV3mToMOzW7wYfgBjczlx7580cZF7XVHR+zHZeJjXD9bt1BG

点击中间区域
呼出菜单
上一章
目录
下一章
×