CN113467895B - 一种Docker的操作方法、装置、服务器和存储介质 - Google Patents

一种Docker的操作方法、装置、服务器和存储介质 Download PDF

Info

Publication number
CN113467895B
CN113467895B CN202110812802.2A CN202110812802A CN113467895B CN 113467895 B CN113467895 B CN 113467895B CN 202110812802 A CN202110812802 A CN 202110812802A CN 113467895 B CN113467895 B CN 113467895B
Authority
CN
China
Prior art keywords
user
docker
file
container
temporary
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.)
Active
Application number
CN202110812802.2A
Other languages
English (en)
Other versions
CN113467895A (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.)
Zhongke Shuguang International Information Industry Co ltd
Original Assignee
Zhongke Shuguang International Information Industry 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 Zhongke Shuguang International Information Industry Co ltd filed Critical Zhongke Shuguang International Information Industry Co ltd
Priority to CN202110812802.2A priority Critical patent/CN113467895B/zh
Publication of CN113467895A publication Critical patent/CN113467895A/zh
Application granted granted Critical
Publication of CN113467895B publication Critical patent/CN113467895B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明实施例公开了一种Docker的操作方法、装置、服务器及存储介质,该方法包括:获取Docker命令的操作项信息;若操作项信息为创建容器,则获取用户的主目录,并判断Docker命令的参数项信息中,是否包括主目录之外的异常挂载目录;若包括,则删除异常挂载目录;将用户的用户ID加入目标容器的启动参数,通过Docker创建并启动目标容器。本发明实施例提供的技术方案,避免了当前用户对其他用户主目录的调用,确保了系统用户的数据安全,另外,该容器的登录身份为用户的用户ID,在确保容器不被其他用户访问的同时,也使得该用户在容器中执行的后续文件操作,均以用户ID权限登录而非Root权限登录。

Description

