在数据源处具有保护层的架构的制作方法
未命名
10-18
阅读:92
评论:0
在数据源处具有保护层的架构[0001] 本技术是国家申请号为201980066891.1的发明专利申请的分案申请,该发明专利申请的申请日为2019年8月27日,发明名称为“在数据源处具有保护层的架构”。
[0002]
其它申请的交叉引用本技术要求2018年9月18日提交的标题为“architecture having a protective layer at the data source, behavioral baselining from datasource perspective and tokenization such that only authorized applications can use tokens”的美国临时专利申请no. 62/733,013的优先权;2018年11月9日提交的标题为“architecturehaving a data source wrapper and app agent”的美国临时专利申请no. 62/758,223的优先权;以及2019年4月30日提交的标题为“architecturehaving a protective layer at the data source and that provides query analysis, federated identity management and multifactor authentication”的美国临时专利申请no. 62/840,847的优先权,所有所述申请出于所有目的通过引用并入本文中。
背景技术:
[0003]
传统的安全性模型通过在组织周围提供安全周界来保护数据和电子资产。安全周界不仅包括数据源、服务器和其它类似资产,而且还包括由资产的用户采用的客户端。然而,应用仍然是易受攻击的,不道德的个体仍然可以获得敏感数据的副本,并且安全周界的管理可能是复杂且昂贵的。此外,诸如传统的数据库和包括分布式消息队列的现代数据存储库之类的数据源可能未被配置成用于其它类型的安全性,诸如数据的令牌化和联合身份管理。因此,期望一种用于为数据源提供安全性的改进机制。
附图说明
[0004]
在以下具体实施方式和附图中公开了本发明的各种实施例。
[0005]
图1是包括在数据源处的保护层的系统的示例性实施例。
[0006]
图2是包括在数据源处的保护层的系统的另一示例性实施例。
[0007]
图3是包括在数据源处的保护层的系统的另一示例性实施例。
[0008]
图4是描绘用于认证数据源的客户端的方法的示例性实施例的流程图。
[0009]
图5是描绘用于执行用于数据源的客户端的服务的方法的示例性实施例的流程图。
[0010]
图6是描绘用于执行用于数据源的客户端的多因素认证的方法的示例性实施例的流程图。
[0011]
图7是描绘用于执行用于数据源的客户端的联合身份管理的方法的示例性实施例的流程图。
[0012]
图8是描绘用于使用联合身份管理认证数据源的客户端的方法的另一示例性实施例的流程图。
[0013]
图9是描绘用于分析和记录与数据源的查询相关的信息的方法的示例性实施例的
流程图。
[0014]
图10是描绘抽象语法树的示例性实施例的图。
[0015]
图11a和11b是描绘用于利用敏感数据的令牌化和/或加密的方法的示例性实施例的流程图。
[0016]
图12a和12b是描绘用于提供客户端信息和用于执行客户端的行为基线化的方法的示例性实施例的流程图。
具体实施方式
[0017]
本发明可以以多种方式来实施,包括作为过程;装置;系统;物质的组合;实施在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如被配置成执行存储在耦合到处理器的存储器上和/或由耦合到处理器的存储器提供的指令的处理器。在本说明书中,这些实施方式或本发明可以采用的任何其它形式可以被称为技术。通常,所公开的过程的步骤的顺序可以在本发明的范围内更改。除非另有说明,否则被描述为被配置成执行任务的诸如处理器或存储器之类的组件可以被实施为被临时配置成在给定时间执行该任务的通用组件或被制造成执行该任务的特定组件。如本文中所使用的,术语“处理器”指代被配置成处理数据(诸如计算机程序指令)的一个或多个设备、电路和/或处理核。
[0018]
下面连同示出本发明的原理的附图一起提供本发明的一个或多个实施例的详细描述。结合此类实施例描述了本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定,并且本发明包含许多替代方案、修改和等同物。在下面的描述中阐述了许多具体细节以便提供对本发明的透彻理解。这些细节是出于示例的目的而提供的,并且可以在没有这些具体细节中的一些或全部的情况下根据权利要求来实践本发明。出于清楚性的目的,未详细描述与本发明相关的技术领域中已知的技术材料,以免不必要地使本发明模糊不清。
[0019]
本文中描述的系统和方法提供保护层或包装,其驻留在数据源处并且用作围绕数据源的安全周界。客户端(例如,应用和/或终端用户)与包装通信并由包装验证以访问数据源。受损的应用(包括先前验证的应用)可以被拒绝对数据源进行访问。这种方法与将周界放置在包括数据源和应用的整个组织周围的安全性措施形成对比。该方法和系统还可以跟踪应用对数据源的访问以确定应用的上下文/行为基线。例如,会话的类型、浏览器、api、ip地址、查询属性等可以用于确定用于数据源的访问的行为基线。将后续访问与基线进行比较以确定当前查询是否与基线匹配。如果不是,则可以采用附加的验证/防御机制。应用身份或应用指纹识别可以并入到该行为基线化中。在一些方面,还可以采用数据掩蔽。在数据掩蔽中,敏感数据由具有类似形式但不具有固有含义的令牌或格式保留加密来替换。例如,信用卡或社会安全号码可以由具有相同数字位数的不同号码来替换。令牌还可以具有到期时间、请求者标识和用于跟踪令牌的使用的其它数据。使用令牌,除非/直到需要敏感数据(例如处理交易所需的信用卡号)。如果需要敏感数据,则将令牌呈现给数据仓库并对其进行验证以获得敏感数据。
[0020]
在一些实施例中,包装用作围绕数据源的安全周界。包装包括调度器和与调度器通信的多个服务。调度器可以是拦截对数据源的访问的层4组件。传入的访问和传出的数据两者都可以被调度器拦截。调度器是数据不可知的,因此可以跨各种数据源部署。调度器可
以保存分组(步进模式),或者立即向/从数据源转发分组(流模式),但是不检查分组。调度器还向服务提供分组。服务对由调度器拦截的分组执行较深度的检查。服务可以提供一个或多个功能,其包括但不限于:对数据源的用户/请求者的认证、查询分析、多因素认证、数据的令牌化、重写、高速缓存和行为基线化(使用收集器)、联合身份管理和其它功能性。在一些实施例中,服务可以包括层7(应用层)组件。例如,为了认证,服务可以检查该数据源的用户的凭证(例如用户id和密码和/或证书),并且仅在用户的凭证被验证的情况下允许对数据源进行访问。这些服务中的一个或多个可以一起使用。这种方式与将周界放置在包括数据源和应用的整个组织周围或者试图使用层7组件来管理数据源/组织的安全性措施形成对比。
[0021]
除了在数据源处的包装之外,还可以在使用数据储存库/数据源的一些/所有客户端处使用收集器。收集器可以针对具有向数据源发出查询的应用的一些或所有客户端而呈现。例如,收集器可以附加到终端用户的应用以及在由终端用户利用的微服务中。收集器拦截来自应用的通信(例如查询或方法调用)并检查应用的状态。例如,可以由收集器检测会话的类型、收(get)/放(put)/公布/删除命令、api、ip地址、查询属性、方法调用、查询的顺序和/或其它信息。这些代表查询的上下文或发出查询的应用/客户端的状态。收集器将该上下文附加到查询。在微服务/多个应用的情况下,在向数据库发送查询之前传递查询。例如,一个微服务可以发出查询并且将查询传递到第二微服务。第二微服务可以添加到查询或发出附加查询。每个微服务/应用的收集器可以从该微服务/应用获得上下文。收集器还将来自该微服务/应用的上下文附加到一个或多个查询。因此,可以从用于对数据源的单个访问的多个微服务/应用获得多个上下文。当访问数据源时,将查询和上下文被传递给包装。在多个访问期间,可以由包装(例如服务)使用上下文来确定针对每个应用对数据源的访问的行为(状态/上下文的序列)。行为的模型(例如隐马尔可夫模型)可以提供行为基线。将后续访问与行为基线进行比较,以确定当前查询是否与行为基线匹配。如果不是,则可以采用附加的验证/防御机制。例如,可以拒绝对数据源的访问和/或调用多因素认证。收集器和/或行为基线化可以与其它服务结合使用。
[0022]
关于敏感数据的请求可以由调度器发送到令牌化/加密服务。服务用令牌/格式保留加密(fpe)或没有固有含义的类似数据来替换敏感数据。使用什么(令牌或fpe)是可在属性级别上配置的。例如,对于用户的信用卡号,可以使用fpe。对于同一用户的社会安全号码,可以使用令牌。在一些实施例中,存储敏感信息的请求可以被提供给服务,并且值在存储在数据存储中之前被加密。获得号码的请求可以被提供给服务,如果请求者被授权,则该服务可以解密/解除令牌化(detokenize)。或者,可以响应于该请求来提供令牌/fpe。令牌/fpe可以具有到期时间、请求者标识或其它信息。使用令牌,除非/直到需要敏感数据(诸如处理交易所需的信用卡号)。如果需要敏感数据,则将令牌呈现给数据仓库并对其进行验证以获得敏感数据。这种验证可能需要附加的、更可信的机制以确保敏感数据的安全性。令牌化可以与行为基线/收集器、多因素认证和/或其它服务结合使用。
[0023]
多因素认证也可以使用服务来执行。在一些实施例中,调度器被置于步进模式中,以保存分组而不是直接转发到数据源。调度器还向服务提供分组,该服务控制多因素认证。服务执行多因素认证(例如需要将代码发送到单独的设备和输入)或访问第三方多因素认证服务。一旦完成了多因素认证,就将调度器置于流模式中,从而允许用户与数据源通信。
因此,数据不可知调度器可以跨多个不同的数据源(诸如传统上不支持多因素认证的数据库)提供多因素认证。
[0024]
调度器可以将请求/查询转发到执行查询分析的分析器服务。分析器服务检查/解析查询并发出描述查询的结构。在一些实施例中,该结构是抽象语法树。然而,可以使用其它结构。该结构可以用于确定查询是否代表攻击,(例如以获得未授权的信息)以确定查询是否将对性能产生不利影响。例如,包括用户的名称中的通配符或同义反复的查询可以导致敏感信息的漏出。缺少where(在哪)子句的查询可能对数据库性能产生不利影响。可以识别这样的查询。然后,可以停止包括查询的分组,或者可以取消查询。此外,由查询分析器发出的结构可以用于记录或以其它方式存储关于查询的信息。例如,该结构可以用于识别和记录可能感兴趣的查询的特征。这样的信息可以与分析学结合使用以检查数据源的使用。在一些实施例中,关于被记录的查询的信息可以被编入索引并且可以仅包括先前被识别为敏感的信息。例如,可以记录表格、表格中的列以及与所识别的敏感信息相对应的数据条目。此外,这样的信息经过编辑使得某些信息(诸如名称和/或社会安全号码)不被包括在记录中。
[0025]
所提供的另一服务可以包括查询重写,其可以与查询分析一起使用。可以重写可能对性能产生不利影响的查询。例如,可以添加限制以便不返回太多的结果,移除同义反复,和/或重写查询的其它部分,以提高性能。
[0026]
服务可以用于联合身份管理(例如通过轻量级目录访问协议(ldap))。终端用户请求对数据储存库/数据库的访问并且通过包装提供目录访问凭证。调度器将请求提供给控制联合身份管理的服务。包装/服务确定终端用户是否存在于目录访问服务器(例如ldap服务器)上,在目录访问服务器上认证终端用户的凭证并确定终端用户所属的组。服务使用组信息来访问作为终端用户的代理的数据储存库。
[0027]
公开了用于执行至少一个服务的方法和系统。该方法和系统包括在包装处接收用于数据源的通信。包装包括调度器和至少一个服务。调度器接收通信并且是数据不可知的。该方法和系统还包括将通信从调度器提供给数据源并提供给至少一个服务。该至少一个服务检查通信并且可以执行附加功能。在一些实施例中,调度器是开放系统互连(osi)层4调度器,并且(一个或多个)服务包括(一个或多个)osi层7服务。在一些实施例中,该方法和系统还包括基于通信由至少一个服务执行至少一个功能。至少一个功能可以包括认证服务、多因素认证、数据的令牌化、数据的加密、查询分析、行为基线化和联合身份管理中的一个或多个。例如,可以在客户端处生成通信,并且(一个或多个)服务可以包括认证服务。在这样的实施例中,该方法和系统还包括使用认证服务来确定客户端是否被授权访问数据源,以及在客户端未被授权访问数据源的情况下阻止对数据源的访问。例如,仅当认证服务确定客户端被授权访问数据源时,才可以向数据源提供通信。在一些实施例中,如果认证服务确定客户端未被授权访问数据源,则进行从调度器到数据源的通信并在由数据源处理之前被召回。在一些实施例中,在客户端处生成通信并且该通信包括第一通信。(一个或多个)服务包括认证服务,调度器处于用于来自客户端的第一通信的步进模式中。在这样的实施例中,可以向认证服务提供第一通信,而不将第一通信转发到数据源(步进模式)。认证服务可以使用第一通信来确定客户端是否被授权访问数据源。如果确定客户端未被授权访问数据源,则可以通过终止到客户端的连接来阻止由客户端对数据源的访问。如果确定客户端被
授权,则提供从调度器到数据源的第一通信。调度器也被置于流模式中。在从客户端接收(一个或多个)附加通信时,调度器自动将至少一个附加通信从调度器转发到数据源。
[0028]
公开了可以利用行为基线化的方法和系统。该方法和系统包括在包装处接收通信和与来自客户端的通信相关联的上下文。该通信是针对数据源的。包装包括调度器和服务。该方法和系统还包括将上下文从调度器提供给服务。在一些实施例中,该方法和系统使用服务来将上下文与客户端的行为基线进行比较。行为基线包含先前从客户端接收的多个上下文。该方法和系统还允许客户端仅在上下文与行为基线一致的情况下访问数据源。还可以基于上下文来更新行为基线。在一些实施例中,使用收集器在客户端处拦截通信。收集器确定客户端的上下文并将上下文附加到通信。在一些实施例中,该方法和系统包括在调度器处并且从客户端接收(一个或多个)附加通信以及与(一个或多个)附加通信相关联的(一个或多个)附加上下文。(一个或多个)附加通信是针对数据源的。从调度器向服务提供(一个或多个)附加上下文。服务将上下文和(一个或多个)附加上下文与客户端的行为基线进行比较。在一些实施例中,仅当上下文和(一个或多个)附加上下文与行为基线一致时,才允许客户端访问数据源。在一些实施例中,该方法和系统还包括从(一个或多个)附加客户端接收与通信相关联的(一个或多个)附加上下文。还从调度器向服务提供(一个或多个)附加上下文。在这样的实施例中,服务将上下文和(一个或多个)附加上下文与客户端的行为基线进行比较。
[0029]
公开了用于匿名化数据的方法和系统。该方法和系统包括在包装处接收将数据存储在数据源中的请求。该方法和系统还包括将请求从调度器提供给至少一个服务,并且在(一个或多个)服务处匿名化数据以提供匿名化的数据。可以将匿名化的数据提供给数据源。在一些实施例中,请求包括数据和附加数据。在这样的实施例中,匿名化还包括识别要匿名化的数据。匿名化可以包括对数据进行令牌化和/或加密。可以基于对于数据的策略来选择令牌化和/或加密。在一些实施例中,加密使用格式保留加密。在一些实施例中,该方法和系统还包括从请求者接收对数据的访问请求。请求者被认证。如果请求者被授权接收数据,则该方法和系统包括使匿名化的数据去匿名化并且向请求者提供去匿名化的数据。如果请求者被授权接收匿名化的数据,则该方法和系统包括提供匿名化的数据。
[0030]
描述了用于执行认证的方法和系统。该方法和系统包括从客户端接收在包装处的数据源的通信。提供从调度器到服务的通信。服务确定客户端是否被授权访问数据源。在一些实施例中,服务通过调用多因素认证(mfa)实用程序来确定客户端是否被授权。该方法和系统还包括从mfa实用程序接收成功指示。成功指示指示由mfa实用程序的认证是否成功。在一些实施例中,mfa实用程序是第三方mfa实用程序。该方法和系统还可以包括:如果成功指示指示认证不成功,则阻止对数据源的访问。阻止访问可以包括从调度器提供到数据源的通信,并且如果认证指示指示认证不成功,则在由数据源处理之前召回通信。在一些实施例中,通信包括第一通信,并且调度器处于针对第一通信的步进模式。在这样的实施例中,阻止访问可以包括向服务提供第一通信,而不将第一通信转发到数据源。阻止对数据源的访问可以包括:如果成功指示指示认证不成功,则终止到客户端的连接。此外,如果成功指示指示认证成功,则可以将第一通信从调度器转发到数据源。如果成功指示指示认证成功,则调度器可以被置于流模式中。可以在调度器处接收来自客户端的至少一个附加通信。如果成功指示指示认证成功,则这样的附加通信被自动地从调度器转发到数据源。在一些实
施例中,调度器是开放系统互连(osi)层4调度器,并且其中至少一个服务包括至少一个osi层7服务。
[0031]
描述了用于执行查询分析的方法和系统。该方法和系统包括在包装处接收数据源的查询。该方法和系统还包括将来自调度器的查询提供给数据源和提供给服务。使用服务来分析查询。在一些实施例中,分析查询还包括解析查询,基于查询提供逻辑结构并分析逻辑结构。在一些实施例中,基于逻辑结构提供记录。也可以分析记录。该方法和系统可以包括接收敏感数据和敏感数据策略的标识中的至少一个。在一些这样的实施例中,提供记录还包括基于敏感数据策略和敏感数据的标识来编辑记录的部分。如果对查询的分析指示查询是攻击,则该方法和系统可以阻止对数据源的访问。在一些实施例中,如果对查询的分析指示查询对性能产生不利影响,则该方法和系统重写查询。在一些实施例中,对查询的分析指示对查询的响应的数据在高速缓存中。在这样的实施例中,该方法和系统可以提供来自高速缓存的数据。
[0032]
描述了用于执行联合身份管理的方法和系统。该方法和系统包括在包装处接收数据源的通信。包装包括调度器和服务。调度器接收通信并且是数据不可知的。该通信对应于终端用户的终端用户凭证。该方法和系统包括将通信从调度器提供给数据源和提供给服务。该方法和系统还使用服务来基于终端用户凭证和利用联合身份管理来认证终端用户。在一些实施例中,该方法和系统还包括如果使用联合身份管理来认证终端用户,则由包装作为终端用户的代理来访问数据源。还可以记录数据源的终端用户活动。在一些实施例中,认证终端用户包括向联合身份管理数据源提供终端用户凭证。联合身份管理数据源可以搜索终端用户所属的(一个或多个)组。在一些实施例中,执行对联合身份管理数据源的服务的只读绑定。在这样的实施例中,可以使用只读绑定为终端用户搜索联合身份管理数据源。如果终端用户被认证,则该方法和系统可以包括将服务绑定到联合身份管理数据源作为终端用户的代理。如果终端用户未利用联合身份管理来认证,则可以阻止对数据源的访问。
[0033]
图1是描绘利用客户端和数据源之间的保护层的系统100的示例性实施例的图。系统100包括数据源102和104、客户端106-1、106-2和106-3(统称为客户端106)和包装110。尽管示出了两个数据源102和104、三个客户端106和一个包装110,但是在另一实施例中,可以使用不同数量的数据源、客户端和/或包装。数据源102和104可以是数据库、数据存储、数据仓库或其它数据存储库。客户端106可以是用于最终用户的计算机系统和/或包括向数据源102和104提供请求或查询的应用。客户端106可以是与数据源102和104相同的组织的部分,或者可以是数据源102和104的外部用户。例如,客户端106和数据源102和104可以是通过内部网络耦合的相同商业组织的部分。在其它实施例中,客户端106可以是通过互联网或其它外部网络连接到包装110和/或数据源102和/或104的数据源102和104的外部用户。在一些实施例中,一些客户端106可以是数据源102和104的外部用户,而其它客户端106是与数据源102和104相同的组织的部分。
[0034]
包装110在客户端106与数据源102和104之间提供保护层。包装110被配置成使得其操作是数据不可知的。因此,包装110可以与具有不同平台的、是不同数据库的、或者以其它方式不兼容的数据源102和104一起使用。之所以被称为包装110是因为尽管被描绘为驻留在客户端106与数据源102和104之间,包装110可以被视为包围或形成围绕数据源102和104的安全周界。换句话说,在至少一些实施例中,客户端106不能绕过包装110以便访问数
据源102和104。例如,可以为数据源102和104创建安全性组。调度器112/包装110可以是安全性组的唯一成员。因此,客户端106可以仅通过包装110访问数据源102和104。连接到包装110的客户端106可以在组织内部或外部。因此,包装110不需要驻留在组织或网络的周界。相反,包装110可以驻留在数据源102和104处。换句话说,包装110可以为数据源102和104的请求提供最终安全性或仅有的安全性,并且不需要为组织的其它组件提供安全性。因此,由客户端106做出的请求可以通过网络从包装110直接传递到数据源102和104。
[0035]
包装110为数据源102和104以及客户端106提供安全性和其它服务。为此,包装110包括调度器112和服务114-1和114-2(统称为服务114)。调度器112是数据不可知的,并且在一些实施例中是传输层组件(例如开放系统互连(osi)模型的层4中的组件)。调度器112因此执行有限的功能,而不是层7(应用层)组件。特别地,调度器112接收来自客户端106的传入通信。如本文所使用的,通信包括请求、诸如sql查询之类的查询、或者来自客户端106的用于访问数据源102或104的其它传输。
[0036]
调度器112还将请求提供给适当的(一个或多个)数据源102和/或104以及适当的(一个或多个)服务114-1和/或114-2。然而,调度器112不检查来自客户端106的传入通信,而是识别适当的(一个或多个)数据源102和/或104以及用于通信的对应的(一个或多个)服务114。调度器112不做出关于通信是否被转发到数据源或服务的决定。例如,来自客户端106的通信可以包括指示期望被访问的数据源102的报头和包括查询的分组。在这种情况下,调度器112可以检查报头以识别期望被访问的数据源102并且将分组转发到适当的数据源102。调度器112还将分组提供给适当的(一个或多个)服务114。然而,调度器112不执行分组的深度检查。相反,适当的(一个或多个)服务检查分组。在一些实施例中,调度器112通过存储分组并向(一个或多个)服务114提供指向存储位置的指针来向适当的(一个或多个)服务114提供通信。
[0037]
在一些实施例中,调度器112保存通信(例如分组),而(一个或多个)服务114执行其功能。在其它实施例中,调度器112直接将通信转发到(一个或多个)数据源102和/或104,并且服务114单独执行其功能。在一些实施例中,调度器112是保存还是转发通信取决于调度器112以什么模式来操作。例如,在步进模式中,调度器112可以存储来自客户端106-1的一些或所有通信,而不将通信转发到数据源102和104。在这样的模式中,如果由适当的服务114指示这样做或者如果被适当的服务114置于流模式中,则调度器112仅将通信转发到数据源。尽管不将通信转发到数据源,但是调度器112确实向服务114-1提供通信,例如以用于要被认证的客户端106-1和/或以用于其它功能。如果客户端106-1被认证,则调度器112可以由服务114-1置于流模式中。因此,调度器112将通信转发到适当的(一个或多个)数据源102。因为调度器112现在处于流模式中,所以来自客户端106-1的后续通信然后可以由调度器112直接转发到适当的(一个或多个)数据源102和/或104,即使后续通信也被提供给服务114以用于其它和/或附加功能。因此,调度器112可以在接收到来自服务114的响应/不等待来自服务114的响应的情况下向(一个或多个)数据源提供通信。
[0038]
在一些实施例中,来自(一个或多个)数据源102和/或104的响应也由包装110检查,并且仅在响应被授权时才提供给客户端106。如本文所使用的,来自数据源的响应可以包括从数据源到请求访问的客户端的数据或其它传输。在其它实施例中,来自(一个或多个)数据源102和/或104的响应可以绕过包装110并且被直接提供给客户端106。这由从数据
源104到客户端106-1的虚线指示。因此,在所示的实施例中,数据源104可以绕过包装110并且直接向客户端106-1提供响应。
[0039]
服务114为数据源102和104以及客户端106提供安全性和其它功能。例如,服务114可以包括认证、查询分析、查询重写、高速缓存、令牌化和/或数据加密、高速缓存、高级或多因素认证、联合身份管理和/或其它服务中的一个或多个。此外,本文描述的服务中的一个或多个可以一起使用。服务114比调度器112执行更多的功能,并且可以是应用层(层7)组件。与调度器112相比之下,服务114可以对来自客户端106的通信执行较深度的检查以便提供各种功能。因此,执行其功能的服务114可以与通过调度器112向(一个或多个)数据源102和/或104转发通信解耦合。如果客户端或通信由服务114确定为未经授权或以其它方式无效的,则可以从(一个或多个)数据源102和/或104召回或取消通信,并且终止到客户端的连接。即使由服务114执行的任务与由调度器112进行的通信转发解耦合,通信也可以被召回,因为数据源102和104通常花费比服务114显著更多的时间来执行任务。由数据源102和104所花费的时间可能是由于诸如通过网络从包装110到数据源102和104的传输、在数据源102和104处的队列和/或其它延迟之类的的问题引起的。
[0040]
在一些实施例中,服务114可以执行认证。例如,假设服务114-1验证用于数据源102和104的客户端106的凭证。在一些这样的实施例中,服务114-1可以简单地采用用户名和密码的组合。在其它实施例中,通过一个或多个服务114提供多因素认证(mfa)、证书和/或其它更高级别的授权。本文描述了这样的认证。然而,调度器112仍然可以是数据不可知组件,诸如层4组件。
[0041]
在一些实施例中,由调度器112和服务114执行的这种功能的分离可以由例程或其它轻量的(一个或多个)过程来促进。例如,诸如客户端106-2之类的客户端可以通过特定端口请求对数据源104的访问。包装110可以利用端口上的(一个或多个)监听器(图1中未示出)来识别对数据源102和104的请求。响应于对访问的请求,针对该端口上的包装110建立到客户端106-2的连接,并且生成与连接相对应的例程。在一些实施例中,例程仅负责该连接。来自客户端106-2的通信也被提供给调度器112。调度器112例如通过消息总线(图1中未示出)向适当的(一个或多个)服务114提供通信以用于认证。调度器112可以将通信保存(在步进模式中)或转发(在流模式中)到(一个或多个)数据源102和/或104。如果客户端106-2未被认证或稍后由(一个或多个)服务114确定为未被授权的,则(一个或多个)服务114向调度器112指示这一点。例如,(一个或多个)服务114可以通过消息总线向调度器112提供客户端106-2未被授权/对应的例程具有未授权的连接的消息。调度器112与对应的例程通信,该例程终止到客户端106-2的连接。因此,可以使用数据不可知的层4调度器112来安全地管理到客户端106的连接。
[0042]
使用系统100和包装110可以保护数据源102和104,并且可以通过(一个或多个)服务114提供其它特征。由于使用数据不可知的调度器112,包装110可以与不共享平台或以其它方式不兼容的各种数据源102和104一起运行。例如在云中或在场所中的包装110的部署不需要现有代码的改变。因此,包装110的实施方式可以是无缝的并且对于开发者而言相对容易。此外,包装110不需要保护特定组织内的每个组件。相反,可以仅保护选择的数据源。因为即使当访问数据源的应用的数量显著增长时,数据源的数量也可能不会显著增加,所以使用用于如本文中所描述的安全性的服务114可以在保护敏感数据时既更有效又更便
宜。此外,利用服务114,由包装110提供的安全性和/或功能的级别可以针对不同的数据源而不同。还可以由服务114提供附加功能性。
[0043]
图2是描绘利用客户端和数据源之间的保护层的系统200的另一示例性实施例的图。系统200类似于系统100并且包括类似地标记的组件。系统200指示可以使用具有不同服务的多个包装。因此,系统200包括数据源202-1、202-2(统称为202)和204、客户端206-1、206-2和206-3(统称为客户端206)和包装210a和210b(统称为包装210)。尽管示出了三个数据源202-1、202-2和204、三个客户端206和两个包装210,但是在另一实施例中,可以使用不同数量的数据源、客户端和/或包装。数据源202-1、202-2和204以及客户端206分别类似于数据源102和104以及客户端106。包装210a和210b类似于包装110。因此,包装210a包括调度器212a和服务214-1a和214-2a(统称为服务214a)。类似地,包装210b包括调度器212b和服务214-1b、214-2b和214-3b(统称为服务214)。服务214a可以不同于服务214b或被包括在服务214b中。包装210a控制对数据源202的访问,而包装210b以类似于本文中其它地方描述的方式控制对数据源204的访问。一般来说,具有多个服务的一个包装可以对组织中的所有数据源起作用。然而,如图2中所描绘的,没有什么来阻止多个包装的使用。此外,尽管包装210a和210b被示出为控制对不同数据源202和204的访问,但是在其它实施例中,包装可以控制相同的数据源。例如,在另一实施例中,包装210b可以服务数据源202-1和数据源204两者。
[0044]
图3是描绘利用客户端和数据源之间的保护层的系统300的另一示例性实施例的图。系统300类似于系统100和200并包括类似地标记的组件。系统300还包括收集器320-1、320-2和320-3(统称为收集器320)。因此,系统300包括数据源302和304、客户端306-1、306-2和306-3(统称为客户端306)以及客户端306-4和包装310。尽管示出了两个数据源302和304、四个客户端306和一个包装310,但是在另一实施例中,可以使用不同数量的数据源、客户端和/或包装。数据源302和304以及客户端306分别类似于数据源102和104以及客户端106。包装310类似于包装110。因此,包装310包括调度器212和服务314-1、314-2、314-3、314-4和314-5(统称为服务314)。包装310控制对数据源302和304的访问。还示出了可以由服务314使用的实用程序330-1和330-2。例如,服务314-1可以使用实用程序330-1执行认证和多因素认证。服务314-6可以使用实用程序330-2执行联合身份管理。其它和/或附加的实用程序可以与系统300以及(一个或多个)系统100和/或200结合使用。服务314-2可以执行如本文所述的查询分析。服务314-3可以基于来自收集器320的输入执行行为建模。服务314-4可以执行敏感数据的令牌化和/或加密。服务314-5可以基于由服务314-2执行的分析来重写查询。可替代地,服务314-2还可以重写查询。因此,服务314-5可以执行诸如高速缓存之类的另一功能。还可以提供本文未描述的其它服务。在一些实施例中,可以一起使用两个或更多个服务。
[0045]
收集器320驻留在一些客户端306上。在一些实施例中,客户端306中的每个包括收集器。在其它实施例中,如图3所示,并非所有客户端306都包括收集器。在一些实施例中,客户端306都不包括收集器。例如,客户端306可以包括终端用户、应用和/或由终端用户利用的微服务。因此,客户端306可以在通信被提供给包装310之前将通信传递到彼此。这由客户端306-2和客户端306-3之间的点虚线指示。收集器320拦截来自客户端306的通信,并将发出通信的客户端/应用的状态附加到通信上。例如,收集器320-1可以拦截来自客户端306-1
上的应用的查询或方法调用并检查应用的状态。可以由收集器306-1检测会话的类型、收/放/公布/删除命令、api、ip地址、查询属性、方法调用、查询的顺序等。这些代表查询/通信的上下文。收集器320将该上下文附加到来自对应的客户端306的查询/通信。在微服务/多个应用在查询被发送到数据源之前传递查询的情况下,每个微服务/应用306的收集器320可以应用来自该微服务/应用的上下文。例如,从客户端306-2传递到客户端306-3然后到包装的查询可以包括由收集器320-2提供的第一上下文和由收集器320-3提供的第二上下文。如果正在传递查询的客户端306中的一个或多个不包括收集器,则该客户端仅仅不附加来自客户端的上下文。例如,如果查询从客户端306-1传递到客户端306-4然后到客户端306-3,则来自收集器320-1的第一上下文和来自收集器320-3的第二上下文被附加到查询。在这样的实施例中,因为针对客户端306-4不存在收集器,所以没有上下文由客户端306-4附加。当访问数据源302或304时,查询和(一个或多个)上下文被传递到包装310。在多个访问期间,可以由包装310(例如诸如服务314-3之类的服务)使用上下文来确定每个应用对(一个或多个)数据源302和/或304的访问的行为(状态/上下文的序列)。行为的模型(例如使用隐马尔可夫模型)可以提供行为基线。通过服务314-3将后续访问与基线进行比较以确定当前查询/通信是否与基线匹配。如果不是,则可以采用附加的验证/防御机制。例如,如本文所述,可以终止连接,否则可以拒绝对数据源302和/或304的访问和/或可以通过服务314利用诸如mfa之类的附加形式的验证。
[0046]
系统300可以提供系统100和/或200的益处。另外,系统300可以通过收集器320提高安全性。此外,可以通过包装310提供从客户端306到数据源302和304的端到端可见性。因此,可以提高系统300的性能。
[0047]
图4是描绘用于认证数据源的客户端的方法400的示例性实施例的流程图。方法400在系统100的上下文中描述。然而,方法400可以与包括但不限于系统200和300的其它系统结合使用。为了简单起见,描绘了方法400的某些步骤。方法400可以包括其它和/或附加的步骤和子步骤。此外,方法400的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序来执行。每当客户端开始与数据源的通信的会话时,可以执行方法400。
[0048]
在402处,包装110的调度器112从客户端接收请求对一个或多个数据源的访问的通信。例如,调度器112可以从客户端106-1接收请求对数据源102的通信的访问。在建立了包装110与客户端106-1之间的连接并且生成对应的例程或其它对应的轻量过程之后,可以在调度器112处接收通信。除了识别数据源102和客户端106-1之外,该请求还可以包括用于客户端106-1的凭证。在一些实施例中,在方法400开始时,调度器112处于步进模式中。因此,在404处,调度器112提供从客户端106-1到执行认证的服务114-1的通信。例如,调度器112可以通过消息总线(在图1中未单独标记)向服务114-1发送通信的有效载荷。然而,因为调度器112处于步进模式中,所以调度器112也不将通信转发到所请求的数据源102。此外,因为调度器112是诸如层4组件之类的数据不可知组件,所以调度器112不执行对通信的较深度的检查。相反,因为调度器112处于步进模式中,所以调度器112仅仅保存(例如存储)通信。如果调度器112处于流模式中,则调度器112也将分组转发到适当的数据源102。
[0049]
在406处,服务114-1执行客户端106-1的认证。在一些实施例中,可以使用证书和/或诸如用户名和密码之类的其它凭证来执行认证。在一些实施例中,可以使用(下面进一步详细描述的)mfa。另外,如果在系统中存在诸如收集器320之类的收集器,则由客户端106-1
提供的通信的上下文可以在406处用于认证。例如,可以将由收集器320附加到通信的上下文与由系统100根据由客户端106-1进行的先前通信建模的行为基线进行比较,以确定上下文是否充分匹配先前行为。在一些实施例中,可以使用其它和/或附加的认证机制。
[0050]
在408处,如果请求访问的客户端未被认证,则阻止对数据源的访问。例如,可以通知与客户端106-1的连接对应的例程并终止连接。也可以使用用于阻止访问的其它机制。由调度器112保存的通信也被丢弃。在其它实施例中,如果调度器112已经将通信转发到数据源102,则在408处召回通信。
[0051]
如果客户端被认证,则在410处,调度器112在410处被置于流模式中。因此,在410处将被保存的通信转发到所选择的数据源102。此外,在412处,对应于与客户端106-1的经认证的连接的未来通信被转发到所选择的数据源102和适当的(一个或多个)服务114。例如,服务114-1可以在410处向调度器112提供将调度器112从步进模式改变到流模式的消息。因此,调度器112还将通信转发到对应的数据源102。通过相同的连接在调度器112处从客户端106-1接收的未来通信可以被提供给服务114中的一个以及所选择的数据源102两者。因此,客户端106被允许从数据源102请求和接收数据。然而,认证仍然可以继续。例如,在414处,可以使用本文描述的行为基线化、重新验证凭证的周期性请求或其它机制。如果客户端106-1失去其认证,则在414处,可以召回从客户端到所选择的数据源的通信并且阻止对数据源的进一步访问。例如,可以通知负责到客户端106-1的连接的例程并且终止连接。因此,可以使用作为数据不可知的组件(诸如层4组件)的调度器112来安全地管理到客户端106的连接。
[0052]
使用方法400,数据源102和104可以被保护。由于使用数据不可知的调度器112,包装110可以与不共享平台或以其它方式不兼容的各种数据源102和104一起运行。例如在云中或在场所中的包装110的部署不需要现有代码的改变。因此,包装110的实施方式可以是无缝的并且对于开发者而言相对容易。此外,包装110不需要保护特定组织内的每个组件。相反,可以仅保护选择的数据源。因为即使当访问数据源的应用的数量显著增长时,数据源的数量也可能不会显著增加,所以使用用于如本文中所描述的安全性的服务114可以在保护敏感数据时既更有效又更便宜。此外,利用服务114,由包装110提供的安全性和/或功能的级别可以针对不同的数据源而不同。
[0053]
图5是描绘用于对客户端和数据源执行一个或多个服务的方法500的示例性实施例的流程图。方法500在系统100的上下文中描述。然而,方法500可以与包括但不限于系统200和300的其它系统结合使用。为了简单起见,描绘了方法500的某些步骤。方法500可以包括其它和/或附加的步骤和子步骤。此外,方法500的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序来执行。在一些实施例中,一旦完成客户端的认证并且调度器112处于流模式中,则方法500可以被认为是可操作的。
[0054]
在502处,包装110的调度器112从客户端接收通信。例如,调度器112可以从客户端106-2接收关于数据源104的查询的通信。期望一个或多个服务114与通信一起使用。因此,在504处,调度器112提供从客户端106-2到(一个或多个)服务114的通信。另外,在504处,调度器112将通信转发到所请求的数据源104。换句话说,调度器112向期望的(一个或多个)数据源和(一个或多个)服务两者提供通信的相关部分。因为调度器112是诸如层4组件之类的数据不可知的组件,所以调度器112不执行对通信的较深度的检查。相反,调度器112仅仅将
通信转发到期望的(一个或多个)数据源102和/或104以及到(一个或多个)服务114两者以用于进一步处理。
[0055]
在506处,使用服务114中的一个或多个来提供期望的功能。这可以包括检查通信以及完成其它任务。例如,在506处,服务114可以用于各种类型的认证、查询分析、联合身份管理、行为建模、查询重写、高速缓存、敏感数据的令牌化或加密和/或其它过程。因此,服务114可以是层7组件。然而,由服务114执行的任务与由调度器112将通信转发到数据源解耦合。
[0056]
使用系统方法500和包装110,可以保护数据源102和104并且可以通过(一个或多个)服务114提供其它特征。由于使用数据不可知的调度器112,因此包装110可以与不共享平台或以其它方式不兼容的各种数据源102和104一起运行。由服务114执行的功能与由调度器112将通信转发到数据源解耦合。因此,可以为数据源102和104提供各种特征,而不会对数据源102和104的性能产生不利影响。因此,可以提高系统100的性能。
[0057]
图6是描绘用于执行用于客户端和数据源的多因素认证(mfa)的方法600的示例性实施例的流程图。方法600在系统300的上下文中描述。然而,方法600可以与包括但不限于系统200和300的其它系统结合使用。为了简单起见,描绘了方法600的某些步骤。方法600可以包括其它和/或附加的步骤和子步骤。此外,方法600的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序来执行。在一些实施例中,方法600可以被认为用于实施方法400和/或500中的406和/或506。出于说明的目的,假设服务314-1提供多因素认证。方法600可以被认为在mfa服务314-1从调度器312接收到通信之后开始。此外,调度器312可以在方法600开始时处于步进模式中。因此,调度器312可以保存通信而不是将通信转发到(一个或多个)数据源。在其它实施例中,调度器312可以处于流模式中。因此,调度器312还可以向适当的数据源提供通信。除了由服务314-1或另一服务执行的其它认证(诸如基于证书或用户标识/密码的认证)之外,还可以执行mfa。尽管在用于对单个数据源的访问的认证的上下文中进行了描述,但是在一些实施例中,方法600可以用于为多个数据源认证(一个或多个)客户端。
[0058]
在602处,服务314-1调用mfa实用程序330-1。在602处联系的mfa实用程序330-1可以是诸如duo之类的第三方mfa。可替代地,mfa实用程序330-1可以是(一个或多个)数据源302和/或304所属的组织的部分。在604处,mfa实用程序330-1为请求客户端执行多因素认证。例如,假设客户端306-2的终端用户已经请求对数据源304进行访问。用户标识和密码可能已经由服务314-1验证。在602处,调用mfa实用程序330-1。因此,终端用户在604处由mfa实用程序330-1单独联系,并由mfa设施请求以确认用户。例如,可能需要终端用户在单独设备上输入代码或响应于提示。作为604的部分,服务314-1被通知由mfa实用程序330-1的多因素认证是否成功。换句话说,作为604的部分,服务314-1从mfa实用程序330-1接收成功指示。成功指示向mfa实用程序330-1通知mfa认证是否成功。
[0059]
在606处,如果由mfa实用程序330-1的多因素认证成功,则服务314-1指示调度器312将通信转发到所请求的数据源304。在一些实施例中,响应于接收到肯定的成功指示(即,mfa认证成功),服务314-1指导调度器312将通信转发到所请求的数据源304。在一些实施例中,在606处,指示调度器312从步进模式改变到流模式。因此,可以向数据源304和一个或多个服务314两者提供后续通信。在其它实施例中,调度器312仅仅被允许在606处继续向
数据源304转发通信。然而,如果多因素认证不成功,则在608处,服务314-1指示调度器312阻止对所请求的数据源304的访问。例如,响应于接收到否定的成功指示(即mfa认证不成功),服务314-1指导调度器312阻止对所请求的数据源304的访问。作为响应,调度器312可以指示对应的例程终止与请求客户端106的连接。如果通信已经被转发到数据源304,则调度器312还召回通信。在一些实施例中,可以指示调度器312保持在步进模式中,并且请求客户端重新提交凭证和/或用于使用的认证的另一机制。在一些实施例中,响应于ma不成功,可以采取其它一个或多个动作。
[0060]
使用方法600,可以以数据不可知的方式为(一个或多个)数据源302和/或304提供mfa。诸如数据库之类的某些数据源通常不支持mfa。因此,方法600可以向这样的数据源提供附加的安全性,而不需要对数据源302和304的代码进行改变。因此,可以以简单、成本有效的方式来提高系统100的安全性。
[0061]
图7是描绘用于执行用于数据源的客户端的联合身份管理的方法700的示例性实施例的流程图。联合身份管理允许终端用户基于组身份和使用凭证的单个集合来访问组织中的各种设施,诸如多个数据库、电子邮件、分析学或其它应用。例如,终端用户可以是财务部门中的数据分析员。因此,终端用户可以被认为是三个组的成员:雇员、数据分析员和财务部门。终端用户的用户标识和密码可以允许终端用户访问其公司/雇员电子邮件、财务部门的应用、包括由财务部门使用的信息的数据库(诸如组织的财务预测)、可由数据分析员访问的分析学应用和基于终端用户的在组织内的各个组中的成员资格的其它数据。联合身份管理可以使用诸如轻量的目录访问协议(ldap)之类的协议和定义每个终端用户所属的组的目录。
[0062]
方法700在系统300的上下文中描述。然而,方法700可以与包括但不限于系统100和200的其它系统结合使用。为了简单起见,描绘了方法700的某些步骤。方法700可以包括其它和/或附加的步骤和子步骤。此外,方法700的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序执行。在一些实施例中,方法700可以被认为用于实施方法500中的506。出于说明的目的,服务314-6被认为提供联合身份管理。方法700可以被认为在服务314-6从调度器312接收通信之后开始。
[0063]
在702处,服务314-6接收终端用户的凭证。例如,调度器312向服务314-6转发请求对数据源302进行访问的通信。通信可以包括用于联合身份管理的终端用户的用户标识和密码。在其它实施例中,终端用户凭证以其它方式与通信相关联,但是被提供给服务314-6。在704处,服务314-6利用诸如ldap目录之类的联合身份管理实用程序或数据库330-2认证终端用户。利用用户标识和密码来认证终端用户。在706处,服务314-6针对终端用户所属的(一个或多个)组来搜索联合身份管理数据库330-2。在708处,使用用户是成员的(一个或多个)组中的一个或多个,包装310作为终端用户的代理登录到数据源302。然后,终端用户可以根据终端用户所属的(一个或多个)组的特权和限制来访问数据源302。
[0064]
使用方法700,可以为(一个或多个)数据源302和/或304实现联合身份管理。一些数据库不支持联合身份管理。方法700和具有数据不可知的调度器312的包装310可以在不改变数据库的情况下为对这样的数据库的联合身份管理创造条件。因此,终端用户可能能够访问期望的数据源。此外,组织可以使用联合身份管理数据库中的组来管理对数据源的访问。这可以在不需要对数据源302和304进行改变的情况下实现。因为包装310作为终端用
户的代理访问数据源302和/或304,所以包装310可以记录终端用户的活动。例如,联合身份管理服务314-6可以存储与由终端用户执行的查询以及终端用户的身份相关的信息。因此,尽管使用联合身份管理允许基于组来对应用和数据源进行访问,但组织可以获得对个体终端用户的活动的可见性。除了通过联合身份管理来提高管理的容易性之外,可以实现对个体使用数据源302和304的改进的信息和控制。
[0065]
图8是描绘用于使用ldap目录执行用于数据源的客户端的联合身份管理的方法800的示例性实施例的流程图。方法800在系统300的上下文中描述。然而,方法800可以与包括但不限于系统100和200的其它系统结合使用。为了简单起见,描绘了方法800的某些步骤。方法800可以包括其它和/或附加的步骤和子步骤。此外,方法800的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序来执行。在一些实施例中,方法800可以被认为用于实施方法500中的506和/或方法700中的704、706和/或708。出于说明方法800的目的,服务314-6被认为通过ldap提供联合身份管理。方法800被认为在包装310被提供有用于ldap目录330-2的专用账户之后开始。专用账户允许包装310从ldap目录330-2获得不可用于典型终端用户的信息,诸如终端用户的标识和终端用户所属的组。在一些实施例中,账户是用于包装310的只读账户。
[0066]
在802处,服务314-6使用只读账户绑定到ldap目录。这可以在接收到终端用户的凭证和使用联合身份管理的对数据源的访问的请求之前的某个时间发生。在一些实施例中,服务314-6与ldap目录的绑定允许服务314-6提供联合身份管理服务。
[0067]
请求对(一个或多个)数据源302和/或304的访问的通信在调度器310处被接收,并且以类似于方法500中的502和504的方式被提供给服务314-6。通信包括终端用户的ldap凭证。因此,在服务314-6处接收终端用户的ldap凭证。在804处,在接收到终端用户的ldap凭证之后,服务314-6可以使用只读账户在ldap目录中搜索终端用户。搜索ldap目录330-2允许服务314-6确定用户是否存在于ldap目录330-2中。如果不是,则包装310可以阻止对期望的(一个或多个)数据源的访问。然而,如果在804处找到终端用户,则在806处,服务314-6作为终端用户的代理绑定到ldap目录。
[0068]
然后,在808处,服务314-6可以请求搜索终端用户所属的组。这由包装310的只读账户促进。因此,服务314-6可以确定终端用户所属的组以及对每个组的特权和限制。在810处选择要用于访问(一个或多个)数据源302和/或304的组。在一些实施例中,服务314-6基于其特权来对组进行排名。具有更多特权(例如能够访问更多的数据源或更多关于特定数据源的信息)的组排名更高。在一些实施例中,服务314-6为终端用户选择排名最高的组。在一些实施例中,服务314-6选择排名最低的组。在一些实施例中,允许用户选择组。在其它实施例中,可以使用另一选择机制。
[0069]
在812处,使用所选择的组来访问期望的(一个或多个)数据源。因此,终端用户可以基于其在所选择的组中的成员资格来访问数据和/或应用。在814处,由包装310记录与终端用户的活动相关的信息。例如,服务314-6可以直接记录终端用户活动,或者可以利用诸如查询分析之类的另一服务来这样做。
[0070]
使用方法800,终端用户可以能够借助于通过ldap目录执行的联合身份管理来访问期望的数据源。因此,可以实现联合身份管理的益处。此外,可以记录终端用户的动作。因此,可以获得对个体终端用户的活动的可见性。
[0071]
图9是描绘用于分析和记录与数据源的查询相关的信息的方法900的示例性实施例的流程图。方法900在系统100的上下文中描述。然而,方法900可以与包括但不限于系统200和300的其它系统结合使用。为了简单起见,描绘了方法900的某些步骤。方法900可以包括其它和/或附加的步骤和子步骤。此外,方法900的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序执行。在一些实施例中,方法900可以被认为用于实施方法500中的506。出于说明方法900的目的,服务114-1被认为提供查询分析和记录。因此,诸如客户端106-1之类的客户端可以被认为针对(一个或多个)数据源102和/或104进行认证,并且对数据源102和104中的一个或两个执行数据的查询。在一些实施例中,查询可以是sql查询。
[0072]
在902处,包装110在(一个或多个)数据源102和/或104中接收感兴趣的信息的标识。此外,在902处,还接收与敏感信息相关的策略。在902处接收该信息可以与接收查询和分析对方法900的其余部分的查询解耦合。例如,(一个或多个)数据源102和/或104的(一个或多个)所有者可以向包装110指示哪个表、表中的列/行和/或表中的条目包括感兴趣或敏感的信息。例如,可以在902处识别包括客户名称、社会安全号码(ssn)和/或信用卡号(ccn)的表。还可以在902处识别指示ssn、ccn和客户名称的表内的列和/或诸如特定客户的名称的个体条目。该标识向包装110提供期望被记录和/或以其它方式管理的信息。此外,在902处提供与该信息相关的策略。在902处,将是否要执行任何记录或是否要限制任何记录提供给包装。例如,可以期望记录客户表的任何用户访问。策略指示包括这样的访问的查询将被记录。还可以在策略中指示是否应当为记录编辑诸如由客户表的查询生成的ssn之类的数据。
[0073]
在903处,包装110在调度器112处接收来自客户端的查询并将查询提供给服务114-1。作为903的部分,查询还可以从调度器112发送到适当的(一个或多个)数据源。过程903类似于方法500中的502和504。因此,在服务114-1处接收查询。在904处,服务114-1解析由客户端106提供的查询。例如,客户端106-1可以向包装110提供对数据源102的查询。调度器112接收查询并向数据源102和向服务114-1两者提供查询。服务114-1解析查询以确定哪些操作被请求以及在数据源102的哪些部分上。因此,在906处,服务114-1发出描述查询并基于解析的逻辑结构。在一些实施例中,逻辑结构是对应于查询的抽象语法树。树中的每个节点可以代表正在被搜索的表、查询中的操作、以及关于操作的信息。例如,节点可以指示结合操作或搜索操作,并且可以被注释有对操作的限制。
[0074]
在908处,记录查询。记录可以包括提供查询以及查询字符串的终端用户/客户端106-1。另外,从抽象语法树提取的特征可以以可索引的或以其它更易用于分析学的方式来记录。此外,记录可以被配置成人可读的。在一些实施例中,可以使用json记录。例如,在查询中访问的操作和表的列表可以被包括在记录中。可以根据在902处接收的敏感信息的标识和与敏感信息相关的策略从记录中编辑诸如ssn之类的敏感信息。因此,代替由查询访问的实际敏感信息,可以在记录中提供占位符。在一些实施例中,在909处分析逻辑结构和/或记录。该过程可以包括分析抽象语法树和/或记录中的信息。
[0075]
在910处,基于查询分析和/或记录,可以由包装110采取附加动作。例如,如果在909中确定在908中生成的记录指示查询可能对性能产生不利影响,则可以采用作为服务114-1或单独服务的部分的查询重写服务。例如,可以对查询、诸如“或”子句之类的子句和/或标识和/或移除的同义反复进行限制。作为结果,可以重写导致过多的行被返回的查询以
减少行的数量。如果查询分析的记录或其它部分指示查询可以代表攻击,则在910处可以拒绝对数据源的访问。例如,逻辑结构和记录的在909处的分析可以指示查询包括用户的名称中的通配符或同义反复。对应的例程可以终止到客户端的连接,其中查询源自该客户端。如果查询已经被传递到数据源102,则可以在910处取消查询。因此,可以阻止敏感信息的不想要的漏出。如果查询分析指示类似的查询最近被服务,则可以使用已经存在于高速缓存中的类似查询的信息的一些或全部来服务查询。如果查询可以完全由高速缓存中的信息服务,则可以在由数据源102服务之前或期间从数据源102召回查询/取消查询。因此,可以基于服务114-1对查询的分析来采取各种动作。
[0076]
例如,如上所述,假设数据源102包括客户信息的客户表,该客户信息具有客户名称的列、客户ssn、客户ccn、令牌化ccn(例如利用fpe加密或由令牌代表的ccn)和客户标识符(cid)。假设数据源102还包括订单表,其包括客户订单表。该表包括订单客户标识符(ocid)的列和针对每个客户标识符的多个订单的列。在每个订单列中,指示订单的物品价格。订单表的订单客户标识符与对于数据源102的在客户表中的客户标识符相同。查询分析和记录可以由服务114-1执行。
[0077]
在902处,通知服务114-1客户表和客户名称的列、客户ssn和(令牌化的)客户ccn是期望被记录的活动的敏感信息。此外,在902处,通知服务114-1要从记录中编辑客户名称和ssn。数据源102的查询可以由客户端106-1的终端用户提供给调度器112。调度器112将查询转发到数据源102和到服务114-1。查询是:借助客户标识符=订单客户标识符并且其中名称=johnsmith(其中john是特定客户的名称)来从客户表结合订单表中选择对象价格。因此,查询确定由john smith订购的对象的价格。图10描绘了在906处从查询生成的对应的抽象语法树1000。为了清楚起见,已经对抽象语法树进行注释。节点1002、1004、1012、1022和1032以及连接节点1002、1004、1012、1022和1032的线代表查询。在908处,由服务114-1从抽象语法树1002生成记录。记录指示客户表已经由客户端106-1的终端用户访问,列客户名称被读取,并且其中名称=[编辑的内容]被访问。该信息可以以可易于由分析学使用、可索引和/或可搜索的格式提供。在一些实施例中,也可以在记录中提供形成查询的字符串。然而,因为它们未被识别为感兴趣的,所以订单表、cid、ocid和对象价格不被包括在记录的可索引部分中。
[0078]
因此,使用方法900,可以提高系统100的性能。方法900可以促进对所执行的查询的分析,辅助响应于攻击,和/或提高数据源的性能。因为调度器112是数据不可知的并且可以是传输层组件,所以这可以在不需要对数据源102和104进行改变的情况下实现,同时保持数据源102和104的稳定性。因此,可以增强系统100的性能和安全性。
[0079]
图11a和11b是描绘用于利用敏感数据的令牌化和/或加密的方法的示例性实施例的流程图。图11a是描绘用于在数据源处使用令牌化和/或加密来存储数据的方法1100的示例性实施例的流程图。方法1100在系统300的上下文中描述。然而,方法1100可以与包括但不限于系统100和200的其它系统结合使用。为了简单起见,描绘了方法1100的某些步骤。方法1100可以包括其它和/或附加的步骤和子步骤。此外,方法1100的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序执行。在一些实施例中,方法1100可以被认为用于实施方法500中的506。
[0080]
方法1100可以被认为在系统300接收到指示要如何处理敏感数据的策略之后开
始。例如,指示什么数据是敏感的(例如哪些表/条目包括敏感数据)、允许什么客户端能够访问敏感数据、出于什么目的允许(一个或多个)客户端能够访问敏感数据、敏感数据将如何被匿名化(例如令牌化和/或加密)、和/或由数据源302和/或304的控制器期望的其它信息的策略已经由包装310接收并被提供给适当的(一个或多个)服务。尽管在对单个数据源的访问的上下文中进行了描述,但是在一些实施例中,方法1100可以用于多个数据源。在一些实施例中,相同的服务满足存储敏感数据的请求和获得敏感数据的请求。在一些实施例中,一些(一个或多个)服务可以服务对存储数据/令牌化数据的请求,而其它(一个或多个)服务用于获得令牌化数据。然而,这样的服务进行通信以便服务请求中的至少一些。在一些实施例中,相同的服务可以利用不同类型的匿名化(例如令牌化和加密)。在其它实施例中,不同的服务可以用于不同类型的匿名化。例如,一个服务可以令牌化数据,而另一个服务对数据进行加密。方法1100被描述为结合方法1150使用。在其它实施例中,方法1100可以与用于访问加密/令牌化的数据的不同方法一起使用。
[0081]
在1102处,由包装接收来自客户端的在数据源处存储敏感数据的请求。在1104处,数据不可知的调度器将请求转发到加密/令牌化服务以匿名化期望被存储的敏感数据。在1106处,基于所提供的策略和/或服务的能力,敏感数据被匿名化。在一些实施例中,期望被存储的数据包括期望被匿名化的敏感数据以及不需要被匿名化的数据。在这样的实施例中,1106还包括识别要被匿名化的敏感数据。在一些实施例中,匿名化数据包括对数据进行加密和/或令牌化。对于一些敏感数据,可以使用诸如格式保留加密(fpe)之类的加密。例如,ccn和ssn可以使用fpe加密,使得加密数据具有与ccn和ssn相同数量的数字(即,使得格式被保留)但不具有固有含义。具有九个成员的字母数字字符串可以替换ssn。在1106处,也可以使用其它类型的加密、令牌化和/或数据掩蔽。因此,在1106处,敏感数据被匿名化。因为可以使用策略来确定数据如何被加密/令牌化以及什么数据被加密/令牌化,所以在属性级别上执行1106。例如,用户的ccn可以由fpe加密,但是同一用户的ssn可以由基于由加密/令牌化服务使用的策略的令牌来替代。在1108处,将匿名化的数据存储在数据源中。因此,可以保留代替实际敏感数据的匿名化的数据。在一些实施例中,敏感数据还可以存储在例如可能需要增强的认证来进行访问的安全数据仓库中。因此,使用方法1100,可以使用数据不可知的调度器来令牌化和/或加密和存储敏感数据。
[0082]
图11b是描绘用于从数据源访问令牌化和/或加密数据的方法1150的示例性实施例的流程图。方法1150在系统300的上下文中描述。然而,方法1150可以与包括但不限于系统100和200的其它系统结合使用。为了简单起见,描绘了方法1150的某些步骤。方法1150可以包括其它和/或附加的步骤和子步骤。此外,方法1150的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序执行。在一些实施例中,方法1150可以被认为用于实施方法500中的506。方法1150可以被认为在系统300接收到指示要如何处理敏感数据的策略之后开始。例如,指示什么数据是敏感的(例如哪些表/条目包括敏感数据)、允许什么客户端能够访问敏感数据、出于什么目的允许(一个或多个)客户端能够访问敏感数据、敏感数据将如何被匿名化(例如令牌化和/或加密)、和/或由数据源302和/或304的控制器期望的其它信息的策略已经由包装310接收并被提供给适当的(一个或多个)服务。尽管在对单个数据源的访问的上下文中进行了描述,但是在一些实施例中,方法1150可以用于多个数据源。在一些实施例中,相同的服务满足存储敏感数据的请求和获得敏感数据的请求。在一些实施例
中,一些(一个或多个)服务可以服务存储数据/令牌化数据的请求,而其它(一个或多个)服务用于获得令牌化数据。然而,这样的服务进行通信以便服务请求中的至少一些。在一些实施例中,相同的服务可以利用不同类型的匿名化(例如令牌化和加密)。在其它实施例中,不同的服务可以用于不同类型的匿名化。例如,一个服务可以令牌化数据,而另一个服务对数据进行加密。方法1150被描述为结合方法1100使用。在其它实施例中,方法1150可以与用于匿名化数据的不同方法一起使用。
[0083]
在1152处,由包装接收对存储在数据源处的敏感数据的请求。请求可以来自存储数据的同样的客户端或不同的客户端。因为对数据的(一个或多个)请求可以独立于存储,所以1152到1162可以与1102到1108解耦合。例如,请求可以在1152处在不同的时间被接收,或者可以不被接收。因此,单独地描述了方法1100和1150。在1154处,调度器将访问敏感数据的请求提供给加密/令牌化服务。还可以将请求转发给存储匿名化的数据的数据源。
[0084]
在1156处,加密/令牌化服务确定请求者拥有什么类型的授权。请求者可以仅被授权接收匿名化的(例如令牌化/加密的)数据。例如,请求客户端可以是与系统300相关联的数据科学家的计算机系统。数据科学家/客户端可以被允许跟踪信用卡号的使用,但是不被授权知道真实信用卡号。请求者可以被授权接收原始的敏感数据。例如,请求客户端可以是商家的支付系统或原始用户的计算机系统,这两者都可以被授权接收去匿名化的(例如未加密/去令牌化的)敏感数据。然而,请求者可能未被授权接收任一数据。例如,请求客户端可能是试图窃取敏感数据的恶意个体。因此,在1156处,加密/令牌化服务验证用于请求客户端的凭证。加密/令牌化服务可以使用密码、证书、多因素认证、通过(一个或多个)收集器和/或其它(一个或多个)机制的行为基线化。因此,在1156处,加密/令牌化服务可以调用另一服务以执行认证。
[0085]
在1158处,如果请求客户端被确定为被授权接收敏感数据,则在数据源处存储的匿名化的数据被检索、去匿名化并被提供给客户端。例如,加密/令牌化服务可以解密和/或去令牌化在数据源中存储的数据。在另一实施例中,代替或除了对数据进行解密/去令牌化之外,加密/令牌化服务可以从安全数据仓库(图3和图11a-11b中未示出)检索原始的敏感数据。然后,在1158处,敏感数据被发送到授权的请求者。
[0086]
在1160处,如果请求客户端被确定为被授权仅接收匿名化的数据,则检索该匿名化的数据并将其发送到请求者。例如,加密/令牌化服务可以仅仅从数据源检索匿名化的数据并将该数据转发到请求客户端。在一些实施例中,请求者可以被授权接收敏感数据和匿名化的数据中的任一或两者。在这样的实施例中,1158和/或1160可以包括确定请求者是否已经选择了匿名化的/去匿名化的数据并且提供匿名化的/去匿名化的数据。在一些实施例中,可以提供匿名化的数据和去匿名化的数据两者。
[0087]
然而,如果确定请求者未被授权,则在1162处采取其它动作。例如,例程可以终止如上所述的到客户端的连接,可以从数据源召回通信,客户端可以被列入黑名单,系统300的管理者和/或敏感数据的所有者可以被通知企图的破坏和/或采取的其它动作。例如,如上所述,对应的例程可以终止到客户端的连接,其中查询源自该客户端。如果查询已经被传递到数据源,则在1162处可以取消查询。因此,可以阻止敏感信息的不想要的漏出。
[0088]
尽管在1106处的匿名化数据并在1108处的存储匿名化数据的上下文中进行了描述,但是在另一实施例中,可以跳过步骤1106并且在1108处存储敏感数据。然而,在这样的
实施例中,在1158处,不对于被确定为被授权接收敏感数据的请求者执行解密。此外,对于被确定为被授权仅接收加密/令牌化数据的请求者,数据被加密/令牌化然后在1160处被提供。因此,方法1100和1150可以适用于存储敏感数据的情况。
[0089]
例如,在1102处,在数据源302处存储敏感数据的来自客户端306-1的请求可以由包装310接收。在1104处,调度器312将请求转发到用于匿名化的加密/令牌化服务314-2。在1106处,基于所提供的策略和/或加密/令牌化服务314-2的能力,识别并匿名化敏感数据。例如,加密/令牌化服务314-2可以对一些敏感数据进行加密并且对其它敏感数据进行令牌化。在1108处,匿名化的数据被存储在数据源302中。
[0090]
在1152处,由包装310接收对存储在数据源处的敏感数据的来自客户端306-2的请求。在112处,调度器310将访问敏感数据的请求提供给加密/令牌化服务314-2。请求还可以由调度器312转发到数据源302。
[0091]
在1156处,加密/令牌化服务314-2确定请求者拥有什么类型的授权。因此,加密/令牌化服务314-2验证用于请求客户端306-2的凭证。
[0092]
在1158处,如果请求客户端306-2被确定为被授权接收敏感数据,则在数据源302处存储的匿名化的数据被检索、解密/去令牌化并被提供给客户端306-2。在另一实施例中,代替或除了解密/去令牌化数据之外,加密/令牌化服务314-2可以从安全数据仓库检索原始的敏感数据。然后,敏感数据被发送到授权的请求者。如果请求客户端306-2被确定为被授权仅接收匿名化的数据,则加密/令牌化服务314-2从数据源302检索匿名化的数据并将该数据转发到请求客户端306-2。然而,如果确定请求者未被授权,则例程可以终止到客户端306-2的连接,可以取消通信或从数据源302召回通信,客户端306-2可以被列入黑名单,系统300的管理者和/或敏感数据的所有者(例如客户端306-1的用户)可以被通知企图的破坏和/或采取的其它动作。
[0093]
使用方法1100和1150,敏感数据可以被更安全地存储和检索。代替存储敏感数据,可以在1108处存储匿名化的数据。可以在属性级别上确定数据如何被匿名化以及什么数据被匿名化,这提高了方法1100和1150的灵活性。这提高了系统300和方法1100和1150的保护敏感数据免于被不适当地访问的能力。因为这些功能通过(一个或多个)服务314来提供,所以可以为不以其它方式支持加密数据的(一个或多个)数据源302和/或304提供增强的安全性。换句话说,可以以数据不可知的方式来执行数据的安全存储和加密/令牌化。因此,方法1100和1150可以向这样的数据源提供附加的安全性,而不需要对数据源302和304的代码进行改变。因此,可以以简单、成本有效的方式来提高安全性。
[0094]
图12a和12b是描绘用于提供客户端信息和用于执行客户端的行为基线化的方法的示例性实施例的流程图。图12b是描绘用于提供客户端信息的方法1200的示例性实施例的流程图,并可以用作执行客户端的行为基线化的部分。方法1200在系统300的上下文中描述。然而,方法1200可以与包括但不限于系统100和200的采用诸如收集器320之类的收集器的其它系统结合使用。为了简单起见,描绘了方法1200的某些步骤。方法1200可以包括其它和/或附加的步骤和子步骤。此外,方法1200的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序执行。在一些实施例中,方法1200可以被认为用于实施方法500中的506。方法1200在客户端306-2和306-3、收集器320-2和320-3、服务314-2和数据源302的上下文中描述。因此,方法1200在利用数据源已经在一个或多个客户端306上提供收集器320之后开
始。然而,在其它实施例中,可以使用其它客户端、收集器、(一个或多个)服务和/或其它数据源。
[0095]
在1202处,例如由在客户端处的收集器拦截将由客户端发出的(一个或多个)数据源的通信。在一些实施例中,查询、方法或api调用、命令或其它消息可以在被从客户端提供以传输到包装之前被拦截。在一些实施例中,例如,收集器可以将其自身附加到客户端应用并使用java数据库连接(jdbc)来拦截来自(一个或多个)数据源的客户端的查询。因此,收集器监视对应的客户端并拦截特定的调用。
[0096]
在1204处,确定发出通信的客户端的状态并将其附加到所拦截的通信/与所拦截的通信相关联。例如,调用的类型、会话/会话标识的类型、会话的用户标识、命令的类型(例如收/放/公布/删除命令)、api、ip地址、查询属性、方法调用、查询的顺序、和/或做出调用的应用可以由收集器检测并在1204处附加到通信。当发出通信时,这些属性代表客户端(或客户端应用)的上下文或状态。收集器将该上下文/状态附加到查询或正从客户端提供的其它通信。在1206处,从客户端发送通信和附加状态。在一些实施例中,附加状态可以被认为是从客户端发送的通信的部分或被包括在从客户端发送的通信中。
[0097]
在一些实施例中,其它客户端可以从发送客户端接收通信、执行其它功能然后发出另一通信。因此,在将通信提供给包装或数据源之前,多个客户端可以发送和接收通信。在包括收集器并且接收通信的每个客户端处,如在1202中那样拦截任何传出的通信,如在1204中那样确定该客户端的上下文并且将其附加到通信,并且通过1208如在1206中那样发送通信和状态/上下文。如果仅具有收集器的单个客户端向包装发送通信,则可以省略1208。如果具有收集器的五个客户端串联发送通信,则发起客户端执行1202、1204和1206。对于接收和发送通信的四个附加客户端,可以重复四次1208。如果五个客户端(仅其中四个具有收集器)串联接收通信,则可以重复三次1208。因此,在向数据源提供通信中可能涉及多个客户端。具有收集器的每个客户端可以将其状态附加到通信。此外,可以以客户端发送/接收通信的顺序来附加状态。发送通信的最后一个客户端将通信提供给包装,诸如包装310。
[0098]
因此,使用方法1200,可以连同通信一起提供客户端的上下文。对于提供多个通信的客户端,提供有这些通信的一系列上下文可以代表客户端在与数据源交互的期间的典型行为。因此,除了诸如查询之类的通信之外,(一个或多个)客户端还可以发送与其状态和/或行为有关的信息。
[0099]
图12b是描绘用于执行客户端的行为基线化的方法1250的示例性实施例的流程图。方法1250在系统300的上下文中描述。然而,方法1250可以与包括但不限于系统100和200的采用诸如收集器320之类的收集器的其它系统结合使用。为了简单起见,描绘了方法1250的某些步骤。方法1250可以包括其它和/或附加的步骤和子步骤。此外,方法1250的步骤可以以包括并行执行一些步骤的部分或全部的另一顺序执行。在一些实施例中,方法1250可以被认为用于实施方法500的506。方法1250在客户端306-2和306-3、收集器320-2和320-3、服务314-2和数据源302的上下文中描述。因此,方法1250在利用数据源已经在一个或多个客户端306上提供收集器320之后开始。然而,在其它实施例中,可以使用其它客户端、收集器、(一个或多个)服务和/或其它数据源。方法1250可以与方法1200结合执行并因此可以接收通过方法1200提供的通信和状态/上下文。
[0100]
在1252处,在包装处接收(一个或多个)客户端的通信和(一个或多个)上下文。因此,包装接收通信,其可以包括多个查询或方法调用以及具有收集器的所有客户端的状态,该收集器在通信到达包装之前使通信进行。在一些实施例中,在调度器处接收通信和附加的(一个或多个)上下文。在一些实施例中,在1252处,在包装处接收由客户端在方法1200中的1206或1208处发送的通信和附加上下文。
[0101]
在1254处,将(一个或多个)上下文从调度器转发到(一个或多个)行为基线化服务。在一些实施例中,在1254处,还将与(一个或多个)上下文相关联的通信提供给(一个或多个)行为基线化服务。此外,在1254处,调度器可以将通信发送到期望的(一个或多个)数据源上。因此,对通信中的查询或其它调用的处理可能不会由对客户端的(一个或多个)上下文的检查和由(一个或多个)行为基线化服务执行的其它功能而被延迟。在其它实施例中,可以将通信保存在调度器上,直到完成行为基线化。例如,如果调度器处于上述的步进模式中,则这可能发生。
[0102]
在1256处,将与通信相关联的(一个或多个)客户端的(一个或多个)状态/(一个或多个)上下文与(一个或多个)客户端的(一个或多个)基线进行比较。在一些实施例中,通信也是该比较的部分。例如,由客户端提供的数据库的特定查询以及客户端的状态可以用于与基线进行比较。在其它实施例中,可以仅使用(一个或多个)上下文。在一些实施例中,在1256处,将与单个通信相关联的客户端的单个上下文与(一个或多个)基线进行比较。在其它实施例中,在1256处,将可以处于客户端的特定顺序中的多个上下文与基线进行比较。例如,行为基线化服务可以为具有收集器的每个客户端存储为每个通信接收的上下文。当利用数据源时,客户端频繁地发布用于数据源的多个通信。特定客户端的这些上下文的集合代表该客户端在客户端与数据源交互的时间附近的行为。行为基线化服务分析提供(一个或多个)通信的(一个或多个)客户端的行为(一系列上下文)。在一些实施例中,仅使用上下文的身份。在一些实施例中,上下文的身份及其顺序被用于比较。在一些实施例中,行为基线化服务基于诸如隐马尔可夫模型之类的行为(一系列状态/上下文)的模型将(一个或多个)上下文与行为进行比较。因此,在1256中,行为基线化服务维护(一个或多个)请求客户端的行为的模型,并且将当前通信中的上下文与行为进行比较。在一些实施例中,在一些情况下可以将单个上下文与基线进行比较,并且在其它情况下将单个上下文与行为进行比较。例如,对于由包装接收的第一通信,可以将该第一通信与基线进行比较。当接收到附加通信时,可以在1256处将这些通信与基线进行比较。在其它实施例中,客户端可以首先被认证并且基于另一认证方法(诸如mfa)被授予对数据源的访问。一旦客户端发送具有(一个或多个)附加上下文的(一个或多个)附加通信,这些(一个或多个)通信和(一个或多个)上下文就可以用于将客户端的行为与基线进行比较。在一些实施例中,初始通信和认证可以被认为是行为的部分。在其它实施例中,初始通信和认证可以与后续的(一个或多个)通信和(一个或多个)状态分开考虑。
[0103]
在1258处,如果当前(一个或多个)通信的(一个或多个)上下文与行为充分匹配,则允许(一个或多个)请求客户端对数据源进行访问。因此,允许数据源服务由(一个或多个)客户端提供的(一个或多个)通信。如果在1256中确定上下文与行为不充分匹配,则在1260处采取期望的动作。在一些实施例中,所采取的动作可以取决于在1256中确定的失配或取决于其它因素。例如,发起(一个或多个)通信的(一个或多个)客户端可能不被允许访
问数据源。在这种情况下,可以通知调度器并且对应的例程用于终止到(一个或多个)客户端的连接。如果通信已经被转发到(一个或多个)数据源,则可以从(一个或多个)数据源召回通信。如果客户端先前已被认证,则认证可以被撤销。在这样的实施例中,可以通知调度器客户端未被授权并且对应的例程用于终止到(一个或多个)客户端的连接。已经转发到(一个或多个)数据源的(一个或多个)通信也可以从(一个或多个)数据源召回。如果失配足够大或者发生大于阈值次数或者在行中的至少特定次数,则可以将(一个或多个)客户端列入黑名单。在一些实施例中,可以在1260处调用诸如mfa之类的认证的辅助机制。因此,可以至少部分地基于(一个或多个)请求客户端的行为来确定对(一个或多个)数据源的访问。在1260处,可以采取这些和/或其它动作。
[0104]
在1262处,可以更新模型/基线。例如,如果在1258处确定上下文充分匹配行为,则可以用来自(一个或多个)客户端的通信中的上下文来更新模型/基线。如果认为上下文与基线不一致,则可以利用该信息来更新模型/基线。
[0105]
例如,假设客户端306-2中的收集器320-2在1202处拦截包括数据源302的查询的通信。客户端306-2的上下文由收集器320-2确定并附加到查询。客户端306-2然后将通信和上下文提供给包装310。因为客户端306-2在不向另一客户端306提供通信的情况下向包装310提供通信,所以跳过1208。调度器312在1252处接收通信并且在1254处将通信和上下文提供给行为基线化服务314-2。在1254处,通信也被传递到数据源302。行为基线化服务314-2将在1254处接收的上下文与在1256处的客户端306-2的基线进行比较。在1258处,如果所接收的上下文与基线一致,则允许对数据源302进行访问。否则,在1260处,可以拒绝访问(例如终止连接)。在1260处,还可以采取附加的动作,诸如将客户端306-2列入黑名单。在1262处,还可以更新基线。
[0106]
在一些情况下,多个客户端中的多个应用可以在将通信发送到数据源之前传递通信。例如,如上所述,这可以发生在采用微服务的情况下。例如,假设客户端306-2中的收集器320-2在1202处拦截包括数据源302的查询的通信。客户端306-2的状态由收集器320-2确定并附加到查询。客户端306-2然后向客户端306-3提供通信和状态。在一些情况下,客户端306-3可以向通信添加另一查询或者以其它方式修改通信。在1208处,客户端306-3中的收集器320-3拦截通信,附加客户端306-3的状态并将通信提供给包装310。因此,通信现在包括客户端306-2和306-3的状态。如果客户端306-2或306-2已经将通信传递到不包括收集器的客户端306-4,则因为不存在收集器来确定并将客户端306-4的状态附加到通信,所以对于客户端306-4将跳过1208。调度器312在1252处接收通信,并且在1254处将通信和状态提供给行为基线化服务314-2。在1254处,通信也被传递到数据源302。行为基线化服务314-2将在1254处接收的状态与在1256处的客户端306-2和306-3的基线进行比较。在1258处,如果接收的状态与基线一致,则允许对数据源302进行访问。否则,在1260处,可以拒绝访问(例如终止连接并从数据源302召回通信)。还可以在1260处采取附加动作,诸如将客户端306-2和/或306-3列入黑名单。在1262处,还可以更新(一个或多个)基线。
[0107]
使用方法1200和1250,可以提高数据源的安全性和性能。可以分析请求对(一个或多个)数据源进行访问的通信中的(一个或多个)客户端的(一个或多个)上下文/(一个或多个)状态,以确定通信是否与(一个或多个)客户端的先前行为一致。如果(一个或多个)客户端的(一个或多个)状态与基线不一致,则可以阻止对(一个或多个)数据源的访问和/或采
取附加动作。方法1200和1250还可以被扩展以将客户端的行为(例如对于多个查询的一系列状态)与先前行为进行比较,并且基于其行为来认证客户端。因此,已经被劫持的来自客户端的攻击可以被检测和寻址。此外,收集器不需要存在于所有客户端上以增强安全性。相反,如果足够高比例的客户端包括收集器,则可以以类似于群体免疫的方式来保护数据源。方法1200和/或1250可以与其它方法(诸如方法900中的查询分析、使用方法400的认证、方法1100中的令牌化和/或方法600中的mfa)结合以进一步提高安全性。
[0108]
如上所述,可以组合各种服务。例如,包装310可以提供通过服务314-1的多因素认证和/或联合身份管理、通过服务314-2的查询分析、通过服务314-3(或作为服务314-2的部分)的查询重写、通过服务314-4的行为基线化、通过服务314-5的敏感数据的令牌化和/或通过服务314-6的其它服务其它功能性。在这样的实施例中,调度器312可以将请求中的一些或全部转发到多个服务314和/或服务314可以与其它服务通信,以便执行期望的功能。因此,数据源302和/或304的性能和安全性可以通过各种服务来提高而无需更改数据源302和/或304。此外,可以通过添加服务模块或更新服务314来将新服务添加到用于(一个或多个)数据源302和/或304的包装310。可以在不更改数据源302和304的代码的情况下添加这些新服务。因此,可以继续提高系统300的性能、安全性和/或其它特征。
[0109]
虽然出于理解的清楚性的目的已经相当详细地描述了前述实施例,但是本发明不限于所提供的细节。存在实施本发明的许多替代方式。所公开的实施例是说明性的而非限制性的。
技术特征:
1.一种方法,包括:在包装处接收用于数据源的通信,所述包装包括调度器和至少一项服务,所述调度器接收所述通信并且是数据不可知的,所述调度器是开放系统互连osi层4调度器;以及;将所述通信从所述调度器提供到所述数据源以及到所述至少一项服务,所述至少一项服务是至少一个osi层7服务。2.根据权利要求1所述的方法,其中提供服务还包括:仅通过所述调度器检查所述通信以识别所述数据源和识别所述至少一项服务。3.根据权利要求1所述的方法,还包括:通过所述至少一项服务检查通信,并基于所述检查执行至少一个功能。4.根据权利要求3所述的方法,其中所述至少一个功能包括认证服务、多因素认证、数据的令牌化、数据加密、查询分析、行为基线化和/或联合身份管理中的至少一个。5.根据权利要求4所述的方法,其中提供所述通信还包括:从客户端接收所述通信和与所述通信相关联的上下文,所述上下文包括对应于所述客户端的第一上下文和对应于先前客户端的第二上下文,所述客户端从先前客户端接收对应的通信和与对应的通信相关联的第二上下文,所述客户端将所述第一上下文提供给所述上下文,使得所述包装从所述客户端接收所述第一上下文和所述第二上下文作为所述上下文的一部分;以及其中,执行所述至少一项服务进一步包括:通过所述服务将所述上下文与所述客户端的行为基线进行比较,所述行为基线包含先前从所述客户端接收的多个上下文,所述比较包括将所述第一上下文和第二上下文的序列与先前从所述客户端接收的多个上下文进行比较;以及响应于所述服务确定所述上下文与所述行为基线一致,允许所述客户端访问所述数据源。6.根据权利要求4所述的方法,其中,所述至少一项服务包括数据的令牌化和/或数据的加密,并且其中接收所述通信进一步包括:在所述调度器处接收在所述数据源中存储数据的请求,所述调度器确定向所述至少一项服务中的哪一项提供所述请求,而不确定是否要匿名化数据并且不匿名化数据,其中所述至少一项服务包括第一服务和第二服务,其中所述第一服务不同于所述第二服务,其中所述第一服务执行第一令牌化和/或第一加密中的至少一个,其中所述第二服务执行第二令牌化和/或第二加密中的至少一个;其中执行所述至少一项服务进一步包括:通过第一服务和/或第二服务确定数据将被匿名化;以及通过所述第一服务和/或所述第二服务对数据进行匿名化,以提供匿名化数据,所述匿名化包括确定数据的类型;以及基于第一数据类型或第二数据类型对数据执行操作,其中所述第一数据类型不同于所述第二数据类型,并且其中操作包括所述第一令牌化、所述第二令牌化、所述第一加密和/或所述第二加密中的至少一个。7.根据权利要求4所述的方法,其中所述至少一项服务包括通过多因素认证服务进行的多因素认证,从客户端接收所述通信,其中执行所述多因素认证进一步包括:
通过认证服务调用多因素认证实用程序;以及从多因素认证实用程序接收指示通过所述多因素认证实用程序的认证是否成功的成功指示,其中,所述多因素认证实用程序被配置为:验证来自用户的用户标识和密码;在验证来自用户的用户标识和密码时,从用户的单独设备接收代码或对提示进行响应;以及响应于对接收到代码或响应的确定,确定所述认证成功;以及在所述认证服务确定所述客户端被授权访问所述数据源的情况下,使用所述包装允许访问所述数据源,其中允许访问所述数据源包括:将所述通信转发至所述数据源;以及将后续通信转发至所述数据源。8.根据权利要求4所述的方法,其中所述至少一个服务包括查询分析,其中所述通信包括查询,并且其中执行至少一项服务进一步包括:从所述调度器向所述数据源和所述服务提供查询;以及使用所述服务分析所述查询,包括 执行以下一项或多项:a)确定所述查询是否对性能产生不利影响;以及响应于所述查询对性能有不利影响的确定,重写查询以从查询中删除 "或 "子句、同义反复或两者;和/或b)确定所述查询是否是攻击,包括确定所述查询是否包括用户名称中的通配符和/或用户名称中的同义反复;以及响应于确定所述查询包括用户名称中的通配符和/或用户名称中的同义反复,确定查询是攻击;响应于确定查询是攻击,拒绝对所述数据源的访问,包括终止与来自所述查询的客户端的连接。9.根据权利要求4所述的方法,其中,所述至少一项服务包括联合身份管理,并且其中执行至少一项服务进一步包括:向所述联合身份管理数据源提供终端用户的终端用户凭证;使用只读绑定搜索终端用户的联合身份管理数据源;如果终端用户已通过认证,则将所述服务绑定至联合身份管理数据源作为所述终端用户的代理;以及在所述联合身份管理数据源中搜索所述终端用户所属的至少一个组。10.根据权利要求1所述的方法,其中提供所述通信还包括:将所述通信从所述调度器提供到所述数据源;以及如果多因素认证服务确定所述客户端未被授权访问所述数据源,则所述通信在被所述数据源处理之前召回。11.根据权利要求1所述的方法,其中,所述通信在客户端处生成,并包括第一通信,其中所述至少一项服务包括认证服务,并且其中所述调度器处于用于来自所述客户端的所述第一通信的步进模式中,所述将所述通信提供到所述数据源以及到所述至少一项服务还包括:
将所述第一通信提供到所述认证服务,而不将所述第一通信转发到所述数据源;通过所述认证服务使用所述第一通信来确定所述客户端是否被授权访问所述数据源;如果所述客户端未被授权访问所述数据源,则通过终止到所述客户端的连接来阻止对所述数据源的访问;如果所述客户端被授权访问所述数据源,则将所述第一通信从所述调度器转发到所述数据源;以及如果所述客户端被授权访问所述数据源,则将所述调度器置于流模式中,所述流模式被配置为:如果所述客户端被授权访问所述数据源,则使得在所述调度器处接收的来自所述客户端的至少一个附加通信从所述调度器自动地转发到所述数据源。12.一种系统,包括:处理器,其被配置成:在包装处接收用于数据源的通信,所述包装包括调度器和至少一项服务,所述调度器接收所述通信并且是数据不可知的,所述调度器是开放系统互连osi层4调度器;以及;将所述通信从所述调度器提供到所述数据源以及到所述至少一项服务,所述至少一项服务是至少一个osi层7服务;以及存储器,其耦合到所述处理器并且被配置成向所述处理器提供指令。13.根据权利要求12所述的系统,其中处理器进一步被配置成:仅检查所述调度器的通信,以识别所述数据源并识别所述至少一项服务。14.根据权利要求12所述的系统,其中处理器进一步被配置成:通过所述至少一项服务检查通信,并基于所述检查执行至少一个功能。15.根据权利要求14所述的系统,其中,所述至少一个功能包括认证服务、多因素认证、数据的令牌化、数据加密、查询分析、行为基线化和/或联合身份管理中的至少一个。16.一种其上存储有计算机程序的计算机可读存储介质,当所述计算机程序在计算装置上运行时,使得所述计算装置执行以下步骤:在包装处接收用于数据源的通信,所述包装包括调度器和至少一项服务,所述调度器接收所述通信并且是数据不可知的,所述调度器是开放系统互连osi层4调度器;以及;将所述通信从所述调度器提供到所述数据源以及到所述至少一项服务,所述至少一项服务是至少一个osi层7服务。17.根据权利要求16所述的计算机可读存储介质,其中所述计算机程序使所述计算装置执行:仅通过所述调度器检查所述通信以识别所述数据源和识别所述至少一项服务。18.根据权利要求16所述的计算机可读存储介质,其中当所述计算机程序在计算装置上运行时,还使得所述计算装置执行:通过所述至少一项服务检查通信,并基于所述检查执行至少一个功能。19.根据权利要求18所述的计算机可读存储介质,其中所述至少一个功能包括认证服务、多因素认证、数据的令牌化、数据加密、查询分析、行为基线化和/或联合身份管理中的至少一个。
技术总结
本申请涉及在数据源处具有保护层的架构。公开了一种用于执行至少一个服务的方法和系统。该方法和系统包括在包装处接收用于数据源的通信。包装包括调度器和至少一个服务。调度器接收通信并且是数据不可知的。该方法和系统还包括将通信从调度器提供到数据源以及到至少一个服务。至少一个服务检查通信并且可以执行附加功能。行附加功能。行附加功能。
技术研发人员:M
受保护的技术使用者:赛络公司
技术研发日:2019.08.27
技术公布日:2023/10/11
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
