一种安全管控的方法、装置和安全管控设备转让专利

申请号 : CN202010366008.5

文献号 : CN113595962B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈典魏淼

申请人 : 华为技术有限公司

摘要 :

本申请实施例公开了一种安全管控的方法、装置和安全管控设备,属于互联网技术领域。所述方法包括:接收目标Git客户端发送的git请求,git请求中携带有目标账户的账户标识和git信息,git信息由目标Git客户端通过第一密钥加密;获取目标账户的账户标识对应的第二密钥,其中,第一密钥和第二密钥分别为目标Git客户端生成的私钥和公钥;通过第二密钥对git请求中携带的git信息进行解密;基于目标账户的账户标识和解密后的git信息,对git请求进行鉴权;在git请求鉴权通过后,将git请求转发至目标Git服务器。采用本申请,可以有效保障Git服务器的数据安全。

权利要求 :

1.一种安全管控的方法,其特征在于,所述方法应用于安全管控设备,所述安全管控设备为Git客户端的客户端主机,所述方法包括:接收目标Git客户端发送的git请求,其中,所述git请求中携带有目标账户的账户标识、git信息和目标Git服务器的地址,其中,所述目标账户为所述目标Git客户端登录的账户,所述git信息由所述目标Git客户端通过第一密钥加密;

获取所述git请求中携带的所述目标Git服务器的地址;

获取所述目标账户的账户标识和可访问Git服务器的地址之间的对应关系;

如果目标Git服务器的地址在所述目标账户的账户标识对应的可访问Git服务器的地址中,则确定所述目标账户可访问所述目标Git服务器;

获取所述目标账户的账户标识对应的第二密钥,其中,所述第一密钥和所述第二密钥分别为所述目标Git客户端生成的私钥和公钥;

通过所述第二密钥对所述git请求中携带的git信息进行解密;

基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权;

在所述git请求鉴权通过后,将所述git请求转发至目标Git服务器。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;

存储所述账户标识和可访问Git服务器的地址之间的对应关系。

3.根据权利要求1‑2中任一项所述的方法,其特征在于,所述git信息中包括目标git指令,所述基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权,包括:获取所述目标账户的账户标识对应的可执行git指令;

确定所述目标账户的账户标识对应的可执行git指令是否包括所述目标git指令;

如果所述目标账户的账户标识对应的可执行git指令包括所述目标git指令,则确定所述git请求鉴权通过;

如果所述目标账户的账户标识对应的可执行git指令不包括所述目标git指令,则确定所述git请求鉴权失败。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:如果所述git请求鉴权失败,则不对所述git请求进行转发处理;

向所述目标Git客户端返回鉴权失败消息。

5.根据权利要求3‑4中任一项所述的方法,其特征在于,所述方法还包括:接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;

存储所述账户标识和可访问Git服务器的地址之间的对应关系。

6.根据权利要求1‑5中任一项所述的方法,其特征在于,所述方法还包括:接收所述目标Git客户端发送的目标账户的账户标识和所述第二密钥;

将所述目标账户的账户标识和所述第二密钥对应存储。

7.一种安全管控的装置,其特征在于,所述装置包括:接收模块,用于接收目标Git客户端发送的git请求,其中,所述git请求中携带有目标账户的账户标识、git信息和目标Git服务器的地址,其中,所述目标账户为所述目标Git客户端登录的账户,所述git信息由所述目标Git客户端通过第一密钥加密;

获取模块,用于获取所述目标账户的账户标识对应的第二密钥,其中,所述第一密钥和所述第二密钥分别为所述目标Git客户端生成的私钥和公钥;

解密模块,用于通过所述第二密钥对所述git请求中携带的git信息进行解密;

鉴权模块,用于基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权;获取所述git请求中携带的所述目标Git服务器的地址;

获取所述目标账户的账户标识和可访问Git服务器的地址之间的对应关系;

如果目标Git服务器的地址在所述目标账户的账户标识对应的可访问Git服务器的地址中,则确定所述目标账户可访问所述目标Git服务器;

转发模块,用于在所述git请求鉴权通过后,将所述git请求转发至目标Git服务器。

8.根据权利要求7所述的装置,其特征在于,所述装置还包括:存储模块,用于接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;

存储所述账户标识和可访问Git服务器的地址之间的对应关系。

9.根据权利要求7‑8中任一项所述的装置,其特征在于,所述git信息中包括目标git指令,所述鉴权模块,用于:获取所述目标账户的账户标识对应的可执行git指令;