一种Docker的操作方法、装置、服务器和存储介质
技术领域
本发明实施例涉及软件开发领域,尤其涉及一种Docker的操作方法、装置、服务器和存储介质。
背景技术
Docker是一个开源的应用容器引擎,由于其基于沙箱机制,相互之间不存在通信接口,因此性能开销极低,同时其具有不依赖于语言、框架的特点,因此,被广泛应用于软件程序开发中。
Docker命令的执行需要连接Docker使用的Unix Socket文件(即“/var/run/docker.sock”文件),而该文件的访问权限受到严格控制,现有技术中,如果要为用户赋予Docker权限来管理自己的容器,通常是将该用户加入Docker用户组中。
但是由于Docker的自身机制为授权即信任,拥有Docker命令权限的用户即拥有Docker的所有权限,也即Docker组中的用户可以访问任意其他用户的容器,也可以访问其他用户创建的文件信息,存在用户数据泄露的风险,安全性极差。
发明内容
本发明实施例提供了一种Docker的操作方法、装置、服务器和存储介质,实现了多用户环境下,对用户发出的创建容器指令,进行异常挂载目录的过滤。
第一方面,本发明实施例提供了一种Docker的操作方法,包括:
当获取到用户发出的Docker命令时,获取所述Docker命令的操作项信息;
若所述操作项信息为创建容器,则获取所述用户的主目录,并判断所述Docker命令的参数项信息中,是否包括所述主目录之外的异常挂载目录;
若所述Docker命令的参数项信息中,包括所述主目录之外的异常挂载目录,则删除所述异常挂载目录;
将所述用户的用户ID加入目标容器的启动参数,通过Docker创建并启动所述目标容器。
在将所述用户的用户ID加入目标容器的启动参数前,还包括:根据系统用户文件和所述用户的用户ID,创建临时身份文件,并将所述临时身份文件挂载至所述目标容器中;其中,所述系统用户文件包括系统用户配置文件、系统用户密码文件和系统用户组配置文件,所述临时身份文件包括临时用户配置文件、临时用户密码文件和临时用户组配置文件;在通过Docker创建并启动所述目标容器后,包括:若在所述目标容器中,获取到文件操作指令,则根据所述临时身份文件进行身份验证,以确定是否响应所述文件操作指令。将宿主机的用户信息映射到新创建的目标容器内,以对文件操作指令的发出者进行身份验证,确保文件操作指令的发出者为该用户自己,保证用户的主目录中各用户文件的安全。
若所述文件操作指令为文件创建指令,在确定是否响应所述文件操作指令后,还包括:根据所述临时身份文件设置文件属主信息。使得当前用户在挂载目录下创建的文件,与在宿主机中创建的文件的属主信息一致,确保当目标容器损坏或删除时,当前用户对该创建文件同样具备可操作性。
在将所述用户的用户ID加入目标容器的启动参数前,还包括:根据所述用户的用户ID,创建临时权限文件,并将所述临时权限文件挂载至所述目标容器中;其中,所述临时权限文件包括sudo指令文件;在通过Docker创建并启动所述目标容器后,包括:若在所述目标容器中,获取到特权操作指令,则根据所述临时权限文件响应所述特权操作指令。确保用户在容器内较高的自由度,以及对系统功能的完整调用。
所述临时权限文件包括至少一个指定特权操作;在根据所述临时权限文件响应所述特权操作指令前,还包括:判断所述特权操作指令执行的目标特权操作是否为所述指定特权操作;若所述目标特权操作不为所述指定特权操作,则拒绝响应所述特权操作指令;所述根据所述临时权限文件响应所述特权操作指令,具体包括:若所述目标特权操作为所述指定特权操作,则根据所述临时权限文件响应所述特权操作指令。既确保用户在容器内一定的自由度,同时,又对用户可使用的系统功能进行了有效控制,避免用户使用特权操作白名单之外的系统功能,保证系统功能的安全性。
在获取所述Docker命令的操作项信息后,还包括:若所述Docker命令的操作项信息为非创建容器,则根据所述用户的用户ID,判断所述用户是否具备操作对象的操作权限;其中,所述操作对象包括容器和/或镜像;若所述用户具备操作对象的操作权限,则通过Docker响应所述Docker命令;若所述用户不具备操作对象的操作权限,则拒绝响应所述Docker命令。进一步通过容器或镜像的启动参数中用户ID的检测,确保该容器或镜像仅能被创建者访问,避免用户数据的泄密风险。
在获取所述用户的主目录前,还包括:根据所述用户的用户ID,判断所述用户是否为管理员用户;若所述用户为管理员用户,则通过Docker响应所述Docker命令;所述获取所述用户的主目录,包括:若所述用户为非管理员用户,则获取所述用户的主目录。避免再对管理员用户执行异常挂载信息的判断操作,减少对计算机系统资源的占用,提高管理员用户对Docker的操作效率。
第二方面,本发明实施例提供了一种Docker的操作装置,包括:
操作项信息获取模块,用于当获取到用户发出的Docker命令时,获取所述Docker命令的操作项信息;
主目录获取模块,用于若所述操作项信息为创建容器,则获取所述用户的主目录,并判断所述Docker命令的参数项信息中,是否包括所述主目录之外的异常挂载目录;
删除操作执行模块,用于若所述Docker命令的参数项信息中,包括所述主目录之外的异常挂载目录,则删除所述异常挂载目录;
启动参数设置模块,用于将所述用户的用户ID加入目标容器的启动参数,通过Docker创建并启动所述目标容器。
第三方面,本发明实施例还提供了一种服务器,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的Docker的操作方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时实现本发明任意实施例所述的Docker的操作方法。
本发明实施例提供的技术方案,在获取Docker命令的操作项信息,且确定上述命令为创建容器指令后,通过获取用户的主目录,对异常挂载目录进行过滤,避免了当前用户对其他用户主目录的调用,确保了系统用户的数据安全,另外,将当前用户的用户ID加入新创建的目标容器的启动参数中,使得该容器的登录身份为用户的用户ID,在确保容器不被其他用户访问的同时,也使得该用户在容器中执行的后续文件操作,均以用户ID权限登录而非Root权限登录,当容器损坏或删除时,用户对该容器内创建的文件同样具备可操作性。
附图说明
图1是本发明实施例一提供的一种Docker的操作方法的流程图;
图2是本发明实施例二提供的一种Docker的操作方法的流程图;
图3是本发明实施例三提供的一种Docker的操作装置的结构框图;
图4是本发明实施例四提供的一种服务器的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种Docker的操作方法的流程图,本发明实施例可适用于多用户环境下,对用户发出的创建容器指令,进行异常挂载目录的过滤,该方法可以由本发明实施例中的Docker的操作装置来执行,该装置可以通过软件和/或硬件实现,并集成在服务器中,典型的,可以集成在搭载Linux系统的管理服务器中,该方法具体包括如下步骤:
S110、当获取到用户发出的Docker命令时,获取所述Docker命令的操作项信息。
Docker命令至少由三部分标识信息组成,即前缀标识“Docker”、操作项信息和参数项信息;例如,“Docker_run_xx”为Docker中的创建容器命令,具体包括前缀标识“Docker”、操作项信息“run”和参数项信息“xx”;操作项信息表示该Docker命令的具体操作类型,如表1所示,为部分Docker命令及其对应的操作类型;
表1
Docker命令 操作类型 Docker命令 操作类型
Docker_run 创建容器 Docker_exec 访问容器
Docker_ps 查询容器 Docker_inspect 查询容器详情
Docker_stop 停止容器 Docker_rm 删除容器
Docker_pull 获取镜像 Docker_rmi 删除镜像
参数项信息表示该Docker命令执行对应操作时的具体参数,以容器创建命令“Docker_run_xx”为例,如表2所示,为部分参数项信息“xx”的具体参数;可选的,在本发明实施例中,对Docker命令的操作类型和参数类型均不作具体限定。
表2
具体的,在对Docker命令进行实时监测,并在监测到Docker命令后,截取该Docker命令,解析获取操作项信息和参数项信息;特别的,还可以预先将系统中Docker命令的执行路径进行替换,将系统中Docker命令的执行路径定向到特定的脚本文件,例如,“/usr/bin/docker_plus”文件中,进而通过该脚本文件执行本发明实施例中Docker的操作方法,以避免对系统中的Dcoker命令进行实时监测,提高Docker命令的获取效率,减少占用的计算机监测资源。
S120、若所述操作项信息为创建容器,则获取所述用户的主目录,并判断所述Docker命令的参数项信息中,是否包括所述主目录之外的异常挂载目录。
主目录是操作系统为每个用户设置的默认工作目录,里面存放了该用户的基本配置文件;Docker用户在创建容器时,为了方便对主目录的调用,通常会将主目录作为挂载目录,并放入容器创建指令的参数项信息中;在确定用户发出的Docker命令为容器创建命令后,通过获取当前用户的用户ID,确定该用户的主目录,并判断当前用户发出的容器创建命令的参数项信息中,是否包括该用户的主目录之外的其它目录,例如,系统目录和其它用户的主目录,若包括,则将上述其它目录作为异常挂载目录。
可选的,在本发明实施例中,在获取所述用户的主目录前,还包括:根据所述用户的用户ID,判断所述用户是否为管理员用户;若所述用户为管理员用户,则通过Docker响应所述Docker命令;所述获取所述用户的主目录,包括:若所述用户为非管理员用户,则获取所述用户的主目录。管理员用户,即“Root”权限用户,具备操作系统中的最高操作权限,如果发出Docker命令的用户为管理员用户,那么该用户本身具备在Docker中访问任意容器、镜像以及挂载目录的权限,因此,如果用户为Docker用户,直接通过Docker响应该Docker命令,避免后续再对管理员用户执行异常挂载信息的判断操作,减少对计算机系统资源的占用,提高管理员用户对Docker的操作效率。
S130、若所述Docker命令的参数项信息中,包括所述主目录之外的异常挂载目录,则删除所述异常挂载目录。
如果Docker命令的参数项信息中包括了异常挂载目录,则对Docker命令进行参数过滤,删除其中的异常挂载目录,仅保留该用户的主目录作为可执行目录,避免该用户对其他用户主目录的操作,确保Docker用户的数据安全。
S140、将所述用户的用户ID加入目标容器的启动参数,通过Docker创建并启动所述目标容器。
将当前用户的用户ID加入新创建容器的启动参数中,使得该容器的登录身份为当前用户自己,即确保对该容器的访问和查询等后续操作,均以用户ID进行登录,而非ROOT权限进行登录。
可选的,在本发明实施例中,在将所述用户的用户ID加入目标容器的启动参数前,还包括:根据系统用户文件和所述用户的用户ID,创建临时身份文件,并将所述临时身份文件挂载至所述目标容器中;其中,所述系统用户文件包括系统用户配置文件、系统用户密码文件和系统用户组配置文件,所述临时身份文件包括临时用户配置文件、临时用户密码文件和临时用户组配置文件;在通过Docker创建并启动所述目标容器后,包括:若在所述目标容器中,获取到文件操作指令,则根据所述临时身份文件进行身份验证,以确定是否响应所述文件操作指令。
具体的,系统用户配置文件,即Linux系统中的“/etc/passwd”文件,存储了系统中所有用户的基本信息;系统用户密码文件,即Linux系统中的“/etc/shadow”文件,存储了系统中所有用户的密码信息;系统用户组配置文件,即Linux系统中的“/etc/group”文件,存储了系统中所有用户组的基本信息;根据上述系统用户文件以及当前用户的用户ID,创建同样类型的上述文件,即临时用户配置文件(passwd文件)、临时用户密码文件(shadow文件)和临时用户组配置文件(group文件),并将上述临时用户身份文件挂载至目标容器的“/etc”目录下;上述临时身份文件既包括了系统用户及用户组的相关信息,也包括当前用户的相关信息,其作用在于,将宿主机的用户信息映射到新创建的目标容器内,以对文件操作指令的发出者进行身份验证,确保文件操作指令的发出者为该用户自己,保证用户的主目录中各用户文件的安全;其中,文件操作指令可以包括文件创建指令、文件删除指令、文件修改指令和文件查询指令等。
可选的,在本发明实施例中,若所述文件操作指令为文件创建指令,在确定是否响应所述文件操作指令后,还包括:根据所述临时身份文件设置文件属主信息。临时身份文件包括用户的用户ID,将用户通过容器创建的各个文件的属主信息,设置为该用户的用户ID和用户组ID,使得当前用户在挂载目录下创建的文件,与在宿主机中创建的文件的属主信息一致,确保当目标容器损坏或删除时,当前用户对该创建文件同样具备可操作性。
可选的,在本发明实施例中,在将所述用户的用户ID加入目标容器的启动参数前,还包括:根据所述用户的用户ID,创建临时权限文件,并将所述临时权限文件挂载至所述目标容器中;其中,所述临时权限文件包括sudo指令文件;在通过Docker创建并启动所述目标容器后,包括:若在所述目标容器中,获取到特权操作指令,则根据所述临时权限文件响应所述特权操作指令。
sudo是Linux系统的管理指令工具,其作用在于允许普通用户(非管理员用户)执行一个或多个Root命令,即为普通用户分配临时的管理员用户权限;在本发明实施例中,将用户的用户ID加入到sudo指令文件中,当获取到用户发出的特权操作指令时,例如,软件安装指令、软件更新指令和镜像再构指令等,根据sudo指令文件中用户的用户ID,确定当前用户发出的sudo指令有效,即确定该用户已加入特权用户白名单中,进而响应特权操作指令,确保用户在容器内较高的自由度,以及对系统功能的完整调用。
可选的,在本发明实施例中,所述临时权限文件包括至少一个指定特权操作;在根据所述临时权限文件响应所述特权操作指令前,还包括:判断所述特权操作指令执行的目标特权操作是否为所述指定特权操作;若所述目标特权操作不为所述指定特权操作,则拒绝响应所述特权操作指令;所述根据所述临时权限文件响应所述特权操作指令,具体包括:若所述目标特权操作为所述指定特权操作,则根据所述临时权限文件响应所述特权操作指令。可以将指定的一个或多个软件的安装或更新功能开放给当前用户,也可以将指定的一个或多个镜像的重构功能开放给当前用户,即将上述指定的特权操作加入特权操作白名单,既确保用户在容器内一定的自由度,同时,又对用户可使用的系统功能进行了有效控制,避免用户使用特权操作白名单之外的系统功能,保证系统功能的安全性。
可选的,在本发明实施例中,在获取所述Docker命令的操作项信息后,还包括:若所述Docker命令的操作项信息为非创建容器,则根据所述用户的用户ID,判断所述用户是否具备操作对象的操作权限;其中,所述操作对象包括容器和/或镜像;若所述用户具备操作对象的操作权限,则通过Docker响应所述Docker命令;若所述用户不具备操作对象的操作权限,则拒绝响应所述Docker命令。如果Docker命令的操作项信息为非创建容器,例如,表1中的查询容器和获取镜像,则判断该容器或镜像的启动参数中的用户ID,是否与当前用户的用户ID相同,若相同,表明当前用户具备操作权限,若不同,表明当前用户不具备操作权限,进一步通过容器或镜像的启动参数中用户ID的检测,确保该容器或镜像仅能被创建者访问,避免用户数据的泄密风险。
本发明实施例提供的技术方案,在获取Docker命令的操作项信息,且确定上述命令为创建容器指令后,通过获取用户的主目录,对异常挂载目录进行过滤,避免了当前用户对其他用户主目录的调用,确保了系统用户的数据安全,另外,将当前用户的用户ID加入新创建的目标容器的启动参数中,使得该容器的登录身份为用户的用户ID,在确保容器不被其他用户访问的同时,也使得该用户在容器中执行的后续文件操作,均以用户ID权限登录而非Root权限登录,当容器损坏或删除时,用户对该容器内创建的文件同样具备可操作性。
实施例二
图2为本发明实施例二提供的一种Docker的操作方法的流程图,本实施例在上述技术方案的基础上进行具体化,该方法具体包括:
S201、获取用户发出的Docker命令的操作项信息;执行S202。
S202、判断操作项信息是否为创建容器;若是,执行S203,若否,执行S213。
S203、获取用户的用户ID;执行S204。
S204、根据用户ID,判断用户是否为管理员;若否,执行S205,若是,执行S213。
S205、获取用户的主目录;执行S206。
S206、获取Docker命令的参数项信息;执行S207。
S207、判断参数项信息中是否包括挂载目录;若是,执行S208,若否,执行S212。
S208、判断挂载目录是否为用户主目录;若是,执行S210,若否,执行S209。
S209、删除挂载目录;执行S210。
S210、创建临时身份文件,并挂载至目标容器中;执行S211。
S211、创建临时权限文件,并挂载至目标容器中;执行S212。
S212、将用户的用户ID加入目标容器的启动参数;S213。
S213、通过Docker响应该Docker命令。
本发明实施例提供的技术方案,在获取Docker命令的操作项信息,且确定上述命令为创建容器指令后,通过获取用户的主目录,对异常挂载目录进行过滤,避免了当前用户对其他用户主目录的调用,确保了系统用户的数据安全,另外,将当前用户的用户ID加入新创建的目标容器的启动参数中,使得该容器的登录身份为用户的用户ID,在确保容器不被其他用户访问的同时,也使得该用户在容器中执行的后续文件操作,均以用户ID权限登录而非Root权限登录,当容器损坏或删除时,用户对该容器内创建的文件同样具备可操作性。
实施例三
图3是本发明实施例三所提供的一种Docker的操作装置的结构框图,该装置具体包括:操作项信息获取模块310、主目录获取模块320、删除操作执行模块330和启动参数设置模块340;
操作项信息获取模块310,用于当获取到用户发出的Docker命令时,获取所述Docker命令的操作项信息;
主目录获取模块320,用于若所述操作项信息为创建容器,则获取所述用户的主目录,并判断所述Docker命令的参数项信息中,是否包括所述主目录之外的异常挂载目录;
删除操作执行模块330,用于若所述Docker命令的参数项信息中,包括所述主目录之外的异常挂载目录,则删除所述异常挂载目录;
启动参数设置模块340,用于将所述用户的用户ID加入目标容器的启动参数,通过Docker创建并启动所述目标容器。
本发明实施例提供的技术方案,在获取Docker命令的操作项信息,且确定上述命令为创建容器指令后,通过获取用户的主目录,对异常挂载目录进行过滤,避免了当前用户对其他用户主目录的调用,确保了系统用户的数据安全,另外,将当前用户的用户ID加入新创建的目标容器的启动参数中,使得该容器的登录身份为用户的用户ID,在确保容器不被其他用户访问的同时,也使得该用户在容器中执行的后续文件操作,均以用户ID权限登录而非Root权限登录,当容器损坏或删除时,用户对该容器内创建的文件同样具备可操作性。
可选的,在上述技术方案的基础上,Docker的操作装置,还包括:
临时身份文件获取模块,用于根据系统用户文件和所述用户的用户ID,创建临时身份文件,并将所述临时身份文件挂载至所述目标容器中;其中,所述系统用户文件包括系统用户配置文件、系统用户密码文件和系统用户组配置文件,所述临时身份文件包括临时用户配置文件、临时用户密码文件和临时用户组配置文件;
文件操作指令执行模块,用于若在所述目标容器中,获取到文件操作指令,则根据所述临时身份文件进行身份验证,以确定是否响应所述文件操作指令。
可选的,在上述技术方案的基础上,Docker的操作装置,还包括:
属主信息设置模块,用于根据所述临时身份文件设置文件属主信息。
可选的,在上述技术方案的基础上,Docker的操作装置,还包括:
临时权限文件获取模块,用于根据所述用户的用户ID,创建临时权限文件,并将所述临时权限文件挂载至所述目标容器中;其中,所述临时权限文件包括sudo指令文件;
特权操作指令执行模块,用于若在所述目标容器中,获取到特权操作指令,则根据所述临时权限文件响应所述特权操作指令。
可选的,在上述技术方案的基础上,所述临时权限文件包括至少一个指定特权操作。
可选的,在上述技术方案的基础上,Docker的操作装置,还包括:
指定特权操作判断模块,用于判断所述特权操作指令执行的目标特权操作是否为所述指定特权操作。
可选的,在上述技术方案的基础上,特权操作指令执行模块,具体用于若所述目标特权操作不为所述指定特权操作,则拒绝响应所述特权操作指令;若所述目标特权操作为所述指定特权操作,则根据所述临时权限文件响应所述特权操作指令。
可选的,在上述技术方案的基础上,Docker的操作装置,还包括:
操作权限判断模块,用于若所述Docker命令的操作项信息为非创建容器,则根据所述用户的用户ID,判断所述用户是否具备操作对象的操作权限;其中,所述操作对象包括容器和/或镜像;
第一响应执行模块,用于若所述用户具备操作对象的操作权限,则通过Docker响应所述Docker命令;
响应拒绝模块,用于若所述用户不具备操作对象的操作权限,则拒绝响应所述Docker命令。
可选的,在上述技术方案的基础上,Docker的操作装置,还包括:
用户ID判断模块,用于根据所述用户的用户ID,判断所述用户是否为管理员用户;
第二响应执行模块,用于若所述用户为管理员用户,则通过Docker响应所述Docker命令。
可选的,在上述技术方案的基础上,主目录获取模块320,具体用于若所述用户为非管理员用户,则获取所述用户的主目录。
上述装置可执行本发明任意实施例所提供的Docker的操作方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例提供的方法。
实施例四
图4为本发明实施例五提供的一种服务器的结构示意图。图4示出了适于用来实现本发明实施方式的示例性服务器12的框图。图4显示的服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,服务器12以通用计算设备的形式表现。服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,存储器28,连接不同系统组件(包括存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该服务器12交互的设备通信,和/或与使得该服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的Docker的操作方法。也即:当获取到用户发出的Docker命令时,获取所述Docker命令的操作项信息;若所述操作项信息为创建容器,则获取所述用户的主目录,并判断所述Docker命令的参数项信息中,是否包括所述主目录之外的异常挂载目录;若所述Docker命令的参数项信息中,包括所述主目录之外的异常挂载目录,则删除所述异常挂载目录;将所述用户的用户ID加入目标容器的启动参数,通过Docker创建并启动所述目标容器。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的Docker的操作方法;该方法包括:
当获取到用户发出的Docker命令时,获取所述Docker命令的操作项信息;
若所述操作项信息为创建容器,则获取所述用户的主目录,并判断所述Docker命令的参数项信息中,是否包括所述主目录之外的异常挂载目录;
若所述Docker命令的参数项信息中,包括所述主目录之外的异常挂载目录,则删除所述异常挂载目录;
将所述用户的用户ID加入目标容器的启动参数,通过Docker创建并启动所述目标容器。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种Docker的操作方法,其特征在于,包括:
当获取到用户发出的Docker命令时,获取所述Docker命令的操作项信息;其中,所述用户为Docker组中的用户;
若所述操作项信息为创建容器,则获取所述用户的主目录,并判断所述Docker命令的参数项信息中,是否包括所述主目录之外的异常挂载目录;其中,所述异常挂载目录是指除所述用户的主目录之外的其它目录;
若所述Docker命令的参数项信息中,包括所述主目录之外的异常挂载目录,则删除所述异常挂载目录;
将所述用户的用户ID加入目标容器的启动参数,通过Docker创建并启动所述目标容器。
2.根据权利要求1所述的方法,其特征在于,在将所述用户的用户ID加入目标容器的启动参数前,还包括:
根据系统用户文件和所述用户的用户ID,创建临时身份文件,并将所述临时身份文件挂载至所述目标容器中;其中,所述系统用户文件包括系统用户配置文件、系统用户密码文件和系统用户组配置文件,所述临时身份文件包括临时用户配置文件、临时用户密码文件和临时用户组配置文件;
在通过Docker创建并启动所述目标容器后,包括:
若在所述目标容器中,获取到文件操作指令,则根据所述临时身份文件进行身份验证,以确定是否响应所述文件操作指令。
3.根据权利要求2所述的方法,其特征在于,若所述文件操作指令为文件创建指令,在确定是否响应所述文件操作指令后,还包括:
根据所述临时身份文件设置文件属主信息。
4.根据权利要求1所述的方法,其特征在于,在将所述用户的用户ID加入目标容器的启动参数前,还包括:
根据所述用户的用户ID,创建临时权限文件,并将所述临时权限文件挂载至所述目标容器中;其中,所述临时权限文件包括sudo指令文件;
在通过Docker创建并启动所述目标容器后,包括:
若在所述目标容器中,获取到特权操作指令,则根据所述临时权限文件响应所述特权操作指令。
5.根据权利要求4所述的方法,其特征在于,所述临时权限文件包括至少一个指定特权操作;
在根据所述临时权限文件响应所述特权操作指令前,还包括:
判断所述特权操作指令执行的目标特权操作是否为所述指定特权操作;
若所述目标特权操作不为所述指定特权操作,则拒绝响应所述特权操作指令;
所述根据所述临时权限文件响应所述特权操作指令,具体包括:
若所述目标特权操作为所述指定特权操作,则根据所述临时权限文件响应所述特权操作指令。
6.根据权利要求1所述的方法,其特征在于,在获取所述Docker命令的操作项信息后,还包括:
若所述Docker命令的操作项信息为非创建容器,则根据所述用户的用户ID,判断所述用户是否具备操作对象的操作权限;其中,所述操作对象包括容器和/或镜像;
若所述用户具备操作对象的操作权限,则通过Docker响应所述Docker命令;
若所述用户不具备操作对象的操作权限,则拒绝响应所述Docker命令。
7.根据权利要求1所述的方法,其特征在于,在获取所述用户的主目录前,还包括:
根据所述用户的用户ID,判断所述用户是否为管理员用户;
若所述用户为管理员用户,则通过Docker响应所述Docker命令;
所述获取所述用户的主目录,包括:
若所述用户为非管理员用户,则获取所述用户的主目录。
8.一种Docker的操作装置,其特征在于,包括:
操作项信息获取模块,用于当获取到用户发出的Docker命令时,获取所述Docker命令的操作项信息;其中,所述用户为Docker组中的用户;
主目录获取模块,用于若所述操作项信息为创建容器,则获取所述用户的主目录,并判断所述Docker命令的参数项信息中,是否包括所述主目录之外的异常挂载目录;其中,所述异常挂载目录是指除所述用户的主目录之外的其它目录;
删除操作执行模块,用于若所述Docker命令的参数项信息中,包括所述主目录之外的异常挂载目录,则删除所述异常挂载目录;
启动参数设置模块,用于将所述用户的用户ID加入目标容器的启动参数,通过Docker创建并启动所述目标容器。
9.一种服务器,其特征在于,所述服务器包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的Docker的操作方法。
10.一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7中任一所述的Docker的操作方法。
CN202110812802.2A 2021-07-19 2021-07-19 一种Docker的操作方法、装置、服务器和存储介质 Active CN113467895B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110812802.2A CN113467895B (zh) 2021-07-19 2021-07-19 一种Docker的操作方法、装置、服务器和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110812802.2A CN113467895B (zh) 2021-07-19 2021-07-19 一种Docker的操作方法、装置、服务器和存储介质

Publications (2)

Publication Number Publication Date
CN113467895A CN113467895A (zh) 2021-10-01
CN113467895B true CN113467895B (zh) 2024-04-09

Family

ID=77881003

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110812802.2A Active CN113467895B (zh) 2021-07-19 2021-07-19 一种Docker的操作方法、装置、服务器和存储介质

Country Status (1)

Country Link
CN (1) CN113467895B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114780292A (zh) * 2022-04-19 2022-07-22 北京凝思软件股份有限公司 基于Linux的用户标识唯一性实现方法、装置、设备及介质
CN117667315A (zh) * 2024-02-01 2024-03-08 麒麟软件有限公司 基于容器的多版本开发环境构建方法、装置及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112395039A (zh) * 2019-08-16 2021-02-23 北京神州泰岳软件股份有限公司 一种Kubernetes集群的管理方法和装置
CN112965761A (zh) * 2021-03-10 2021-06-15 中国民航信息网络股份有限公司 一种数据处理方法、系统、电子设备及存储介质
CN113127141A (zh) * 2019-12-31 2021-07-16 重庆小雨点小额贷款有限公司 一种容器系统管理方法、装置、终端设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112464B2 (en) * 2008-04-28 2012-02-07 Microsoft Corporation On-demand access to container file directories

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112395039A (zh) * 2019-08-16 2021-02-23 北京神州泰岳软件股份有限公司 一种Kubernetes集群的管理方法和装置
CN113127141A (zh) * 2019-12-31 2021-07-16 重庆小雨点小额贷款有限公司 一种容器系统管理方法、装置、终端设备及存储介质
CN112965761A (zh) * 2021-03-10 2021-06-15 中国民航信息网络股份有限公司 一种数据处理方法、系统、电子设备及存储介质

Also Published As

Publication number Publication date
CN113467895A (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
US9449170B2 (en) Inhibiting denial-of-service attacks using group controls
US8448165B1 (en) System and method for logging operations of virtual machines
US8578374B2 (en) System and method for managing virtual machines
US8640187B2 (en) Systems and methods for providing an fully functional isolated execution environment for accessing content
JP5543156B2 (ja) 仮想化されたブロック入出力切り替えによるアプリケーション管理のエージェントレス・エンフォースメント
US8856473B2 (en) Computer system protection based on virtualization
CN111695156A (zh) 业务平台的访问方法、装置、设备及存储介质
CN113467895B (zh) 一种Docker的操作方法、装置、服务器和存储介质
US20140259169A1 (en) Virtual machines
CN104662517A (zh) 安全漏洞检测技术
US20130097392A1 (en) Protecting memory of a virtual guest
WO2018090290A1 (zh) 镜像文件转换方法及装置
US9177129B2 (en) Devices, systems, and methods for monitoring and asserting trust level using persistent trust log
US20200134192A1 (en) Security Profiling of System Firmware and Applications from an OOB Appliance at a Differentiated Trust Boundary
CN109379347B (zh) 一种安全防护方法及设备
US20170139622A1 (en) Securing protected information based on software designation
US10225284B1 (en) Techniques of obfuscation for enterprise data center services
WO2019037521A1 (zh) 安全检测的方法、装置、系统以及服务器
US9342550B1 (en) Systems and methods for preventing data loss via temporary-file generating applications
CN115374481A (zh) 数据脱敏处理的方法、装置、存储介质及电子设备
CN111078367A (zh) 一种请求处理方法、装置、电子设备和存储介质
US20080127352A1 (en) System and method for protecting a registry of a computer
CN111428240A (zh) 一种用于检测软件的内存违规访问的方法及装置
US10831883B1 (en) Preventing application installation using system-level messages
CN116028917A (zh) 权限检测方法及装置、存储介质及电子设备

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