考虑通用的系统和工作流程,例如管理民航的系统和工作流程。

无论您乘坐的是美联航,法航还是阿联酋航空,所有这些航空公司都必须能够出于各种不同目的而相互通信,从中转,行李转移到保安。

但实际上,每家航空公司的系统在架构上都略有不同,具有不同的软件,数据库和其他关键基础架构。我们如何才能使这些系统互相通信?

他们可能不会说本国语言。但是,通过在每个平台的维护者之间进行仔细的计划和协作,可以商定一组通用的指令,输入和输出,以消除一个系统告诉另一个系统该怎么做的复杂性和不确定性。

什么’s an API?

API代表应用程序编程接口。 (有关详细的技术说明,请尝试此 初学者API 视频)。但是,实际上,您现在只需要知道API是一组定义明确的指令,即可定义一个系统如何与另一个系统进行交互。

在过去的几十年中,有各种风格的API受到关注和失去。为了便于讨论,我们将讨论代表状态转移(REST-ful)API,它已成为近十年来最流行的Web服务API。还有许多其他以开发人员为中心的API,例如基于库或基于类的API,我们将不在范围之内。

现代API公开了所谓的 终点,或表示对象或对象集合的路径,例如主防火墙的主机名。

每个端点通常允许一组CRUD动作(至少其中之一)。 CRUD代表创建,读取,更新和删除。在我们的主机名示例中,使用API​​,您可以调用操作来创建新的主机名,读取现有的主机名,更新现有的主机名或删除现有的主机名。

直到现在,该网络还停留在“石器时代”

API已深入渗透服务器和工作站的端点空间。以Windows应用程序开发人员为例。在需要将应用程序插入或挂接到Windows的每个区域中,开发人员都可以使用一组适当的API端点。

但是到目前为止,网络上的API很少。

回顾一下我们多年来与网络设备通信所使用的一些传统方法:

  • 命令行界面
  • Web GUI
  • SNMP协议
  • 供应商特定的应用

考虑一下使用这些通信方法有多脆弱和令人沮丧。语法可以随固件版本而变化。对于不同的硬件配置,您需要以不同的方式引用不同的组件。像JavaScript这样的现代基于Web的技术都阻止了容易的数据刮取。 SNMP协议的实现需要深入了解如何导航MIB和OID的迷宫-更不用说通过SNMP会出现大量的不完整和不正确的数据。

传统上,执行“简单”任务(如在防火墙上添加规则)很麻烦。但是有了一组明确定义的API端点,我可以更新一组防火墙规则,而不必浏览CLI配置层次结构并发出一系列命令。

这里’s an example of a cURL request I could make to the Meraki仪表板API:

curl -L -H 'X-Cisco-Meraki-API-Key: ' -X PUT -H 
'Content-Type: application/json' --data-binary 
'{"rules":[{"评论":"A note about the rule", 
"政策":"deny", "协议":"tcp", "destPort":"80,443", "destCidr":"192.168.1.0/24,192.168.2.0/24", "srcPort":"any", 
"srcCidr":"any", 
"syslogEnabled":true}],"syslogDefaultRule":true}' '//api.meraki.com/organizations/[organizationId]/vpnFirewallRules'

在这个相对较小的请求中,我们指定了以下内容:

  • 评论
  • 规则说明(可选)
  • 政策
  • 允许或拒绝此规则指定的流量
  • 协议
  • 协议类型(必须为tcp,udp,icmp或任何其他协议)
  • srcPort
  • 以逗号分隔的源端口列表
  • srcCidr
  • 以逗号分隔的源IP地址列表
  • destPort
  • 以逗号分隔的目标端口列表
  • destCidr
  • 以逗号分隔的目标IP地址列表
  • syslogEnabled
  • 将此规则记录到syslog

全部在一个命令中完成。在CLI上的外观如何?

我们必须制作这样的东西(对于Juniper SRX):

set interfaces fe-0/0/0 unit 0 family inet filter input blocked.IP
set interfaces fe-0/0/0 unit 0 family inet filter output blocked.IP

set 政策-options prefix-list block.outbound 192.168.1.1/24
set 政策-options prefix-list block.outbound 192.168.2.1/24
set 政策-options prefix-list unblock.outbound

set security log mode stream
set security log source-address 192.168.1.254
set security log stream Server format syslog
set security log stream Server host 192.168.1.1
set security log stream Server host port 123

set firewall family inet filter blocked.IP term 1 from prefix-list block.outbound
set firewall family inet filter blocked.IP term 1 from prefix-list unblock.outbound except
set firewall family inet filter blocked.IP term 1 then syslog
set firewall family inet filter blocked.IP term 1 then discard
set firewall family inet filter blocked.IP term 2 then accept

看看API查询的简洁程度如何?

网络API MSP新时代

照片:Pexels

SMB网络空间中API的新时代

众所周知,网络层是应用程序和服务赖以生存的基础。

最长的时间,我们已经看到服务器,工作站,甚至是新型设备(如智能手机)为开发人员提供了越来越复杂的数据驱动方式来与其操作系统进行交互。

但是,诸如路由器,交换机和防火墙之类的网络设备已被降级,只能使用诸如命令行界面(CLI),需要一些烦人的插件(如Java或Flash才能正确显示所有内容)的Web GUI或本机应用程序等陈旧方法。 Cisco ASDM执行相关配置。

但是,最近,网络供应商已开始公开API,以补充或替代CLI。 (GUI保留在这里。)

带有云管理组件的供应商(例如Meraki和Datto / OpenMesh)具有开发人员API。我们还看到了梭子鱼和Sophos之类的一些本地产品,这些产品允许使用API​​与设备进行交互。

这些API使一些强大的自动化工作流程成为可能,例如批量重置密码,启动固件升级以及为整个网络堆栈中的新应用程序(例如语音或视频)配置VLAN,而只需几秒钟,而不是几分钟或几小时。结果,API释放了您的团队的精力,可以将他们的时间和专业知识投入到更高层次的项目中。

什么 does this mean for MSPs?

在替换或扩展工具堆栈的区域时,请寻找已使用API​​开放平台的产品和供应商。这将使您能够灵活地将其他产品集成到您的堆栈中,并有可能开发自动化以消除重复性的任务,这些任务最好由机器来完成。

您可以将更多信息从一个系统提取,转换和加载到另一个系统中,从而为自动化和更加无缝的工作流程开辟了更多可能性。开放的API促进了从一个供应商工具集到另一个供应商工具集的互操作性,从而允许紧密集成。

这里的最终目标是自动化的必杀技,将历来艰巨且人为无法扩展的任务自动化,使您可以专注于增值项目,而不必研究电子表格并尝试进行手动对帐。

什么’s 奥维克 API strategy?

在Auvik,我们大力倡导API允许的数据注入和提取的潜在广度和深度。我们正在开发多种API,使我们的合作伙伴和第三方供应商可以与Auvik紧密集成。

2020年更新: 这里’当前可用的Auvik API的完整列表.