确定所述目标账户的账户标识对应的可执行git指令是否包括所述目标git指令;

如果所述目标账户的账户标识对应的可执行git指令包括所述目标git指令,则确定所述git请求鉴权通过;

如果所述目标账户的账户标识对应的可执行git指令不包括所述目标git指令,则确定所述git请求鉴权失败。

10.根据权利要求9所述的装置,其特征在于,所述装置还包括:返回模块,用于如果所述git请求鉴权失败,则不对所述git请求进行转发处理;

向所述目标Git客户端返回鉴权失败消息。

11.根据权利要求9‑10中任一项所述的装置,其特征在于,存储模块,还用于:接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;

存储所述账户标识和可访问Git服务器的地址之间的对应关系。

12.根据权利要求7‑11中任一项所述的装置,其特征在于,存储模块,还用于:接收所述目标Git客户端发送的目标账户的账户标识和所述第二密钥;

将所述目标账户的账户标识和所述第二密钥对应存储。

13.一种安全管控设备,其特征在于,所述安全管控设备包括接收器、处理器和发射器,其中:所述接收器,用于接收目标Git客户端发送的git请求,其中,所述git请求中携带有目标账户的账户标识、git信息和目标Git服务器的地址,其中,所述目标账户为所述目标Git客户端登录的账户,所述git信息由所述目标Git客户端通过第一密钥加密;

所述处理器,用于获取所述git请求中携带的所述目标Git服务器的地址;获取所述目标账户的账户标识和可访问Git服务器的地址之间的对应关系;如果目标Git服务器的地址在所述目标账户的账户标识对应的可访问Git服务器的地址中,则确定所述目标账户可访问所述目标Git服务器;获取所述目标账户的账户标识对应的第二密钥,其中,所述第一密钥和所述第二密钥分别为所述目标Git客户端生成的私钥和公钥;通过所述第二密钥对所述git请求中携带的git信息进行解密;基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权;

所述发射器,用于在所述git请求鉴权通过后,将所述git请求转发至目标Git服务器。

14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述计算机可读存储介质在安全管控设备上运行时,使得所述安全管控设备执行所述权利要求1‑6中任一项权利要求所述的安全管控的方法。

说明书 :

一种安全管控的方法、装置和安全管控设备

技术领域

[0001] 本申请涉及通信技术领域,特别涉及一种安全管控的方法、装置和安全管控设备。

背景技术

[0002] 分布式版本控制系统(Git)可以实现对各种大型开发项目的版本管理。目前,在互联网行业,分布式版本控制系统被广泛应用。通常一个分布式版本控制系统中可以包括有Git服务器和Git客户端。Git服务器可以作为一个公共的版本库,开发人员可以通过Git客户端向该Git服务器中推送(push)版本更新数据,还可以在该GIT服务器中拉取(pull)其他开发人员上传的版本更新数据,还可以在该Git服务器中克隆(clone)完整的版本数据。
[0003] Git服务器作中通常存储了项目的全部版本数据,因此,亟需一种能够对Git客户端向Git服务器发送的git请求进行鉴权认证的方法,以保证Git服务器的数据安全。

发明内容

