产品数据安全架构
一、安全架构
5A方法论指身份认证、授权、访问控制、可审计、资产保护。
CIA是保密性、完整性、可用性。
CIA是目标,5A是技术性手段。
二、身份认证
- 业务系统应尽可能使用统一的单点登录系统(SSO),而不是各业务系统设计一套身份认证模块。不管访问哪个业务,只用一个身份认证入口。
- SSO一方面避免系统重复建设,减少工作量。另一方面,可以统一强化用户隐私保护,且可以与HR系统关联,提高离职销户等权限调整操作效率。
- 用户在SSO输入用户名密码后,SSO验证通过会返回一个ticket,用户其实是用这个ticket访问各个业务系统,业务系统验证ticket无误后,通过Cookie与用户建立会话(session)。
- 会话管理可以记录用户当前登录的IP、User Agent信息,可以通过校验IP等信息是否发生变化来限制登录。
- Coolie也需要额外保护,通过httponly和Secure属性,使用HTTP Only可以规避document.cookie获取信息,使用Secure只能通过https传递。Cookie中不要存敏感信息。
- 对于业务来说,不要做敏感信息二传手,不要收集用户口令。
- 口令的保护一方面是不能明文存储,且在服务器侧加盐散列,另一方面,用户身份认证必须使用https传输,且用户侧不能直接发送铭文口令。
- 生物认证口令需要更高强度的保护,不能上传生物识别图像。根据GDPR条款,原则上禁止处理用户生物识别数据。如指纹数据不出手机。生物认证口令的保护不同,一方面是对称加密,另一方面是认证携带时间戳,防止重放攻击。
三、授权
分为基于属性的授权、基于角色的授权、基于ACL的授权。ACL即访问控制列表,更灵活。
授权风险包括:未授权、平行越权、垂直越权、诱导授权、职责不分。
四、访问控制
- 控制策略包括:基于属性的访问控制、基于角色的访问控制、基于任务的访问控制、基于ACL的访问控制、基于专家知识的访问控制、强制访问控制。
- 常见的业务安全漏洞及应对措施:
- 缓冲区溢出,在接收数据前执行边界检查,防止收到超出自身容量的数据。支持应用系统运行的操作系统、开源组件也有可能有这类问题,就需要关注补丁、版本管理。
- SQL注入,通过参数化查询。select user from userinfo where userid='uname'--' and pword='12345'
- 遍历查询,身份认证,控制频率和数量、监控告警。
五、资产保护
- 数据加密存储,除非有运算需求,不然都要加密存储。
- 加密之后,可以通过添加key来检索。
- 数据加密首选应用层字段加密,即加密后将密文存入数据库。数据加密密钥每条记录要随机生成,不能明文存储,且要密钥加密密钥来加密,数据加密密钥和密文一同存储。密钥加密密钥每个应用都应不同,且保存在KMS,不随密文一同存储。
- 数据安全传输,常用https、TLS1.2以上版本加密传输。
- 数据脱敏展示,应在流出数据接口时就开始脱敏。