前言:直接把API暴露到互联网上给外部系统是存在安全风险的,对外的api接口往往对安全性有严格要求。像很多手机银行、第三方API接口、政务系统等大量的业务场景,通过API对外提供服务。这种情况大部分都暴露在互联网,存在较大的安全隐患。希望能在合规、管理、技术之间架起桥梁,成为一个数据安全的“翻译者”。
1、如何理解API网关的安全要求?
数据安全领域覆盖面非常广,涉及业务、数据、产品、开发、安全、运维、合规、审计等。大部分内容是在工作实践中,对数据安全产生的一些认识和联想,有时候不准确或者较强的主观想法望见谅。数据安全领域API网关是一个绕不开的话题,我们先从安全合规视角看接口安全有哪些要求。
2023年5月发布的《网络安全标准实践指南—网络数据安全风险评估实施指引》中数据安全技术情况关于接口安全部分有2个大要求11项详细要求:
(1)对外接口安全:3个要求,接口认证鉴权和安全监控、API密钥安全管理、跨域安全流动控制。
(2)接口安全控制:8个要求,接口安全策略设置、调用审批管理、接口定期清查、敏感接口调用管控、接口防护措施、接口安全要求、接口调用各方责任、日志记录。
下图Smart整理的《数据安全网络数据安全风险评估实施指引》逐条解析版本,关于接口安全部分内容:
Smart理解:
- API接口是当前数据交互的典型技术手段,在API接口管控时,它本身是一项数据资产,可以按照资产生命周期的思想进行管理,比如API资产的配置、上线、调用、下线、销毁等维度进行考虑,避免接口滥用、接口违规开放问题。
- 其次API接口安全需要网络安全通用的防护措施,更需要关注API接口本身需要具备的安全功能,比如接口的黑白名单、认证、限流、加密等,需要对API接口进行监控,统计业务调用是否存在异常。
- 最后从管理视角看,检查API接口的上下游之间的职责和边界,相关合同约定情况,接口的管理审批。安全审计方面,检查接口调用情况、安全监测情况,日志信息是否满足溯源要求。
2、API网关定义和类型
API 全称为Application Programming Interface,通过定义一组函数、协议、数据结构,明确应用程序中各个组件之间通信与数据交互方式。将Web应用、操作系统、数据库以及计算机软硬件的能力以接口的形式提供给外部使用。(来源:百度百科)
总体上都是接口方式对外或对外提供数据服务和消息交互。
API网关可以理解成三大类:对外的API业务网关、对内各应用程序之间调用的API应用网关、安全层面的API安全网关。
API业务网关是从业务角度出发的,它是一种典型数据共享和数据服务的方式,通过约定好的数据接口规范进行交互。比如二要素核验需要提供姓名和身份证作为入参,进行查询核验结果,或数据查询接口等。像很多手机银行、第三方API接口、政务系统等大量的业务场景,通过API对外提供服务。这种情况大部分都暴露在互联网,存在较大的安全隐患。
API应用网关是业务系统内部应用程序之间内部消息交互,通过API网关提供注册、调用的统一控制。
API安全网关是安全企业提出的概念,在API业务网关基础上增强了认证、授权等安全功能,比如API网关管理、流量监测、安全审计、加解密等功能。正常情况,优秀的API业务网关如果功能设计全面,也需要具备很多安全控制功能。
3、API接口6大常见安全风险
API接口给数据交互带来很多便利,因此成为数据安全中最需要重视的问题,从数据服务视角,个人总结常见的API接口安全风险如下:
-
API接口资产管控问题。API接口资产类型多,提供业务服务的业务API、程序内部交互的应用API。有多少API接口对互联网开放,每个接口实际开放了哪些接口字段。有多少接口上线了,存在大量该下线的接口未下线。
-
API接口流转内容未脱敏。尤其是内部应用之间的接口,因为在内部之间调用,未进行脱敏处理,造成数据泄漏。
-
API监测和安全功能不健全。API日志信息记录不全不足够用于溯源,API不具备调用量的统计分析功能,缺少审计日志。
-
API接口的密钥管理问题。通常由应用程序进行密钥的管理,存在密钥长期不更新,不支持动态密钥更新问题。
-
API接口合法用户正常途径的非法调用问题。尤其存在低频的调用,不容易察觉。
-
测试接口配置生产环境的数据源地址等。测试人员通过测试接口进行私自调用问题。通过测试接口手工导入批量测试获取结果等问题。
4、API接口管控思路
根据上述风险情况,对API接口管控整理相关防护措施,如下:
(1)外部的安全措施
-
API接口采取HTTPS加密是必要动作,无论对外的业务API接口还是内部应用交互的应用API接口。
-
API接口本质上也是URL地址,对互联网提供服务时,可以加入WAF应用防火墙,但需要做好性能测试。
-
部署DLP数据泄漏或网络流量监测工具,对暴露网络的API接口进行监测,发现脱离管控的API、API接口流转敏感内容。
-
业务调用分析工具。这项措施容易被忽视,在实际工作中建议对业务调用数据进行分析统计,从调用客户、调用接口、调用耗时等维度业务级的监测体系,设立基准线,通过数据分析发现正常客户的违规低频调用问题。
(2)API接口网关自身安全功能
-
业务逻辑鉴权:是否按照标准的业务调用逻辑进行消息处理。
-
参数校验:为每个接口的参数进行校验,参数类型、长度、默认值等进行检验。
-
接口签名:将客户ID、时间戳、Secureid等组合成接口。
-
限流&服务降级:支持调用量TPS的配置和监测,超过配额后支持限流、降级。
-
加密与解密:对API接口交互的数据包内容进行加密,支持密钥动态更新,为每个客户的每个接口定制密钥。
-
IP访问控制:支持白名单IP控制,同一客户限制源IP调用,发现异常事件后进行限制。
-
敏感数据脱敏:原则上敏感数据不流通,因业务需求时,除了通用的数据包加密,对敏感数据需要实现二次加密。客户业务需求传输的姓名、身份证、电话等敏感数据时,作为中间服务平台建议不必缓存、留存数据。
(3)安全管理措施
-
API接口管理措施:包括接口上线、下线、审批等流程。新接口上线需要和运维、安全进行联动,及时纳入监控,确认新接口是否存在敏感数据等。
-
安全审计措施:数据颗粒度细腻,存在大量的内部有意和无意泄漏问题,通过合法用户合法通道泄漏问题。对API接口、客户、账号权限、业务调用量、日志等进行全面审计。
-
明确接口规范:开展业务前明确好接口规范,规范中定义接口协议、报文格式、编码格式、安全机制、加密方式等内容。
5、合规视角如何检查接口管控问题?
API接口管控是技术类问题,作为安全检查人员对接口管控问题经常无从下手,个人认为对于技术类问题,覆盖面要广,技术细节不需要太深入。
根据个人经验,在实际开展风险评估工作时,可以找到相关同事询问如下问题:
@业务同事:
@开发同事:
@安全同事:
目前API接口中最大难点是接口密钥管理和秘钥更新,大部分业务网关通过应用程序自身实现密钥生成和管理,会遇到密钥更新问题。
另外,在实践过程中,很多API网关具备HTTPS证书解密能力,可以探查实际业务交互数据内容,有些网关为了实现敏感数据发现和监测,过程中进行解密,相关业务日志中记录敏感信息,反而变成一个重要的数据泄漏源,因此API网关本身的安全管理、安全配置非常重要,也容易被忽视。
参考链接: