API(应用程序编程接口)是互联网不可或缺的一部分。当我们访问一个网站时,承载该网站的Web服务器会展示网页。API正是那个使网站数据能够为登录所使用的客户端(无论是台式机、笔记本电脑还是移动设备)消化理解的工具。API作为服务器提供的程序,可以是处理Web流量同一程序的一部分,也可以是向客户端提供数据的独立程序。
API专为两个软件程序之间的交互而设计,而UI(用户界面)则专为用户直接与程序交互而设计。API呈现的是可供其他程序解析和操作的原始数据,而UI呈现的是人类用户易于阅读的数据。
API在此图中被类比成餐厅里的服务员,他把订单拿给厨师,收集点单的食物,然后带着食物返回。
按预期受众划分的API类型
1. 公共API。也称为外部或开放API,可被开发者和其他用户公开使用,限制最小。
2. 合作伙伴API。它们不对外公开,由战略业务合作伙伴提供,需要特定权限才能访问。
3.内部API。也称为私有API,对外部用户隐藏,仅向内部系统和内部开发团队公开。
4.复合API。复合API结合了多个数据或服务API。在微服务架构中非常有用,在这种架构中,需要从多个服务获取信息以执行单一任务。
按协议划分的API类型
1.REST。表现层状态转换(REST)架构非常流行,它依赖于客户端/服务器方法来分隔API的前端和后端,并在开发和实施中提供了相当大的灵活性。REST是无状态的,这意味着API在请求之间不存储任何数据或状态。
2.RPC。远程过程调用协议(RPC)是一种简单的方式,可以发送多个参数并接收结果。RPC API调用可执行的操作或进程,而REST API主要交换数据或资源,例如文档。
3.SOAP。简单对象访问协议(SOAP)是由万维网联盟定义的消息传递标准,它支持广泛的通信协议,常被用于创建使用基于XML数据结构的Web API。
API安全的背景
API安全位于以上三个领域的交叉点:
1. 信息安全关注信息在其完整生命周期内从创建到最终销毁的数据保护全过程。
2. 网络安全涉及对网络上数据流的保护以及防止未经授权的网络访问。
3. 应用安全确保软件系统设计和构建能够抵御攻击和滥用。
API安全风险控制
1. 所有权和管理。每个API应该有一个所有者或提供者,他们将通过合适的服务水平协议定义和发布使用条款,以限制API的使用和使用方式,并且可以根据定义和约定的SLA随时调整API的实施。
2. 根据公司政策设计API。应制定明确阐述API的政策,表明API应该是技术中立的,即不依赖于应用程序、编程语言和平台。
3. 隐私和安全。API的设计应确保消费者数据的隐私,并定期开展审计进行检查。数据应实现端到端安全,并且应该与网络无关,以数据为中心。
4. API治理。API应根据制定的数字战略开发,并针对以下问题有明确的答案:
o 实现了哪些业务成果?
o 目标受众是谁?
o API的愿景是什么,它是否已被社会化?
o 是否建立了API架构和组件的重用?
o 是否激活了API安全最佳实践?
o 是否建立有效的API生命周期管理流程?
o API是否符合当前法律法规?
o 是否定期对API进行漏洞安全评估和渗透测试并及时修复?
5. 审计控制
o 数据从源头到目的地的传输是否受到监控,如果有故障,是否通知管理员,并记录在审计报告中?
o 是否禁止匿名API?
o 是否在用于内部开发和培训目的的API上部署了用户身份和密码?
o 是否使用API密钥认证来保护应用程序的认证?
o 是否对所有B2B通信使用数字证书?
o 是否在内部和外部生产API上部署了OAuth2.0协议和安全令牌?
文章来源于ISACA ,作者Ravikumar