[0004] 为了解决相关技术中Git服务器的数据安全的问题,本申请实施例提供了一种安全管控的方法、装置和安全管控设备。所述技术方案如下:
[0005] 第一方面、提供了一种安全管控的方法,所述方法应用于安全管控设备,所述方法包括:
[0006] 接收目标Git客户端发送的git请求,其中,所述git请求中携带有目标账户的账户标识和git信息,其中,所述目标账户为所述目标Git客户端登录的账户,所述git信息由所述目标Git客户端通过第一密钥加密;
[0007] 获取所述目标账户的账户标识对应的第二密钥,其中,所述第一密钥和所述第二密钥分别为所述目标Git客户端生成的私钥和公钥;
[0008] 通过所述第二密钥对所述git请求中携带的git信息进行解密;
[0009] 基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权;
[0010] 在所述git请求鉴权通过后,将所述git请求转发至目标Git服务器。
[0011] 在本申请实施例所示的方案中,技术人员可以将Git客户端的客户端主机(client host)设置为安全管控设备。即,使Git客户端向Git服务器发出的git请求都会先发送至该安全管控设备。安全管控设备可以接收Git客户端向Git服务器发送的git请求。并可以对该git请求中加密的git信息进行解密,以获取解密后的git信息。然后,可以根据目标账户的账户标识和解密后的git信息,对该git请求进行鉴权。通过上述方案,可以对git请求进行鉴权,只要鉴权通过才能将git转发至Git服务器,这样可以有效的保障Git服务器的数据安全。
[0012] 在一种可能的实现方式中,git请求中还携带有所述目标Git服务器的地址,所述接收目标Git客户端发送的git请求之后,所述方法还包括:
[0013] 获取所述git请求中携带的所述目标Git服务器的地址;
[0014] 获取所述目标账户的账户标识对应的可访问Git服务器的地址;
[0015] 确定所述目标账户的账户标识对应的可访问Git服务器的地址包括所述目标Git服务器的地址。
[0016] 在本申请实施例所示的方案中,由于一个安全管控设备可以连接多个Git服务器,而不同用户可访问的Git服务器也可以不同,则管理人员可以预先配置用户可访问的Git服务器。即,管理人员可以在该安全管控设备中配置有账户标识和可访问Git服务器的地址之间的对应关系,同一个账户标识可以对应一个或多个可访问Git服务器的地址。
[0017] 那么,在获取目标账户的账户标识和目标Git服务器的地址之后,可以获取预先配置的该目标账户的账户标识对应的可访问服务器的地址。如果目标Git服务器的地址在该目标账户的账户标识对应的可访问Git服务器的地址中,则可以确定该目标账户可以访问该目标Git服务器。
[0018] 在一种可能的实现方式中,所述方法还包括:
[0019] 接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;
[0020] 存储所述账户标识和可访问Git服务器的地址之间的对应关系。
[0021] 在本申请实施例所示的方案中,管理人员可以通过管理设备向安全管控设备上传账户标识和可访问Git服务器的地址之间的对应关系,并由安全管控设备进行存储。
[0022] 在一种可能的实现方式中,所述git信息中包括目标git指令,所述基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权,包括:
[0023] 获取所述目标账户的账户标识对应的可执行git指令;
[0024] 确定所述目标账户的账户标识对应的可执行git指令是否包括所述目标git指令;
[0025] 如果所述目标账户的账户标识对应的可执行git指令包括所述目标git指令,则确定所述git请求鉴权通过;
[0026] 如果所述目标账户的账户标识对应的可执行git指令不包括所述目标git指令,则确定所述git请求鉴权失败。
[0027] 在本申请实施例所示的方案中,在上述git请求中携带的git信息中可以包括有git指令,如git clone、git pull、git push等。每个用户可以对Git服务器可执行的git指令可以不相同。则管理人员可以预先在安全管控设备中配置每个用户的可执行git指令。
[0028] 在获取到git信息中的目标git指令后,可以获取目标账户的账户标识对应的可执行git指令。并确定目标账户的账户标识对应的可执行git指令是否包括目标git指令。如果目标账户的账户标识对应的可执行git指令包括目标git指令,则确定git请求鉴权通过。如果目标账户的账户标识对应的可执行git指令不包括目标git指令,则确定git请求鉴权失败。
[0029] 在一种可能的实现方式中,所述方法还包括:
[0030] 如果所述git请求鉴权失败,则不对所述git请求进行转发处理;
[0031] 向所述目标Git客户端返回鉴权失败消息。
[0032] 在一种可能的实现方式中,所述方法还包括:
[0033] 接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;
[0034] 存储所述账户标识和可访问Git服务器的地址之间的对应关系。
[0035] 在本申请实施例所示的方案中,管理人员可以通过管理设备向安全管控设备上传账户标识和可访问Git服务器的地址之间的对应关系,并由安全管控设备进行存储,以便后续对git进行鉴权。
[0036] 在一种可能的实现方式中,所述方法还包括:
[0037] 接收所述目标Git客户端发送的目标账户的账户标识和所述第二密钥;
[0038] 将所述目标账户的账户标识和所述第二密钥对应存储。
[0039] 在本申请实施例所示的方案中,为了使安全管控设备可以对git请求进行解密,客户端可以将生成的密钥对发送到安全管控设备中,由安全管控设备将目标账户的账户标识和密钥对对应存储。生成密钥对时,可以采用非对称加密算法。
[0040] 第二方面、提供了一种安全管控的装置,所述装置包括:
[0041] 接收模块,用于接收目标Git客户端发送的git请求,其中,所述git请求中携带有目标账户的账户标识和git信息,其中,所述目标账户为所述目标Git客户端登录的账户,所述git信息由所述目标Git客户端通过第一密钥加密;
[0042] 获取模块,用于获取所述目标账户的账户标识对应的第二密钥,其中,所述第一密钥和所述第二密钥分别为所述目标Git客户端生成的私钥和公钥;
[0043] 解密模块,用于通过所述第二密钥对所述git请求中携带的git信息进行解密;
[0044] 鉴权模块,用于基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权;
[0045] 转发模块,用于在所述git请求鉴权通过后,将所述git请求转发至目标Git服务器。
[0046] 在一种可能的实现方式中,git请求中还携带有所述目标Git服务器的地址,所述接收目标Git客户端发送的git请求之后,所述鉴权模块还用于:
[0047] 获取所述git请求中携带的所述目标Git服务器的地址;
[0048] 获取所述目标账户的账户标识对应的可访问Git服务器的地址;
[0049] 确定所述目标账户的账户标识对应的可访问Git服务器的地址包括所述目标Git服务器的地址。
[0050] 在一种可能的实现方式中,所述装置还包括:
[0051] 存储模块,用于接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;
[0052] 存储所述账户标识和可访问Git服务器的地址之间的对应关系。
[0053] 在一种可能的实现方式中,所述git信息中包括目标git指令,所述鉴权模块,用于:
[0054] 获取所述目标账户的账户标识对应的可执行git指令;
[0055] 确定所述目标账户的账户标识对应的可执行git指令是否包括所述目标git指令;
[0056] 如果所述目标账户的账户标识对应的可执行git指令包括所述目标git指令,则确定所述git请求鉴权通过;
[0057] 如果所述目标账户的账户标识对应的可执行git指令不包括所述目标git指令,则确定所述git请求鉴权失败。
[0058] 在一种可能的实现方式中,所述装置还包括:
[0059] 返回模块,用于如果所述git请求鉴权失败,则不对所述git请求进行转发处理;
[0060] 向所述目标Git客户端返回鉴权失败消息。
[0061] 在一种可能的实现方式中,所述存储模块,还用于:
[0062] 接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;
[0063] 存储所述账户标识和可访问Git服务器的地址之间的对应关系。
[0064] 在一种可能的实现方式中,所述存储模块,还用于:
[0065] 接收所述目标Git客户端发送的目标账户的账户标识和所述第二密钥;
[0066] 将所述目标账户的账户标识和所述第二密钥对应存储。
[0067] 第三方面、提供了一种安全管控设备,所述安全管控设备包括接收器、处理器和发射器,其中:
[0068] 所述接收器,用于接收目标Git客户端发送的git请求,其中,所述git请求中携带有目标账户的账户标识和git信息,其中,所述目标账户为所述目标Git客户端登录的账户,所述git信息由所述目标Git客户端通过第一密钥加密;
[0069] 所述处理器,用于获取所述目标账户的账户标识对应的第二密钥,其中,所述第一密钥和所述第二密钥分别为所述目标Git客户端生成的私钥和公钥;通过所述第二密钥对所述git请求中携带的git信息进行解密;基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权;
[0070] 所述发射器,用于在所述git请求鉴权通过后,将所述git请求转发至目标Git服务器。
[0071] 在一种可能的实现方式中,git请求中还携带有所述目标Git服务器的地址,所述接收目标Git客户端发送的git请求之后,所述方法还包括:
[0072] 获取所述git请求中携带的所述目标Git服务器的地址;
[0073] 获取所述目标账户的账户标识对应的可访问Git服务器的地址;
[0074] 确定所述目标账户的账户标识对应的可访问Git服务器的地址包括所述目标Git服务器的地址。
[0075] 在一种可能的实现方式中,所述处理器还用于:
[0076] 接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;
[0077] 存储所述账户标识和可访问Git服务器的地址之间的对应关系。
[0078] 在一种可能的实现方式中,所述git信息中包括目标git指令,所述基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权,包括:
[0079] 获取所述目标账户的账户标识对应的可执行git指令;
[0080] 确定所述目标账户的账户标识对应的可执行git指令是否包括所述目标git指令;
[0081] 如果所述目标账户的账户标识对应的可执行git指令包括所述目标git指令,则确定所述git请求鉴权通过;
[0082] 如果所述目标账户的账户标识对应的可执行git指令不包括所述目标git指令,则确定所述git请求鉴权失败。
[0083] 在一种可能的实现方式中,所述发射器还用于:
[0084] 如果所述git请求鉴权失败,则不对所述git请求进行转发处理;
[0085] 向所述目标Git客户端返回鉴权失败消息。
[0086] 在一种可能的实现方式中,所述接收器还用于:
[0087] 接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;
[0088] 存储所述账户标识和可访问Git服务器的地址之间的对应关系。
[0089] 在一种可能的实现方式中,所述接收器还用于:
[0090] 接收所述目标Git客户端发送的目标账户的账户标识和所述第二密钥;
[0091] 将所述目标账户的账户标识和所述第二密钥对应存储。
[0092] 第四方面、提供了一种计算机可读存储介质,所述计算机可读存储介质包括指令,当所述计算机可读存储介质在安全管控设备上运行时,使得所述安全管控设备执行上述第一方面所述的安全管控的方法。
[0093] 本申请实施例提供的技术方案带来的有益效果是:
[0094] 本申请实施例中,安全管控设备可以接收Git客户端向Git服务器发送的git请求。并可以对该git请求中加密的git信息进行解密,以获取解密后的git信息。然后,可以根据目标账户的账户标识和解密后的git信息,对该git请求进行鉴权。由于不同用户可以对Git服务器所执行的操作不同,例如,用户A只能向Git服务器推送数据,用户B可以向Git服务器推送数据,还可以克隆Git服务器中的数据,通过上述方案,可以对git请求进行鉴权,只要鉴权通过才能将git转发至Git服务器,这样可以有效的保障Git服务器的数据安全。

