CN110266679A - 容器网络隔离方法及装置 - Google Patents

容器网络隔离方法及装置 Download PDF

Info

Publication number
CN110266679A
CN110266679A CN201910517435.6A CN201910517435A CN110266679A CN 110266679 A CN110266679 A CN 110266679A CN 201910517435 A CN201910517435 A CN 201910517435A CN 110266679 A CN110266679 A CN 110266679A
Authority
CN
China
Prior art keywords
deployment unit
strategy
target
network
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910517435.6A
Other languages
English (en)
Other versions
CN110266679B (zh
Inventor
吴俊宗
赵明山
马骏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Chengdu Co Ltd
Original Assignee
Tencent Technology Chengdu Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Chengdu Co Ltd filed Critical Tencent Technology Chengdu Co Ltd
Priority to CN201910517435.6A priority Critical patent/CN110266679B/zh
Publication of CN110266679A publication Critical patent/CN110266679A/zh
Application granted granted Critical
Publication of CN110266679B publication Critical patent/CN110266679B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general

Abstract

本发明实施例公开了一种容器网络隔离方法及装置。其中,所述方法应用于服务器中,所述服务器包括至少一个可部署单元,每个可部署单元中设有至少一个容器;所述方法包括:获取所述至少一个可部署单元的网络策略;确定所述至少一个可部署单元中正在运行的目标可部署单元;根据所述网络策略,设置所述目标可部署单元的网络隔离策略;利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,以根据所述多个策略集合对所述目标可部署单元中的容器进行网络隔离。本发明实施例能够提高网络隔离的限制能力和响应能力,同时提高容器网络隔离的安全性。

Description

容器网络隔离方法及装置
技术领域
本发明涉及通信技术领域,具体涉及一种容器网络隔离方法及装置。
背景技术
现有技术中,一般采用calico或istio实现容器的网络隔离。其中,calico是针对容器开发的跨机网络互联方案,采用BGP(Border Gateway Protocol,边界网关协议)或者IPIP路由的方式将部署在多台主机上的容器实现互联,同时结合容器命名空间(namespace)的概念,对不同namespace的容器进行网络隔离。但是,calico方案将所在容器主机作为路由节点,通过Iptables的规则进行策略限制,需要在容器主机节点进行大量的Iptables规则设置,当容器数量递增时,会导致Iptables过滤性能下降。
Istio是用于连接、保护、控制和观测容器的ServiceMesh(服务网格)框架,框架本身并不解决容器网络互连问题,其通过sidecar的方式内置应用层代理,通过网络策略限制仅有代理才能实现对外访问,使用策略限制代理以实现网络控制。但是,Istio方案主要设计目标是为业务提供4、7层流量负载均衡,在sidecar中,网络隔离只是一个可选项。由于sidecar中是采用代理程序进行流量代理,程序运行在用户态,存在较大的性能损失。
发明内容
本发明实施例提供一种容器网络隔离方法及装置,能够提高网络隔离的限制能力和响应能力,同时提高容器网络隔离的安全性。
一方面,本发明实施例提供一种容器网络隔离方法,所述方法应用于服务器中,所述服务器包括至少一个可部署单元,每个可部署单元中设有至少一个容器;所述方法包括:
获取所述至少一个可部署单元的网络策略;
确定所述至少一个可部署单元中正在运行的目标可部署单元;
根据所述网络策略,设置所述目标可部署单元的网络隔离策略;
利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,以根据所述多个策略集合对所述目标可部署单元中的容器进行网络隔离。
在本发明一些实施例中,所述网络策略包括每个可部署单元的通讯策略;
所述根据所述网络策略,设置所述目标可部署单元的网络隔离策略,具体包括:
从所述网络策略中获取所述目标可部署单元的通讯策略;
从正在运行的可部署单元中确定满足所述目标可部署单元的通讯策略的可部署单元,并根据确定的可部署单元设置所述目标可部署单元的网络隔离策略。
在本发明一些实施例中,每个可部署单元具有唯一的IP地址,所述通讯策略包括入站策略和出站策略,所述网络隔离策略包括入站列表和出站列表;
所述从正在运行的可部署单元中确定满足所述目标可部署单元的通讯策略的可部署单元,并根据确定的可部署单元设置所述目标可部署单元的网络隔离策略,具体包括:
从正在运行的可部署单元中确定满足所述目标可部署单元的入站策略的第一可部署单元,并将所述第一可部署单元的IP地址和对应的端口组成所述目标可部署单元的入站列表;
从正在运行的可部署单元中确定满足所述目标可部署单元的出站策略的第二可部署单元,并将所述第二可部署单元的IP地址和对应的端口组成所述目标可部署单元的出站列表。
在本发明一些实施例中,所述策略集合包括IP集合及对应的规则链;
所述利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,具体包括:
利用所述目标可部署单元将所述入站列表中对应相同端口的IP地址作为一个IP集合并设置相应的规则链,将所述出站列表中对应相同端口的IP地址作为一个IP集合并设置相应的规则链。
在本发明一些实施例中,所述服务器还包括服务单元;
所述利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,具体包括:
将所述目标可部署单元的网络隔离策略写入所述服务单元中;
利用所述目标可部署单元从所述服务单元中读取所述网络隔离策略,并将所述网络隔离策略设置为多个策略集合。
在本发明一些实施例中,所述方法还包括:
检测所述至少一个可部署单元的当前网络策略相对所述网络策略是否发生变化;
若发生变化,且变化的网络策略影响到所述目标可部署单元,则根据所述当前网络策略,重新设置所述目标可部署单元的网络隔离策略。
在本发明一些实施例中,所述方法还包括:
检测当前正在运行的可部署单元相对所述正在运行的可部署单元是否发生变化;
若发生变化,且变化的可部署单元影响到所述目标可部署单元,则根据所述当前正在运行的可部署单元和所述网络策略,重新设置所述目标可部署单元的网络隔离策略。
在本发明一些实施例中,所述方法还包括:
利用所述目标可部署单元检测所述网络隔离策略是否发生变化;
若所述网络隔离策略中的端口发生变化,则根据变化后的端口修改规则链,并调整修改后的规则链的IP集合;
若所述网络隔离策略中的端口未发生变化,但IP地址发生变化,则根据变化后的IP地址调整相应规则链的IP集合。
在本发明一些实施例中,所述方法还包括:
当所述目标可部署单元中的容器停止运行时,清理所述目标可部署单元设置的所述多个策略集合。
另一方面,本发明实施例还提供一种容器网络隔离装置,所述装置应用于服务器中,所述服务器包括至少一个可部署单元,每个可部署单元中设有至少一个容器;所述装置包括:
获取单元,用于获取所述至少一个可部署单元的网络策略;
确定单元,用于确定所述至少一个可部署单元中正在运行的目标可部署单元;以及,
设置单元,用于根据所述网络策略,设置所述目标可部署单元的网络隔离策略;
所述目标可部署单元用于将所述网络隔离策略设置为多个策略集合,以根据所述多个策略集合对所述目标可部署单元中的容器进行网络隔离。
本发明实施例能够根据网络策略和正在运行的可部署单元,设置目标可部署单元的网络隔离策略,并利用目标可部署单元将网络隔离策略设置为多个策略集合,以根据所述多个策略集合对目标可部署单元中的容器进行网络隔离,大量缩减网络隔离的策略数量,从而提高网络隔离的限制能力、响应能力和性能;将目标可部署单元的网络隔离策略限制在目标可部署单元命名空间中,使所有相关设置不会污染主机网络命名空间,有效提升网络隔离的安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的容器网络隔离系统的逻辑架构图;
图2是本发明实施例提供的容器网络隔离方法的流程示意图;
图3是本发明实施例提供的容器网络隔离方法的另一流程示意图;
图4是本发明实施例提供的容器网络隔离方法中步骤305的流程示意图;
图5是本发明实施例提供的容器网络隔离装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有说明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本文所使用的术语“模块”或“单元”可看做为在该运算系统上执行的软件对象。本文所述的不同组件、模块、引擎及服务可看做为在该运算系统上的实施对象。而本文所述的装置及方法优选的以软件的方式进行实施,当然也可在硬件上进行实施,均在本发明保护范围之内。
请参阅图1,图1为本发明实施例所提供的容器网络隔离系统的逻辑架构图,该容器网络隔离系统可以包括容器网络隔离装置100和可部署单元200,容器网络隔离装置100和可部署单元200均可以集成在服务器中。本发明实施例中服务器主要用于获取所述至少一个可部署单元的网络策略;确定所述至少一个可部署单元中正在运行的目标可部署单元;根据所述网络策略,设置所述目标可部署单元的网络隔离策略;利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,以根据所述多个策略集合对所述目标可部署单元中的容器进行网络隔离。
本发明实施例中,该服务器可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如,本发明实施例中所描述的服务器,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由基于云计算(Cloud Computing)的大量计算机或网络服务器构成。
本领域技术人员可以理解,图1中示出的系统架构,仅仅是本申请方案的一种系统架构,并不构成对本申请方案系统架构的限定,其他的系统架构还可以包括比图1所示更多或更少的可部署单元,例如图1仅示出一个可部署单元,可以理解的,该容器网络隔离系统还可以包括一个或多个其他可部署单元,此处不作具体限定。
在本发明一些实施例中,该容器网络隔离装置100可以是策略控制单元(policy-controller)。可部署单元200可以包括辅助容器500和至少一个需要网络隔离的容器400。另外,如图1所示,该容器网络隔离系统还可以包括服务单元300,用于存储网络隔离策略,以供可部署单元200读取。
需要说明的是,图1所示的容器网络隔离系统的逻辑架构图仅仅是一个示例,本发明实施例描述的容器网络隔离系统以及架构是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着容器网络隔离系统的演变和新系统架构的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
下面结合具体实施例进行详细说明。
在本实施例中,将从容器网络隔离装置的角度进行描述,该容器网络隔离装置具体可以集成在服务器中。
本发明提供一种容器网络隔离方法,该方法包括:获取所述至少一个可部署单元的网络策略;确定所述至少一个可部署单元中正在运行的目标可部署单元;根据所述网络策略,设置所述目标可部署单元的网络隔离策略;利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,以根据所述多个策略集合对所述目标可部署单元中的容器进行网络隔离。
请参阅图2,图2是本发明实施例中提供的容器网络隔离方法的一个实施例流程示意图,所述方法应用于服务器中,所述服务器包括至少一个可部署单元,每个可部署单元中设有至少一个容器;所述方法包括:
201、获取所述至少一个可部署单元的网络策略。
本发明实施例中,可部署单元可以为kubernetes中的最小部署单元,即pod。kubernetes是用于自动部署、扩展和管理容器化应用程序的开源系统。可部署单元中可以存在一个或多个容器,多个容器之间可以共享网络,通过网络实现通讯。可部署单元中的容器具有一致的生命周期,即所有容器都正常运行时,可部署单元运行正常,当一个容器退出终结时,所有容器都需要退出终结。
默认情况下,所有可部署单元都是非隔离的,即任何来源的网络流量都能够与非隔离的可部署单元通讯,因此针对可部署单元,kubernetes定义相关的数据结构NetworkPolicy,用于规范可部署单元,并限制所规范的可部署单元的通讯规则,即对于NetworkPolicy所规范的可部署单元,只有NetworkPolicy所允许的流量才能与其进行通讯。
具体的,NetworkPolicy的定义主要包括三个方面:通过labelsSelector明确所规范的可部署单元,入站(ingress)策略以及出站(egress)策略。其中,入站策略和出站策略即可限制所规范的可部署单元的通讯规则。出站策略是指限制所规范的可部署单元能够访问的外部IP地址段、能够访问的其他可部署单元及对应的端口,入站策略是指限制能够访问所规范的可部署单元的外部IP地址段、能够访问所规范的可部署单元的其他可部署单元及对应的端口。
需要说明的是,步骤201中的网络策略是指各个可部署单元之间的通讯规则,可根据所定义的所有NetworkPolicy获得。具体地,该网络策略包括每个可部署单元的通讯策略。若可部署单元被NetworkPolicy所规范,则该可部署单元的通讯策略为该NetworkPolicy中所限制的通讯规则。
例如,服务器中设置的可部署单元包括可部署单元A、B1、B2、B3和C,定义的NetworkPolicy数据包括NetworkPolicy A、NetworkPolicy B和NetworkPolicy C。其中,NetworkPolicy A所规范的可部署单元有A,所限制的通讯规则为X,NetworkPolicy B所规范的可部署单元有B1、B2和B3,所限制的通讯规则为Y,NetworkPolicy C所规范的可部署单元有C,所限制的通讯规则为Z。因此,可部署单元A的通讯策略为通讯规则X,可部署单元B1、B2和B3的通讯策略为通讯规则Y,可部署单元C的通讯策略为通讯规则Z。
202、确定所述至少一个可部署单元中正在运行的目标可部署单元。
本发明实施例中,针对正在运行的可部署单元中的容器进行网络隔离,获取所有正在运行的可部署单元的属性数据,例如IP地址、标签(labels)和命名空间(namespace)。本发明实施例中的容器既可以是kubernetes原生通过kube-apiserver存储的容器,也可以来自其他存储方案的容器,包括但不限于etcd,zookeeper,consul,redis,couchdb,mysql,mongodb,HBase,ceph,HDFS,Swift,levelDB,MemcacheDB,只要容器的属性数据包括IP地址、标签和命名空间即可,在此不作具体限定。每个可部署单元具有唯一的IP地址。依次将每个正在运行的可部署单元作为目标可部署单元,以对目标可部署单元中的容器进行网络隔离。
例如,在可部署单元A、B1、B2、B3和C中,当前只有可部署单元A、B1和C正在运行,而B2和B3未运行,因此获取可部署单元A、B1和C的属性数据,以对其中的容器进行网络隔离。
203、根据所述网络策略,设置所述目标可部署单元的网络隔离策略。
本发明实施例中,网络隔离策略(PodPolicy)是针对单个正在运行的可部署单元设置的具体策略。由于本发明实施例仅针对正在运行的可部署单元,因此结合网络策略和所有正在运行的可部署单元的属性数据,设置每个正在运行的可部署单元的网络隔离策略。
网络隔离策略包括三个重要的信息,即名称(name)、入站列表和出站列表。其中,每个网络隔离策略都具有唯一的名称,而每个可部署单元都具有唯一的IP地址,因此为了保持唯一性,网络隔离策略采用其对应的可部署单元的IP地址作为自己的名称,同时便于后续可部署单元查找其网络隔离策略。入站列表为能够访问其可部署单元的IP列表或IP列表+端口,出站列表为其可部署单元能够访问的IP列表或IP列表+端口。
在本发明一个实施例中,步骤203中的所述根据所述网络策略,设置所述目标可部署单元的网络隔离策略,具体包括:从所述网络策略中获取所述目标可部署单元的通讯策略;从正在运行的可部署单元中确定满足所述目标可部署单元的通讯策略的可部署单元,并根据确定的可部署单元设置所述目标可部署单元的网络隔离策略。
需要说明的是,由于网络策略中已具有每个可部署单元的通讯策略,因此将一个正在运行的可部署单元作为目标可部署单元时,从网络策略中即可获得该目标可部署单元的通讯策略,即只有满足目标可部署单元的通讯策略才能与该目标可部署单元进行通讯。由于本发明实施例仅考虑正在运行的可部署单元,因此仅需从正在运行的可部署单元中确定满足目标可部署单元的通讯策略的可部署单元,来设置目标可部署单元的网络隔离策略。
在本发明一个实施例中,所述从正在运行的可部署单元中确定满足所述目标可部署单元的通讯策略的可部署单元,并根据确定的可部署单元设置所述目标可部署单元的网络隔离策略,具体包括:从正在运行的可部署单元中确定满足所述目标可部署单元的入站策略的第一可部署单元,并将所述第一可部署单元的IP地址和对应的端口组成所述目标可部署单元的入站列表;从正在运行的可部署单元中确定满足所述目标可部署单元的出站策略的第二可部署单元,并将所述第二可部署单元的IP地址和对应的端口组成所述目标可部署单元的出站列表。
可以理解的,针对目标可部署单元的通讯策略中的入站策略和出站策略,分别设置目标可部署单元的网络隔离策略中的入站列表和出站列表。将所有第一可部署单元的IP地址及能够访问目标可部署单元的端口对应保存为目标可部署单元的入站列表,将所有第二可部署单元的IP地址及允许目标可部署单元访问的端口对应保存为目标可部署单元的出站列表,而入站列表和出站列表即构成目标可部署单元的网络隔离策略。
例如,目标可部署单元A的IP地址为172.16.66.56,其网络隔离策略的数据结构如下:
由目标可部署单元A的网络隔离策略可以得出,其入站列表包括10.0.0.0/8段内除了10.12.0.0/16的所有IP地址,且对应的端口均为6379,即表明10.0.0.0/8段内除了10.12.0.0/16的所有IP地址都可以访问目标可部署单元A的6379端口服务。目标可部署单元A的网络隔离策略中的出站列表包括172.16.14.29、172.16.66.57、172.16.9.125和172.16.14.155,且对应的端口均为9080,即表明允许目标可部署单元A1访问172.16.14.29、172.16.66.57、172.16.9.125和172.16.14.155的9080端口服务。
204、利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,以根据所述多个策略集合对所述目标可部署单元中的容器进行网络隔离。
本发明实施例中,可部署单元中的容器可以为任意需要网络隔离的容器,如业务容器。另外,可部署单元中还设有辅助容器(sidecar容器),且辅助容器内置有容器网络策略代理(Policy-agent),以与业务容器共同构成可部署单元,共享网络命名空间。辅助容器需要在业务容器启动之前启动,容器网络策略代理用于实时监控其所在的可部署单元的网络隔离策略,并动态管理网络隔离策略。
网络隔离策略中的入站列表和出站列表包括大量IP地址,而每个IP地址与目标可部署单元之间的通讯关系对应一个子策略,若目标可部署单元将网络隔离策略中的每个子策略都对应设置一个规则链,即网络隔离策略中的每个IP地址需对应一个规则链,则需要设置大量的规则链,导致网络隔离策略的限制能力和响应能力较差。因此本发明实施例中的目标可部署单元的辅助容器利用哈希数据集合能力将网络隔离策略中的多个子策略进行集合设置,即多个IP地址对应设置一个规则链,例如Iptables规则,从而将网络隔离策略设置为多个策略集合,例如Ipset集合,以在实现大规模网络隔离策略限制的同时,大大缩减规则链的个数,提升网络隔离策略的限制能力、响应能力和性能。
在本发明一个实施例中,所述策略集合包括IP集合及对应的规则链,步骤204中的所述利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,具体包括:利用所述目标可部署单元将所述入站列表中对应相同端口的IP地址作为一个IP集合并设置对应的规则链,将所述出站列表中对应相同端口的IP地址作为一个IP集合并设置对应的规则链。
需要说明的是,网络隔离策略中的入站列表和出站列表包括各个IP地址及其对应的端口,可根据端口来设置目标可部署单元的多个策略集合。在入站列表中,每一端口对应设置一个INPUT规则链,每一端口对应的IP地址的集合即为该端口对应的INPUT规则链的IP集合。在出站列表中,每一端口对应设置一个OUTPUT规则链,每一端口对应的IP地址的集合即为该端口对应的OUTPUT规则链的IP集合。进而,目标可部署单元中的辅助容器根据设置的IP集合及对应的规则链对业务容器进行网络隔离。
其中,INPUT规则链中可以创建多个子链,例如创建BK_INGRESS_DENYLIST子链,用于设置网络隔离策略的入站列表中去除(except)的IP段或者IP列表;创建BK_INGRESS_ACCESSLIST子链,用于设置网络隔离策略的入站列表中非去除的IP段或者IP列表;创建DROP规则,不被BK_INGRESS_DENYLIST与BK_INGRESS_ACCESSLIST命中的网络流量,全部丢弃。OUTPUT规则链中也可以创建多个子链,例如创建BK_EGRESS_DENYLIST子链,用于设置网络隔离策略的出站列表中去除的IP段或者IP列表;创建BK_EGRESS_ACCESSLIST子链,用于设置网络隔离策略的出站列表中非去除的IP段或者IP列表;创建DROP规则,不被BK_EGRESS_DENYLIST与BK_EGRESS_ACCESSLIST命中的IP流量,全部丢弃。
例如,INPUT规则链的数据结构可以为:
例如,INPUT规则链中的BK_INGRESS_ACCESSLIST子链的具体数据结构为:
在创建规则链后,即可设置该规则链对应的IP集合,例如上述规则链对应的IP集合名称为BK_172.32.0.2_ACCESS,其对应的IP集合的数据结构为:
Name:BK_172.32.0.2_ACCESS
Type:hash:net
Revision:3
Header:family inet hashsize 1024
Size in memory:16952
References:3
Members:
10.0.0.1timeout 0
10.0.0.2timeout 0
10.0.0.3timeout 0
可以得出,上述规则链对应的IP集合包括10.0.0.1、10.0.0.2和10.0.0.3。
在本发明一个实施例中,所述方法还包括:检测所述至少一个可部署单元的当前网络策略相对所述网络策略是否发生变化;若发生变化,且变化的网络策略影响到所述目标可部署单元,则根据所述当前网络策略,重新设置所述目标可部署单元的网络隔离策略。
需要说明的是,网络策略发生变化可以为网络策略中的至少部分通讯策略发生变化,先查询变化的通讯策略所影响的可部署单元,再查询受影响的可部署单元所关联的通信策略,进而查询所关联的通信策略所影响的可部署单元,若目标可部署单元位于所关联的通信策略所影响的可部署单元中,则判定变化的网络策略影响到目标可部署单元,需根据当前网络策略重新设置目标可部署单元的网络隔离策略。
在本发明一个实施例中,所述方法还包括:检测当前正在运行的可部署单元相对所述正在运行的可部署单元是否发生变化;若发生变化,且变化的可部署单元影响到所述目标可部署单元,则根据所述当前正在运行的可部署单元和所述网络策略,重新设置所述目标可部署单元的网络隔离策略。
需要说明的是,正在运行的可部署单元发生变化是指正在运行的可部署单元发生增减。先查询增减的可部署单元所关联的通讯策略,进而查询所关联的通讯策略所影响到的可部署单元,若目标可部署单元位于所关联的通讯策略所影响到的可部署单元中,则判定变化的可部署单元影响到目标可部署单元,需根据当前正在运行的可部署单元和网络策略,重新设置目标可部署单元的网络隔离策略。
在本发明一个实施例中,所述方法还包括:利用所述目标可部署单元检测所述网络隔离策略是否发生变化;若所述网络隔离策略中的端口发生变化,则根据变化后的端口修改规则链,并调整修改后的规则链对应的IP集合;若所述网络隔离策略中的端口未发生变化,但IP地址发生变化,则根据变化后的IP地址调整相应的IP集合。
需要说明的是,目标可部署单元实时监听其网络隔离策略,若其网络隔离策略中的端口发生增减,则判定端口发生变化,并根据新增的端口新增规则链,根据删减的端口删减规则链,并调整相应规则链的IP集合;若其网络隔离策略中的端口未发生增减,则判定端口未发生变化,判断网络隔离策略中的IP地址是否发生变化。若IP地址发生增减,则判定IP地址发生变化,根据变化的IP地址调整相应规则链的IP集合。
在本发明一个实施例中,所述方法还包括:当所述目标可部署单元中的容器停止运行时,清理所述目标可部署单元设置的所述多个策略集合。
需要说明的是,目标可部署单元中的辅助容器不会主动退出,在目标可部署单元中需网络隔离的业务容器退出,即停止运行时,辅助容器才会退出,并清理其设置的所有策略集合。
本发明实施例能够根据网络策略和正在运行的可部署单元,设置目标可部署单元的网络隔离策略,并利用目标可部署单元将网络隔离策略设置为多个策略集合,以根据所述多个策略集合对目标可部署单元中的容器进行网络隔离,大量缩减网络隔离的策略数量,从而提高网络隔离的限制能力、响应能力和性能;将目标可部署单元的网络隔离策略限制在目标可部署单元命名空间中,使所有相关设置不会污染主机网络命名空间,有效提升网络隔离的安全性。
请参阅图3,为本发明实施例中容器网络隔离方法的另一个实施例流程示意图,该容器网络隔离方法应用于服务器中,所述服务器包括服务单元和至少一个可部署单元,每个可部署单元中设有至少一个容器,且每个可部署单元都处于运行状态。该容器网络隔离方法包括:
301、链接服务单元。
其中,服务单元为Kube-apiserver,属于kubernetes系统的一部分,由于其开放性和独立性,在有etcd的情况下就可以独立运行,不一定需要和kubernetes其他模块进行协作。Etcd是一个开源的、分布式的键值对数据存储。
302、获取可部署单元的NetworkPolicy数据以及每个可部署单元的属性数据。
例如,服务器中设置的可部署单元包括可部署单元A、B1、B2、B3和C,定义的NetworkPolicy数据包括NetworkPolicy A、NetworkPolicy B和NetworkPolicy C。其中,NetworkPolicy A所规范的可部署单元有A,所限制的通讯规则为X,NetworkPolicy B所规范的可部署单元有B1、B2和B3,所限制的通讯规则为Y,NetworkPolicy C所规范的可部署单元有C,所限制的通讯规则为Z。
303、根据NetworkPolicy数据和属性数据,设置每个可部署单元的网络隔离策略。
容器网络隔离装置实时监听NetworkPolicy数据和可部署单元的属性数据,为每个可部署单元生成网络隔离策略。
例如,NetworkPolicy A所限制的通讯规则X为允许访问可部署单元B1、B2和B3并限制对应的端口,则可部署单元A的网络隔离策略分别为允许访问可部署单元B1、B2和B3并限制对应的端口。
304、将每个可部署单元的网络隔离策略写入服务单元中。
其中,网络隔离策略以其对应的可部署单元的IP地址为名称写入服务单元中,服务单元再将网络隔离策略写入etcd中,为后续可部署单元提供策略控制的基础。
305、利用每个可部署单元从服务单元中读取其网络隔离策略,并将其网络隔离策略设置为多个Ipset集合。
其中,每个可部署单元中需要网络隔离的容器为业务容器,每个可部署单元中还设有辅助容器,辅助容器根据其所在的可部署单元的IP地址,从服务单元中读取自身的网络隔离策略,以设置相应的Ipset集合,对其业务容器进行网络隔离。其中Ipset集合包括IP集合及对应的规则链。
306、监听NetworkPolicy数据和可部署单元的属性数据。
其中,若监听到进程关闭,则结束整个流程;若监听到网络策略或可部署单元发生变化,则需重新设置相应可部署单元的网络隔离策略。
307、若NetworkPolicy数据发生变化,则查询受影响的可部署单元,查询受影响的可部署单元所关联的NetworkPolicy,并计算所关联的NetworkPolicy所影响的可部署单元的网络隔离策略。
例如,NetworkPolicy A所规范的可部署单元为A,所限制的通讯规则X为允许访问可部署单元B1、B2和B3,NetworkPolicy B所规范的可部署单元为B1、B2和B3,所限制的通讯规则Y为允许被可部署单元A访问,且允许访问可部署单元C,NetworkPolicy C所规范的可部署单元为C,所限制的通讯规则Z为允许被可部署单元B1、B2和B3访问。在监听到NetworkPolicy C被删除时,删除的NetworkPolicy C影响到可部署单元B1、B2、B3和C,而可部署单元B1、B2、B3关联NetworkPolicy A、NetworkPolicy B和NetworkPolicy C,可部署单元C关联NetworkPolicy B和NetworkPolicy C,因此需对NetworkPolicy A、NetworkPolicyB和NetworkPolicy C所影响的A、B1、B2、B3和C重新计算网络隔离策略。重新计算的网络隔离策略重新写入服务单元中。
308、若可部署单元发生变化,则查询变化的可部署单元所关联的NetworkPolicy,并计算所关联的NetworkPolicy所影响的可部署单元的网络隔离策略。
例如,上述NetworkPolicy C未删除,而上述可部署单元B3被删除,而可部署单元B3关联NetworkPolicy A、NetworkPolicy B和NetworkPolicy C,因此需对NetworkPolicyA、NetworkPolicy B和NetworkPolicy C所影响的A、B1、B2和C重新计算网络隔离策略。重新计算的网络隔离策略重新写入服务单元中。
在本发明一个实施例中,如图4所示,步骤305具体包括:
401、利用每个可部署单元设置Ipset集合,并设置全流量丢弃。
由于可部署单元需要访问服务单元,以获取其网络隔离策略,但访问并不在NetworkPolicy定义的范围内,因此需要提前设定Ipset集合。全流量丢弃为Ipset集合中INPUT规则链和OUTPUT规则链最后的默认行为,以实现只有网络隔离策略命中的相关流量可以通过,其余流量都需进行隔离。
402、链接服务单元。
通过链接服务单元,每个可部署单元即可获取其自身的网络隔离策略。
403、监听网络隔离策略。
监听网络隔离策略是否发生变化,同时监听是否有容器退出指令。其中,可部署单元中的辅助容器不会主动退出,当且仅当业务容器停止运行并退出时,辅助容器会收到容器退出指令。
404、若接收到容器退出指令,则清理所有Ipset集合。
405、若网络隔离策略发生变化,则根据变化后的网络隔离策略中的端口重新计算规则链。
其中,一个端口对应一个规则链,若网络隔离策略中的端口发生变化,则重新计算的规则链发生变化。
406、判断规则链是否发生变化;若是,则执行步骤407,若否,则执行步骤408。
407、修改规则链,并调整相应规则链对应的IP集合,并返回步骤403。
例如,网络隔离策略中新增一个端口,则需新增该端口对应的规则链,并设置该规则链对应的IP集合。网络隔离策略中减少一个端口,则需删除该端口对应的规则链,并删除该规则链对应的IP集合。
408、判断网络隔离策略中的IP地址是否发生变化,若是,则执行步骤409,若否,则返回步骤403。
409、调整相应规则链的IP集合。
例如,网络隔离策略中新增一个IP地址,则查找该IP地址对应端口的规则链,并将该IP地址添加到该规则链对应的IP集合中。网络隔离策略中删除一个IP地址,则查找该IP地址对应端口的规则链,并将该IP地址从该规则链对应的IP集合中删除。
为便于更好的实施本发明实施例提供的容器网络隔离方法,本发明实施例还提供一种基于上述容器网络隔离方法的装置。其中名词的含义与上述容器网络隔离方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图5,图5为本发明实施例提供的容器网络隔离装置的结构示意图,其中该容器网络隔离装置应用于服务器中,所述服务器包括至少一个可部署单元100,每个可部署单元100中设有至少一个容器。该容器网络隔离装置可以包括获取单元501、确定单元502和设置单元503,具体如下:
获取单元501用于获取所述至少一个可部署单元的网络策略;
确定单元502用于确定所述至少一个可部署单元中正在运行的目标可部署单元;以及,
设置单元503用于根据所述网络策略,设置所述目标可部署单元的网络隔离策略;
所述目标可部署单元100用于将所述网络隔离策略设置为多个策略集合,以根据所述多个策略集合对所述目标可部署单元中的容器进行网络隔离。
在本发明一些实施例中,所述网络策略包括每个可部署单元的通讯策略;所述设置单元503具体用于:
从所述网络策略中获取所述目标可部署单元的通讯策略;
从正在运行的可部署单元中确定满足所述目标可部署单元的通讯策略的可部署单元,并根据确定的可部署单元设置所述目标可部署单元的网络隔离策略。
在本发明一些实施例中,每个可部署单元具有唯一的IP地址,所述通讯策略包括入站策略和出站策略,所述网络隔离策略包括入站列表和出站列表;所述设置单元503具体还用于:
从正在运行的可部署单元中确定满足所述目标可部署单元的入站策略的第一可部署单元,并将所述第一可部署单元的IP地址和对应的端口组成所述目标可部署单元的入站列表;
从正在运行的可部署单元中确定满足所述目标可部署单元的出站策略的第二可部署单元,并将所述第二可部署单元的IP地址和对应的端口组成所述目标可部署单元的出站列表。
在本发明一些实施例中,所述策略集合包括IP集合及对应的规则链;所述目标可部署单元100具体用于:
利用所述目标可部署单元将所述入站列表中对应相同端口的IP地址作为一个IP集合并设置相应的规则链,将所述出站列表中对应相同端口的IP地址作为一个IP集合并设置相应的规则链。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
本发明实施例能够根据网络策略和正在运行的可部署单元,设置目标可部署单元的网络隔离策略,并利用目标可部署单元将网络隔离策略设置为多个策略集合,以根据所述多个策略集合对目标可部署单元中的容器进行网络隔离,大量缩减网络隔离的策略数量,从而提高网络隔离的限制能力、响应能力和性能;将目标可部署单元的网络隔离策略限制在目标可部署单元命名空间中,使所有相关设置不会污染主机网络命名空间,有效提升网络隔离的安全性。
以上对本发明实施例所提供的一种容器网络隔离方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种容器网络隔离方法,其特征在于,所述方法应用于服务器中,所述服务器包括至少一个可部署单元,每个可部署单元中设有至少一个容器;所述方法包括:
获取所述至少一个可部署单元的网络策略;
确定所述至少一个可部署单元中正在运行的目标可部署单元;
根据所述网络策略,设置所述目标可部署单元的网络隔离策略;
利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,以根据所述多个策略集合对所述目标可部署单元中的容器进行网络隔离。
2.根据权利要求1所述的容器网络隔离方法,其特征在于,所述网络策略包括每个可部署单元的通讯策略;
所述根据所述网络策略,设置所述目标可部署单元的网络隔离策略,具体包括:
从所述网络策略中获取所述目标可部署单元的通讯策略;
从正在运行的可部署单元中确定满足所述目标可部署单元的通讯策略的可部署单元,并根据确定的可部署单元设置所述目标可部署单元的网络隔离策略。
3.根据权利要求2所述的容器网络隔离方法,其特征在于,每个可部署单元具有唯一的IP地址,所述通讯策略包括入站策略和出站策略,所述网络隔离策略包括入站列表和出站列表;
所述从正在运行的可部署单元中确定满足所述目标可部署单元的通讯策略的可部署单元,并根据确定的可部署单元设置所述目标可部署单元的网络隔离策略,具体包括:
从正在运行的可部署单元中确定满足所述目标可部署单元的入站策略的第一可部署单元,并将所述第一可部署单元的IP地址和对应的端口组成所述目标可部署单元的入站列表;
从正在运行的可部署单元中确定满足所述目标可部署单元的出站策略的第二可部署单元,并将所述第二可部署单元的IP地址和对应的端口组成所述目标可部署单元的出站列表。
4.根据权利要求3所述的容器网络隔离方法,其特征在于,所述策略集合包括IP集合及对应的规则链;
所述利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,具体包括:
利用所述目标可部署单元将所述入站列表中对应相同端口的IP地址作为一个IP集合并设置相应的规则链,将所述出站列表中对应相同端口的IP地址作为一个IP集合并设置相应的规则链。
5.根据权利要求1所述的容器网络隔离方法,其特征在于,所述服务器还包括服务单元;
所述利用所述目标可部署单元将所述网络隔离策略设置为多个策略集合,具体包括:
将所述目标可部署单元的网络隔离策略写入所述服务单元中;
利用所述目标可部署单元从所述服务单元中读取所述网络隔离策略,并将所述网络隔离策略设置为多个策略集合。
6.根据权利要求1所述的容器网络隔离方法,其特征在于,所述方法还包括:
检测所述至少一个可部署单元的当前网络策略相对所述网络策略是否发生变化;
若发生变化,且变化的网络策略影响到所述目标可部署单元,则根据所述当前网络策略,重新设置所述目标可部署单元的网络隔离策略。
7.根据权利要求1所述的容器网络隔离方法,其特征在于,所述方法还包括:
检测当前正在运行的可部署单元相对所述正在运行的可部署单元是否发生变化;
若发生变化,且变化的可部署单元影响到所述目标可部署单元,则根据所述当前正在运行的可部署单元和所述网络策略,重新设置所述目标可部署单元的网络隔离策略。
8.根据权利要求4所述的容器网络隔离方法,其特征在于,所述方法还包括:
利用所述目标可部署单元检测所述网络隔离策略是否发生变化;
若所述网络隔离策略中的端口发生变化,则根据变化后的端口修改规则链,并调整修改后的规则链对应的IP集合;
若所述网络隔离策略中的端口未发生变化,IP地址发生变化,则根据变化后的IP地址调整相应的IP集合。
9.根据权利要求1所述的容器网络隔离方法,其特征在于,所述方法还包括:
当所述目标可部署单元中的容器停止运行时,清理所述目标可部署单元设置的所述多个策略集合。
10.一种容器网络隔离装置,其特征在于,所述装置应用于服务器中,所述服务器包括至少一个可部署单元,每个可部署单元中设有至少一个容器;所述装置包括:
获取单元,用于获取所述至少一个可部署单元的网络策略;
确定单元,用于确定所述至少一个可部署单元中正在运行的目标可部署单元;以及,
设置单元,用于根据所述网络策略,设置所述目标可部署单元的网络隔离策略;
所述目标可部署单元用于将所述网络隔离策略设置为多个策略集合,以根据所述多个策略集合对所述目标可部署单元中的容器进行网络隔离。
CN201910517435.6A 2019-06-14 2019-06-14 容器网络隔离方法及装置 Active CN110266679B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910517435.6A CN110266679B (zh) 2019-06-14 2019-06-14 容器网络隔离方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910517435.6A CN110266679B (zh) 2019-06-14 2019-06-14 容器网络隔离方法及装置

Publications (2)

Publication Number Publication Date
CN110266679A true CN110266679A (zh) 2019-09-20
CN110266679B CN110266679B (zh) 2023-02-28

Family

ID=67918444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910517435.6A Active CN110266679B (zh) 2019-06-14 2019-06-14 容器网络隔离方法及装置

Country Status (1)

Country Link
CN (1) CN110266679B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111147450A (zh) * 2019-12-09 2020-05-12 江苏艾佳家居用品有限公司 一种基于macvlan模式的容器网络隔离方法
CN111709014A (zh) * 2020-05-27 2020-09-25 浪潮电子信息产业股份有限公司 一种应用隔离方法、系统、设备及计算机可读存储介质
CN111813499A (zh) * 2020-07-08 2020-10-23 赛特斯信息科技股份有限公司 针对容器网络实现策略校验的方法及其应用系统
CN113676524A (zh) * 2021-08-09 2021-11-19 浪潮云信息技术股份公司 一种实现多cpu架构容器网络代理的方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105897946A (zh) * 2016-04-08 2016-08-24 北京搜狐新媒体信息技术有限公司 一种访问地址的获取方法及系统
CN106790660A (zh) * 2017-01-18 2017-05-31 咪咕视讯科技有限公司 一种实现分布式存储系统的部署方法及装置
CN107566541A (zh) * 2017-08-03 2018-01-09 携程旅游信息技术(上海)有限公司 容器网络资源分配方法、系统、存储介质和电子设备
US20180152534A1 (en) * 2015-06-03 2018-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Implanted agent within a first service container for enabling a reverse proxy on a second container
CN108540453A (zh) * 2018-03-15 2018-09-14 新智数字科技有限公司 一种应用于PaaS的网络隔离方法、装置以及设备
CN109032806A (zh) * 2018-07-30 2018-12-18 华为技术有限公司 容器的服务调度方法和装置
CN109032760A (zh) * 2018-08-01 2018-12-18 北京百度网讯科技有限公司 用于部署应用的方法和装置
CN109413065A (zh) * 2018-10-25 2019-03-01 山东浪潮云信息技术有限公司 一种基于容器的集群安全管理方法
US20190102157A1 (en) * 2017-09-30 2019-04-04 Oracle International Corporation Optimizing redeployment of functions and services across multiple container platforms and installations

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180152534A1 (en) * 2015-06-03 2018-05-31 Telefonaktiebolaget Lm Ericsson (Publ) Implanted agent within a first service container for enabling a reverse proxy on a second container
CN105897946A (zh) * 2016-04-08 2016-08-24 北京搜狐新媒体信息技术有限公司 一种访问地址的获取方法及系统
CN106790660A (zh) * 2017-01-18 2017-05-31 咪咕视讯科技有限公司 一种实现分布式存储系统的部署方法及装置
CN107566541A (zh) * 2017-08-03 2018-01-09 携程旅游信息技术(上海)有限公司 容器网络资源分配方法、系统、存储介质和电子设备
US20190102157A1 (en) * 2017-09-30 2019-04-04 Oracle International Corporation Optimizing redeployment of functions and services across multiple container platforms and installations
CN108540453A (zh) * 2018-03-15 2018-09-14 新智数字科技有限公司 一种应用于PaaS的网络隔离方法、装置以及设备
CN109032806A (zh) * 2018-07-30 2018-12-18 华为技术有限公司 容器的服务调度方法和装置
CN109032760A (zh) * 2018-08-01 2018-12-18 北京百度网讯科技有限公司 用于部署应用的方法和装置
CN109413065A (zh) * 2018-10-25 2019-03-01 山东浪潮云信息技术有限公司 一种基于容器的集群安全管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
徐飞: "基于Kubernetes的多租户网络隔离的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111147450A (zh) * 2019-12-09 2020-05-12 江苏艾佳家居用品有限公司 一种基于macvlan模式的容器网络隔离方法
CN111147450B (zh) * 2019-12-09 2022-07-08 江苏艾佳家居用品有限公司 一种基于macvlan模式的容器网络隔离方法
CN111709014A (zh) * 2020-05-27 2020-09-25 浪潮电子信息产业股份有限公司 一种应用隔离方法、系统、设备及计算机可读存储介质
WO2021238256A1 (zh) * 2020-05-27 2021-12-02 浪潮电子信息产业股份有限公司 一种应用隔离方法、系统、设备及计算机可读存储介质
CN111709014B (zh) * 2020-05-27 2022-06-07 浪潮电子信息产业股份有限公司 一种应用隔离方法、系统、设备及计算机可读存储介质
CN111813499A (zh) * 2020-07-08 2020-10-23 赛特斯信息科技股份有限公司 针对容器网络实现策略校验的方法及其应用系统
CN113676524A (zh) * 2021-08-09 2021-11-19 浪潮云信息技术股份公司 一种实现多cpu架构容器网络代理的方法

Also Published As

Publication number Publication date
CN110266679B (zh) 2023-02-28

Similar Documents

Publication Publication Date Title
CN110266679A (zh) 容器网络隔离方法及装置
EP3744072B1 (en) Network flow stitching using middle box flow stitching
US20160357424A1 (en) Collapsing and placement of applications
CN103403707B (zh) 用于数据库代理请求交换的系统和方法
US20190123985A1 (en) Federated network and application data analytics platform
US11044170B2 (en) Network migration assistant
CN102684970B (zh) 瘦客户端环境提供系统、服务器和瘦客户端环境管理方法
CN102929613B (zh) 操作系统的调优装置和方法
CN105471662B (zh) 云服务器、虚拟网络策略集中控制系统和方法
US20190238633A1 (en) Load balancing configuration based on traffic flow telemetry
CN110035009A (zh) 分组转发路径元素的节点表示
EP3744073B1 (en) Discovery of middleboxes using traffic flow stitching
CN103581183B (zh) 一种虚拟化安全隔离方法与装置
CN113542074B (zh) 一种可视化管理kubernetes集群的东西向网络流量的方法及系统
EP4165532B1 (en) Application protectability schemes for enterprise applications
US10999149B2 (en) Automatic configuration discovery based on traffic flow data
CN105912266A (zh) 一种刀片服务器及一种刀片服务器的融合存储的方法
CN108108289A (zh) 一种集群资源统计方法、系统、装置及可读存储系统
US11895156B2 (en) Securing network resources from known threats
CN116760834A (zh) 一种负载均衡方法、系统、设备以及存储介质
CN103684881B (zh) 一种网络建模方法及装置
CN107528724A (zh) 一种节点集群的优化处理方法及装置
Hayes Scalability and Performance Considerations for Traffic Classification in Software-Defined Networks
CN110572353A (zh) 云计算网络安全服务
Zhang System Design and Implementation for Hybrid Network Function Virtualization

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant