“人类仍然是最非凡的计算机.” – John F. Kennedy
api(应用程序编程接口)是网络不可分割的一部分. 当我们访问一个网站时,托管该网站的web服务器将显示一个网页. API是一种工具,使网站的数据易于客户端(无论是桌面, laptop, 手机)我们通过它登录. API, 由服务器提供的程序, 可以是处理网络流量的同一个程序的一部分,还是一个单独的程序向客户端提供数据.
API是为两个软件程序之间的交互而设计的, 而UI(用户界面)是为用户直接与程序交互而设计的. API提供可由另一个程序解析和操作的原始数据, 而UI呈现的是人类用户可以轻松读取的数据.
在这个图中,API就像餐馆里的服务员把订单交给厨师一样, 收集订购的食物, 并返回顺序.
按目标受众划分的api类型
- Public APIs. 也称为外部或开放api,开发人员和其他用户可以以最小的限制公开使用.
- Partner APIs. 它们不是公开的,而是由战略业务合作伙伴提供的, 需要特定的权限才能访问它们.
- Internal APIs. 也称为私有api, 它们对外部用户是隐藏的,只对内部系统和内部开发团队公开.
- Composite APIs. 复合api将多个数据或服务api组合在一起. 它们在微服务架构中非常有用, 哪些地方需要来自多个服务的信息来执行单个任务.
按协议划分的api类型
- REST. 具象状态传输(Representational State Transfer, REST)架构是最流行的方法,它依赖于分离API前端和后端的客户机/服务器方法, 并且在开发和实现方面提供了相当大的灵活性. REST是无状态的,这意味着API在请求之间不存储数据或状态.
- RPC. 远程过程调用(RPC)协议是发送多个参数和接收结果的一种简单方法. RPC api调用可执行的操作或流程, 而REST api主要交换数据或资源,如文档.
- SOAP. 简单对象访问协议(SOAP)是由万维网联盟定义的消息传递标准,广泛用于创建通常带有XML的Web api, 虽然它支持广泛的通信协议.
上下文中的API安全性
API安全是以下三个方面的交集:
- 信息安全 是否关心信息从产生到最终销毁的整个生命周期的保护.
- 网络安全 处理流经网络的数据的保护,以及防止对网络本身的未经授权的访问.
- App 保护 确保软件系统的设计和构建能够承受攻击和误用.
API安全性:最重要的控制
- 所有权和管理. 每个API都应该有一个所有者或提供者,他们将通过适当的sla定义和发布使用条款,以限制API的使用和消费方式, 并根据定义和商定的SLA随时修改API的实现.
- 根据公司策略设计API. 应该有一个关于API的政策,明确说明API与技术无关, 这意味着它不应该依赖于应用程序, 编程语言和平台.
- 隐私和安全. API的设计应该确保消费者数据的私密性,并支持审核跟踪. 应该有端到端的数据安全性,并且应该是网络无关的和以数据为中心的.
- API governance. api应根据既定的数字战略开发,并应明确回答以下问题:
- 取得了什么业务成果?
- 目标受众是谁?
- API的愿景是什么?它是否社会化了?
- 我们是否建立了API架构和组件重用?
- API安全最佳实践是否已激活?
- 是否有有效的API生命周期管理?
- api是否符合现行法律法规?
- 是否定期对api进行漏洞评估和渗透测试, 是否及时采取了纠正措施?
- Audit controls
- 从源到目的的数据传输是否受到监控, 如果失败了, 有给管理员的提示吗, 它是否记录在审计跟踪中?
- 不允许使用匿名api吗?
- 在api上部署的用户身份和密码是否用于内部开发和培训?
- 是否使用API密钥验证来保护应用程序的验证?
- 数字证书是否用于所有B2B通信?
- Are OAuth2.0和为内部和外部生产api部署的安全令牌?
Author’s note: 所表达的意见是作者自己的观点,并不一定代表他所隶属的组织或认证机构的观点.