附图说明

[0095] 图1是本申请实施例提供的一种实施场景示意图;
[0096] 图2是本申请实施例提供的一种安全管控设备的结示意图;
[0097] 图3是本申请实施例提供的一种安全管控的方法流程图;
[0098] 图4是本申请实施例提供的一种安全管控的装置结构示意图。

具体实施方式

[0099] 本申请实施例提供了一种安全管控的方法,该方法可以安全管控设备实现。该安全管控设备可以为服务器、服务器集群等。参见图1,在本申请实施例的实施场景中可以包括有Git客户端、安全管控设备和Git服务器。Git客户端可以向Git服务器发送git请求,以实现向Git服务器拉取(pull)版本更新数据、克隆(clone)版本库以及推送(push)版本更新数据等等。在本申请实施例中,Git客户端向Git服务器发送的git请求,可以先发送至安全管控设备,由安全管控设备对该git请求进行鉴权,如果鉴权通过,则将该git请求转发至Git服务器,如果鉴权不通过,则拦截该git请求。从而,使得有一定权限的用户可以对Git服务器进行访问,以及相应操作,保证了Git服务器的数据安全。此外,由于本申请实施例中安全管控设备独立设置,相比于设置在Git服务器中作为一个功能模块,更便于维护。
[0100] 参见图2,上述安全管控设备可以包括处理器210、发射器220、接收器230,接收器230和发射器220可以分别与处理器210连接,如图2所示。接收器230可以用于接收Git客户端发送的git请求,发射器220和接收器230可以是网卡,发射器220可以用于在鉴权通过后,转发Git客户端发送的git请求。处理器210可以是安全管控设备的控制中心,利用各种接口和线路连接整个安全管控设备的各个部分,如接收器230和发射器220等。在本申请中,处理器210可以是中央处理器(Central Processing Unit,CPU),可以用于获取密钥,通过密钥对git请求进行解密,并基于对所述git请求进行鉴权等以及相关处理。在一种可能的时序方式中,处理器210可以包括一个或多个处理单元。处理器210还可以是数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件等。安全管控设备还可以包括存储器240,存储器240可用于存储软件程序以及模块,处理器210通过读取存储在存储器的软件代码以及模块,从而执行转发设备的各种功能。
[0101] 参见图3,本申请实施例提供了一种安全管控的方法,该安全管控的方法可以由安全管控设备实现,如图3所示,该方法的处理流程可以包括如下步骤:
[0102] 步骤301、接收目标Git客户端发送的git请求。
[0103] 其中,git请求中携带有目标账户的账户标识和git信息。
[0104] 在实施中,技术人员可以将Git客户端的客户端主机(client host)设置为安全管控设备。即,使Git客户端向Git服务器发送的git请求都会先发送至该安全管控设备。
[0105] 用户可以先在目标Git客户端中登录已经注册的目标账户。通过Git客户端可以使用安全外壳(Secure Shell,SSH)协议向Git服务器发送git请求,该git请求中可以携带有目标账户的账户标识和git信息。其中,用户可以使用邮箱作为注册账户,则目标账户的账户标识可以为邮箱地址。
[0106] 在发送git请求之前,目标Git客户端可以对git请求中携带的git信息进行加密。Git客户端可以预先采用非对称加密算法,生成一个密钥对。在该密钥对中包括第一密钥和第二密钥,第一密钥和第二密钥中一个为私钥,另一个为公钥。下面均以第一密钥为私钥,第二密钥为公钥进行说明。目标Git客户端可以将该秘钥对上传至安全管控设备,在上传密钥对时,可以将目标账户的账户标识和密钥对一起上传。安全管控设备可以将该秘钥对和目标账户的账户标识对应存储。
[0107] 在对git信息进行加密时,目标Git客户端可以采用上述计算出的密钥对中的第一密钥进行加密。并将加密处理后的git请求发送至安全管控设备。
[0108] 步骤302、获取目标账户的账户标识对应的第二密钥,其中,第一密钥和第二密钥分别为目标Git客户端生成的私钥和公钥。
[0109] 在实施中,安全管控设备在接收到目标Git客户端发送的git请求之后,可以先获取其中携带的目标账户的账户标识。此外,在该git请求中还可以携带有未加密的目标Git服务器的地址和相应的端口号。相应的,在获取目标账户的账户标识时,还可以获取目标Git服务器的地址和相应的端口号。
[0110] 由于一个安全管控设备可以连接多个Git服务器,而不同用户可访问的Git服务器也可以不同,则管理人员可以通过管理设备,预先在安全管控设备中配置用户可访问的Git服务器。即,管理人员可以通过管理设备向安全管控设备发送账户标识和可访问Git服务器的地址之间的对应关系,同一个账户标识可以对应一个或多个可访问Git服务器的地址。安全管控设备对该对应关系进行存储。
[0111] 那么,在获取目标账户的账户标识和目标Git服务器的地址之后,可以获取预先配置的该目标账户的账户标识对应的可访问服务器的地址。如果目标Git服务器的地址在该目标账户的账户标识对应的可访问Git服务器的地址中,则可以确定该目标账户可以访问该目标Git服务器。
[0112] 然后,安全管控设备可以获取该目标账户的账户标识对应的密钥对,并获取其中的第二密钥。
[0113] 此外,在该git请求还携带有目标Git客户端的地址,安全管控设备还可以将密钥对和目标Git客户端的地址对应存储,以便后续对Git服务器返回的信息进行解密。
[0114] 步骤303、通过第二密钥对git请求中携带的git信息进行解密。
[0115] 在实施中,安全管控设备可以使用获取的第二密钥对该git请求中加密的git信息进行解密。得到解密后的git信息。
[0116] 步骤304、基于目标账户的账户标识和解密后的git信息,对git请求进行鉴权。
[0117] 在实施中,在上述git请求中携带的git信息中可以包括有git指令,如git clone、git pull、git push等。每个用户可以对Git服务器可执行的git指令可以不相同。则管理人员可以通过管理设备,预先在安全管控设备中配置每个用户的可执行git指令。即,管理人员可以通过管理设备向安全管控设备发送账户标识和可执行指令的对应关系。安全管控设备对该对应关系进行存储。
[0118] 在获取到git信息中的目标git指令后,安全管控设备可以获取目标账户的账户标识对应的可执行git指令。并确定目标账户的账户标识对应的可执行git指令是否包括目标git指令。如果目标账户的账户标识对应的可执行git指令包括目标git指令,则确定git请求鉴权通过。如果目标账户的账户标识对应的可执行git指令不包括目标git指令,则确定git请求鉴权失败,并向目标Git客户端返回鉴权失败消息。
[0119] 在一种可能的实现方式中,不同用户对不同Git服务器的可执行git指令也可以不同。则管理人员可以通过管理设备,预先在安全管控设备中配置每个用户对每个可访问Git服务器的可执行git指令。即,管理人员可以通过管理设备向安全管控设备发送账户标识、可访问服务器的地址和可执行指令的对应关系。安全管控设备对该对应关系进行存储。
[0120] 相应的,在获取到git信息中的目标git指令后,安全管控设备可以获取目标账户的账户标识和目标Git服务器共同对应的可执行git指令,并确定目标账户的账户标识和目标Git服务器的地址共同对应的可执行git指令是否包括目标git指令。如果包括,则鉴权通过。如果不包括,则鉴权失败。
[0121] 如下表1所示,为一种账户的账户标识、可访问Git服务器的地址和可执行指令之间的对应关系。
[0122] 表1
[0123]
[0124] 在另一种可能的实现方式中,在git请求中的git信息中还可以包括目标版本仓库的仓库标识。在一个Git服务器中可以包括有多个版本仓库,不同用户可访问的版本仓库也可以不同,对不同版本仓库的可执行指令也可以不同。则管理人员可以通过管理设备,预先在安全管控设备中配置每个用户对每个可访问Git服务器中的可访问版本仓库的可执行git指令。即,管理人员可以通过管理设备向安全管控设备发送账户标识、可访问服务器的地址、可访问版本仓库的仓库标识和可执行指令的对应关系。安全管控设备对该对应关系进行存储。
[0125] 相应的,在获取到git信息中的目标git指令后,安全管控设备可以获取目标账户的账户标识、目标Git服务器的地址、目标版本仓库的仓库标识共同对应的可执行git指令,并确定目标账户的账户标识、目标Git服务器的地址、目标版本仓库的仓库标识共同对应的可执行git指令是否包括目标git指令。如果包括,则鉴权通过。如果不包括,则鉴权失败。
[0126] 如下表2所示,为一种账户的账户标识、可访问Git服务器的地址、可访问版本仓库的仓库标识和可执行指令之间的对应关系。
[0127] 表2
[0128]
[0129] 步骤305、在git请求鉴权通过后,将git请求转发至目标Git服务器。
[0130] 在实施中,安全管控设备可以在对git请求鉴权通过后,将git请求转发至目标Git服务器。
[0131] 目标客户端在生成密钥对后,除了将目标账户的账户标识和密钥对上传到安全管控设备外,还可以将目标账户的账户标识和密钥对上传到Git服务器中。
[0132] 目标Git服务器可以响应目标Git客户端发送的git请求,并返回相应的请求结果信息。该请求结果信息中可以携带有目标Git客户端的地址和git信息。该请求结果信息中的git信息,可以由目标Git服务器根据SSH协议,采用目标账户的密钥对中的第二密钥进行加密。安全管控设备接收到目标Git服务器向目标Git客户端返回的请求结果信息后,可以获取其中携带的目标客户端的地址。进而,可以在存储的客户端的地址和密钥对中,获取该目标客户端的地址对应的密钥对。并获取该密钥对中的第一密钥,并使用该第一密钥对请求结果信息中加密的git信息进行解密。
[0133] 如果目标Git客户端发送的git请求中的git指令为git clone,则在该请求结果信息携带的git信息中可以包括有目标Git服务器向Git客户端返回的克隆目标版本仓库的版本数据,该版本数据可以为packfiles格式的Git bin包。安全管控设备可以按照packfiles格式,解析出Git数据结构。即,解析出其中的Object,每个Object可以包括多个数据块(block),每个block包括多个文件,同时每个Object里面还包括一个数据结构树(tree)信息,tree信息中包括该Object中每个文件对应的hash值。安全管控设备通过git checkout指令,可以检出tree信息中每个哈希值对应的文件,并进行存储。
[0134] 如果目标Git客户端发送的git请求中的git指令为git pull,则在git信息中可以包括目标版本仓库的仓库标识、目标Git服务器向Git客户端返回的更新版本数据。安全管控设备可以向目标Git服务器发送git clone指令,该git clone指令中可携带有目标版本仓库的仓库标识,克隆上述目标版本仓库中的全部版本数据。克隆到的该目标版本仓库中的全部版本数据,同样可以为packfiles格式的Git bin包。安全管控设备可以按照packfiles格式,解析出Git数据结构。即,解析出其中的对象(Object),每个Object可以包括多个数据块(block),每个block包括多个文件,同时每个Object里面还包括一个数据结构树(tree)信息,tree信息中包括该Object中每个文件对应的hash值。安全管控设备通过git checkout指令,可以检出tree信息中每个哈希值对应的文件,并进行存储。
[0135] 如果目标Git客户端发送的git请求中的git指令为git push,则在git信息中可以包括目标版本仓库的仓库标识。安全管控设备可以向目标Git服务器发送git clone指令,该git clone指令中可携带有目标版本仓库的仓库标识,克隆上述目标版本仓库中的全部版本数据。克隆到的该目标版本仓库中的全部版本数据,同样可以为packfiles格式的Git bin包。安全管控设备可以按照packfiles格式(一种二进制文件打包格式),解析出Git数据结构。即,解析出其中的Object,每个Object可以包括多个数据块(block),每个block包括多个文件,同时每个Object里面还包括一个数据结构树(tree)信息,tree信息中包括该Object中每个文件对应的hash值。安全管控设备通过git checkout指令,可以检出tree信息中每个哈希值对应的文件,并进行存储。
[0136] 通过上述处理,安全管控设备可以获取到目标Git客户端在目标Git服务器中获取到的所有版本数据,这样,便于管理人员按时统计Git客户端中的版本数据,从而可以更好对版本数据进行安全管控。
[0137] 本申请实施例中,安全管控设备可以接收Git客户端向Git服务器发送的git请求。并可以对该git请求中加密的git信息进行解密,以获取解密后的git信息。然后,可以根据目标账户的账户标识和解密后的git信息,对该git请求进行鉴权。由于不同用户可以对Git服务器所执行的操作不同,例如,用户A只能向Git服务器推送数据,用户B可以向Git服务器推送数据,还可以克隆Git服务器中的数据,通过上述方案,可以对git请求进行鉴权,只要鉴权通过才能将git转发至Git服务器,这样可以有效的保障Git服务器的数据安全。
[0138] 基于相同的技术构思,本申请实施例还提供了一种安全管控的装置,如图4所示,该装置包括:
[0139] 接收模块410,用于接收目标Git客户端发送的git请求,其中,所述git请求中携带有目标账户的账户标识和git信息,其中,所述目标账户为所述目标Git客户端登录的账户,所述git信息由所述目标Git客户端通过第一密钥加密。具体可以实现上述步骤401提到的接收功能,以及其他隐含步骤。
[0140] 获取模块420,用于获取所述目标账户的账户标识对应的第二密钥,其中,所述第一密钥和所述第二密钥分别为所述目标Git客户端生成的私钥和公钥。具体可以实现上述步骤402提到的获取功能,以及其他隐含步骤。
[0141] 解密模块430,用于通过所述第二密钥对所述git请求中携带的git信息进行解密。具体可以实现上述步骤403提到的解密功能,以及其他隐含步骤。
[0142] 鉴权模块440,用于基于所述目标账户的账户标识和解密后的git信息,对所述git请求进行鉴权。具体可以实现上述步骤404提到的鉴权功能,以及其他隐含步骤。
[0143] 转发模块450,用于在所述git请求鉴权通过后,将所述git请求转发至目标Git服务器。具体可以实现上述步骤405提到的转发功能,以及其他隐含步骤。
[0144] 在一种可能的实现方式中,git请求中还携带有所述目标Git服务器的地址,所述接收目标Git客户端发送的git请求之后,所述鉴权模块440还用于:
[0145] 获取所述git请求中携带的所述目标Git服务器的地址;
[0146] 获取所述目标账户的账户标识对应的可访问Git服务器的地址;
[0147] 确定所述目标账户的账户标识对应的可访问Git服务器的地址包括所述目标Git服务器的地址。
[0148] 在一种可能的实现方式中,所述装置还包括:
[0149] 存储模块,用于接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;
[0150] 存储所述账户标识和可访问Git服务器的地址之间的对应关系。
[0151] 在一种可能的实现方式中,所述git信息中包括目标git指令,所述鉴权模块440,用于:
[0152] 获取所述目标账户的账户标识对应的可执行git指令;
[0153] 确定所述目标账户的账户标识对应的可执行git指令是否包括所述目标git指令;
[0154] 如果所述目标账户的账户标识对应的可执行git指令包括所述目标git指令,则确定所述git请求鉴权通过;
[0155] 如果所述目标账户的账户标识对应的可执行git指令不包括所述目标git指令,则确定所述git请求鉴权失败。
[0156] 在一种可能的实现方式中,所述装置还包括:
[0157] 返回模块,用于如果所述git请求鉴权失败,则不对所述git请求进行转发处理;
[0158] 向所述目标Git客户端返回鉴权失败消息。
[0159] 在一种可能的实现方式中,所述存储模块,还用于:
[0160] 接收管理设备发送的账户标识和可访问Git服务器的地址之间的对应关系;
[0161] 存储所述账户标识和可访问Git服务器的地址之间的对应关系。
[0162] 在一种可能的实现方式中,所述存储模块,还用于:
[0163] 接收所述目标Git客户端发送的目标账户的账户标识和所述第二密钥;
[0164] 将所述目标账户的账户标识和所述第二密钥对应存储。
[0165] 需要说明的是,上述接收模块410、获取模块420、解密模块430、鉴权模块440和转发模块450可以由处理器实现,或者由处理器配合存储器、接收器、以及发射器来实现。
[0166] 需要说明的是:上述实施例提供的安全管控的装置在进行安全管控时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将安全管控设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的安全管控的装置与安全管控的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0167] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在设备上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是设备能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(Digital Video Disk,DVD)等),或者半导体介质(如固态硬盘等)。
[0168] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0169] 以上所述仅为本申请一个实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。