CN112667998B - 一种容器镜像仓库的安全访问方法及系统 - Google Patents

一种容器镜像仓库的安全访问方法及系统 Download PDF

Info

Publication number
CN112667998B
CN112667998B CN202011442927.2A CN202011442927A CN112667998B CN 112667998 B CN112667998 B CN 112667998B CN 202011442927 A CN202011442927 A CN 202011442927A CN 112667998 B CN112667998 B CN 112667998B
Authority
CN
China
Prior art keywords
user
parameter
mirror image
project
warehouse
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
CN202011442927.2A
Other languages
English (en)
Other versions
CN112667998A (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.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
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 Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN202011442927.2A priority Critical patent/CN112667998B/zh
Publication of CN112667998A publication Critical patent/CN112667998A/zh
Application granted granted Critical
Publication of CN112667998B publication Critical patent/CN112667998B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种容器镜像仓库的安全访问方法及系统,包括结合一用户当前的defaultDomain参数与officialRepoName参数,解析该用户发起的pull/push命令后的参数,查找目标镜像仓库,确定镜像名和标签;目标镜像仓库依据该用户的信息,确定用户的pull/push权限,进行镜像验签或签名。本发明取消匿名用户,任何docker用户需先登录目标仓库才可进行镜像访问,在系统中设置系统管理员、安全管理员和审计管理员三种管理员,满足了更高的安全需求。

Description

一种容器镜像仓库的安全访问方法及系统
技术领域
本发明涉及私有镜像仓库技术,具体来说是一种容器镜像仓库的安全访问方法及系统。
背景技术
Docker容器技术盛行,镜像安全问题引起广泛关注。在未指定镜像仓库的情况下,默认镜像仓库为官方提供的公有仓库Docker Hub,但是使用公有仓库时,上传的镜像任何人都可以访问,因此从安全方面考虑,用户需要使用私有镜像仓库。Docker官方提供私有仓库接口registry,用户可以使用这个接口搭建自己的私有镜像仓库或者直接使用开源方案,如Harbor。私有镜像仓库的实现,一般是对registry进行包装,可以设计友好的管理界面,同时在安全方面增加用户管理功能,支持镜像签名机制等,如Harbor架构支持镜像签名工具Notary,实现镜像入库签名,出库验签,保证镜像来源可溯以及内容完整。
分析私有镜像仓库的用户管理机制,其设计原理多数为基于角色的访问控制,为满足企业中不同角色对镜像操作权限的不同要求,如图1所示,提供了两种管理概念:用户和成员。用户分为三类:系统管理员、普通用户和匿名用户。系统管理员具有管理其它用户以及所有项目的权利。匿名用户为没有登录的用户,匿名用户对private的项目不具访问权限,对public的项目具有只读权限。成员是指项目的成员,项目成员可以分为三类:管理员、开发者及访客。项目管理员拥有最大的项目权限,对开发者和访客完成权限配置。但是,这种管理模式赋予系统管理员对用户管理的绝对权限,其可创建用户,删除用户以及改变用户角色。当系统管理员本身不可信时,镜像仓库内其他用户也将处于不可信状态,从而导致该用户对应的项目资源不可信,即镜像资源不可信。同时,由于匿名用户的存在,现有Docker系统无需登录即可访问public的项目,在企业内部使用的场景下,为满足更高的安全要求,匿名用户的存在增加了系统的安全隐患,因此应对所有用户进行信息认证。
发明内容
为了解决以上问题,本发明提出了一种容器镜像仓库的安全访问方法及系统,通过取消匿名用户、设置基础镜像资源池及对原有系统管理员权限进行分割,满足了更高的安全需求。
本发明的技术方案包括:
一种容器镜像仓库的安全访问方法,其步骤包括:
1)结合一用户当前的defaultDomain参数与officialRepoName参数,解析该用户发起的pull/push命令后的参数,查找目标镜像仓库,确定镜像名和标签,其中所述defaultDomain参数与officialRepoName参数依据所述用户是否登录而设定;
2)目标镜像仓库依据该用户的信息,确定用户的pull/push权限,进行镜像验签或签名。
进一步地,通过以下策略设置所述defaultDomain参数:
1)将未登录用户的defaultDomain参数设置为unknown;
2)将已登录用户的defaultDomain参数设置为已登录的镜像仓库地址;
3)已登录用户退出登录后,将defaultDomain参数恢复为unknown。
进一步地,通过以下策略设置officialRepoName参数:
1)将未登录用户的officialRepoName参数设置为unknown;
2)将已登录用户的officialRepoName参数设置为一可信的基础镜像资源池;
3)已登录用户退出登录后,将officialRepoName参数恢复为unknown。
进一步地,通过以下策略结合该用户当前的defaultDomain参数与officialRepoName参数:
1)当defaultDomain参数与officialRepoName参数为unknown时,判定所述用户未登录,停止解析用户发起的pull/push命令后的参数;
2)当defaultDomain参数为已登录的镜像仓库地址,且officialRepoName参数为基础镜像资源池时,判定所述用户已登录,解析用户发起的pull/push命令后的参数。
进一步地,通过以下步骤确定用户的pull/push权限:
1)维系一个描述用户信息的pool_user表、一个描述成员角色对项目中镜像的操作权限的role表与一个每个用户在不同项目中角色的project_member表;
2)根据用户的信息,在pool_user表中获取用户的id;
3)根据用户的id,在project_member表中查看成员角色;
4)根据成员角色,在role表中确定用户的pull/push权限。
进一步地,所述用户通过以下步骤进行注册或变更成员角色:
1)系统管理员依据用户提交的信息,填写注册申请或变更角色申请,其中所述注册申请或变更角色申请中包括一表示角色状态的状态位;
2)安全管理员通过所述状态位,审批所述注册申请或变更角色申请。
进一步地,所述系统管理员的权限还包括:申请删除角色、新建项目、删除任何项目、更改任何项目公私、创建复制目标和创建项目复制策略。
进一步地,将注册或变更角色的行为日志发送至审计管理员,以监督安全管理员与系统管理员在注册或变更角色过程中的行为。
进一步地,所述成员角色包括:各项目的项目管理员与开发者。
进一步地,所述项目管理员的权限包括:添加本项目的开发者、删除本项目的开发者、上传本项目镜像、下载本项目镜像、删除本项目镜像和查看本项目日志。
进一步地,所述开发者的权限包括:上传本项目镜像、下载本项目镜像、删除本项目镜像和查看本项目日志。
一种容器镜像仓库的安全访问系统,包括:
目标镜像仓库查找模块,用以结合一用户当前的defaultDomain参数与officialRepoName参数,解析该用户发起的pull/push命令后的参数,查找目标镜像仓库,确定镜像名和标签,其中所述defaultDomain参数与officialRepoName参数依据所述用户是否登录而设定;
镜像验签或签名模块,用以目标镜像仓库依据该用户的信息,确定用户的pull/push的权限,进行镜像验签或签名。
与现有技术相比,本发明具有以下优势:
1)本发明提供了镜像源监测模块,取消匿名用户,任何docker用户需先登录目标仓库才可进行镜像访问,并将Docker系统的默认镜像源自动设置为已登录私有仓库;
2)为docker系统设置了基础镜像资源池所有未指定项目的情况下,均默认从该基础资源池获取镜像;
3)基于“三员分立”权限控制原理,更改原用户管理机制,在系统中设置系统管理员、安全管理员和审计管理员三种管理员,将原有系统管理员权限进行分割,避免了系统管理员权限过大造成的威胁。
附图说明
图1是现有私有镜像仓库的用户管理权限划分示意图。
图2是本发明的系统架构图。
图3是本发明的用户管理权限划分示意图。
图4是本发明的系统流程图。
图5是审计管理员的日志管理示意图。
具体实施方式
为了使本发明的目的、技术方案更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。
如图2所示,本发明的容器镜像仓库的安全访问系统,包括:
S101:镜像源监测模块,取消匿名用户,确保系统内用户信息均可寻,同时根据已登录仓库确定默认镜像源;
S102:基础镜像资源池模块,该资源池由系统管理员管理,用于结合现有已支持的镜像签名技术,为企业内部用户提供可信基础镜像;
S103:细粒度用户管理模块,分割现有私有容器镜像仓库下系统管理员权限,如图3所示,三者相互制约共同完成相应操作。其中每种管理员的职责如表1:
表1
综上,本发明提出的容器镜像仓库的安全访问方法的流程包括:
S201:启动Docker服务,提示用户请先登录镜像仓库;
S202:用户登录镜像仓库,Docker设置默认镜像源;
S203:若用户发起docker pull/push操作,daemon检测是否已登录仓库,若已登录,执行S204,否则,pull操作失败,且提示用户先登录;
S204:解析用户pull/push命令后的参数,确定对应project,发送仓库对应的pull/push请求,其中pull是将镜像从仓库拉到本地,push是将镜像传到镜像仓库请求,执行S205;
S205:镜像仓库进行用户认证,确认用户权限,若验证成功,执行S206,否则执行S207
S206:镜像验签/镜像签名;
S207:获取镜像失败;
S208:创建新用户,系统管理员注册用户信息;
S209:安全管理员审批;
S210:改变用户角色,系统管理员进行申请;
S211:安全管理员审批;
S212:审计管理员监控以上行为。
下面一实施例对本发明进行详细阐述:
部署好本系统,用户依次执行docker pull/push、创建新用户,改变用户角色操作,其中系统管理员名称为sysadmin,安全管理员名称为secadmin,审计管理员为audadmin,初始密码均为12345。如图4所示,本发明的实现包含以下步骤:
S301:启动docker服务,提示“please login your registry first”,执行S302;
S302:用户使用正确的用户名和密码执行docker login test.cn,执行S303;
S303:镜像仓库进行用户认证,成功则执行S305,否则执行S304;
S304:登录失败,提示用户重新登录;
S305:登录成功,docker检测登录仓库,设置defaultDomain为已登录的镜像仓库地址,设置officialRepoName为basicpool;
其中,basicpool为一个可信的基础镜像资源池,该资源池为镜像仓库内的一个项目,该项目的管理员为用户ID为1的系统管理员,开发者由项目管理员指定,项目类型设置为公有,该仓库内的任何用户均可访问;
S306:若用户执行docker pull/push命令,镜像仓库检测用户是否已经登录,以防止用户未登录而直接执行docker pull/push命令。若已经登录则执行S307,否则执行S302;
该步骤的实现,本发明执行的检测方法为:检测defaultDomain和officialRepoName是否已经被修改,未登录状态下为默认的unknown,登录之后会根据S305进行修改,用户执行logout(退出登录)之后,defaultDomain和officialRepoName会恢复为unknown。
S307:docker解析pull/push后面传入的参数,按照原有的解析规则找到目标镜像仓库,并确定镜像名和标签;
S308:镜像仓库检测用户信息,确定该用户是否具有该pull或push的权限,若不具有该权限,则执行S309,否则执行S310;
该步骤的实现,镜像仓库借助数据库,存储用户和项目信息,包括该用户是否为该项目的成员,其成员角色是否具有访问/读写的权力。在数据库中维系着pool_user表描述用户的信息,表role用来描述成员角色对项目中镜像的操作权限,project_member表描述了每个用户在不同项目中的角色,即根据S302中的用户名,在pool_user表中获得用户id,根据用户id去project_member表中查看成员角色,最后根据表role获取该用户的操作权限;
S309:访问失败,并提示用户无执行权限;
S310:镜像验签/签名,完成操作;
S311:如果要注册新用户,只有系统管理员拥有申请创建新用户的权力;
该步骤的实现,镜像仓库拥有友好的管理界面,本发明为系统管理员加载用户管理模块中,其中包含申请创建用户的按钮,可通过该按钮填写注册信息,用户的信息中有一个status状态位,不同状态的用户值不同,点击提交将触发系统赋予该用户status位对应的值。
S312:安全管理员决定是否同意该申请;
该步骤的实现,本发明为安全管理员加载用户管理模块,其中审批创建的按钮,该按钮有两个状态:同意和拒绝。当安全管理员点击拒绝按钮时,会触发删除数据库中的该用户信息;
例如,Status值可为string类型,共有三种情况:(1)值为空;(2)值为“0”;(3)值为“1”:对于已经存在且角色固定的用户,该状态位为空;对于系统管理员创建的用户,提交注册信息则Status值置“0”。当安全管理员审批通过,该状态位变为空,若安全管理员审批不通过,删除该用户信息;若系统管理员给用户变换角色,则Status值置“1”,安全管理员审批通过之后,该状态位为空,角色状态改变;若审批不通过,则Status位为空,角色状态不变。
S313:如果要改变某一用户的角色,只有系统管理员具有申请改变该用户角色的权力;
该步骤的实现,本发明为系统管理员加载用户管理模块中,其中包含申请改变用户的按钮,系统管理员点击提交按钮时,status位改变。
S314:安全管理员决定是否同意该申请;
该步骤的实现,类比S312;
S315:审计管理员监督安全管理员和系统管理员S311—S314的行为;
该步骤的实现,本发明将S311—S314的行为日志发送给审计管理员,日志信息如图5所示。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。

Claims (7)

1.一种容器镜像仓库的安全访问方法,其步骤包括:
1)结合一用户当前的defaultDomain参数与officialRepoName参数,解析该用户发起的pull/push命令后的参数,查找目标镜像仓库,确定镜像名和标签,其中,
所述defaultDomain参数依据所述用户是否登录而设定,包括:
将未登录用户的defaultDomain参数设置为unknown;
将已登录用户的defaultDomain参数设置为已登录的镜像仓库地址;
已登录用户退出登录后,将defaultDomain参数恢复为unknown;
所述officialRepoName参数依据所述用户是否登录而设定,包括:
将未登录用户的officialRepoName参数设置为unknown;
将已登录用户的officialRepoName参数设置为一可信的基础镜像资源池;
已登录用户退出登录后,将officialRepoName参数恢复为unknown;
所述结合一用户当前的defaultDomain参数与officialRepoName参数,解析该用户发起的pull/push命令后的参数,包括:
当defaultDomain参数与officialRepoName参数为unknown时,判定所述用户未登录,停止解析用户发起的pull/push命令后的参数;
当defaultDomain参数为已登录的镜像仓库地址,且officialRepoName参数为基础镜像资源池时,判定所述用户已登录,解析用户发起的pull/push命令后的参数;
2)目标镜像仓库依据该用户的信息,确定用户的pull/push权限,进行镜像验签或签名。
2.如权利要求1所述的方法,其特征在于,通过以下步骤确定用户的pull/push权限:
1)维系一个描述用户信息的pool_user表、一个描述成员角色对项目中镜像的操作权限的role表与一个每个用户在不同项目中角色的project_member表;
2)根据用户的信息,在pool_user表中获取用户的id;
3)根据用户的id,在project_member表中查看成员角色;
4)根据成员角色,在role表中确定用户的pull/push权限。
3.如权利要求1所述的方法,其特征在于,所述用户通过以下步骤进行注册或变更成员角色:
1)系统管理员依据用户提交的信息,填写注册申请或变更角色申请,其中所述注册申请或变更角色申请中包括一表示角色状态的状态位;
2)安全管理员通过所述状态位,审批所述注册申请或变更角色申请。
4.如权利要求3所述的方法,其特征在于,所述系统管理员的权限还包括:申请删除角色、新建项目、删除任何项目、更改任何项目公私、创建复制目标和创建项目复制策略。
5.如权利要求3所述的方法,其特征在于,将注册或变更角色的行为日志发送至审计管理员,以监督安全管理员与系统管理员在注册或变更角色过程中的行为。
6.如权利要求3所述的方法,其特征在于,所述成员角色包括:各项目的项目管理员与开发者;所述项目管理员的权限包括:添加本项目的开发者、删除本项目的开发者、上传本项目镜像、下载本项目镜像、删除本项目镜像和查看本项目日志;所述开发者的权限包括:上传本项目镜像、下载本项目镜像、删除本项目镜像和查看本项目日志。
7.一种容器镜像仓库的安全访问系统,包括:
目标镜像仓库查找模块,用以结合一用户当前的defaultDomain参数与officialRepoName参数,解析该用户发起的pull/push命令后的参数,查找目标镜像仓库,确定镜像名和标签,其中,
所述defaultDomain参数依据所述用户是否登录而设定,包括:
将未登录用户的defaultDomain参数设置为unknown;
将已登录用户的defaultDomain参数设置为已登录的镜像仓库地址;
已登录用户退出登录后,将defaultDomain参数恢复为unknown;
所述officialRepoName参数依据所述用户是否登录而设定,包括:
将未登录用户的officialRepoName参数设置为unknown;
将已登录用户的officialRepoName参数设置为一可信的基础镜像资源池;
已登录用户退出登录后,将officialRepoName参数恢复为unknown;
所述结合一用户当前的defaultDomain参数与officialRepoName参数,解析该用户发起的pull/push命令后的参数,包括:
当defaultDomain参数与officialRepoName参数为unknown时,判定所述用户未登录,停止解析用户发起的pull/push命令后的参数;
当defaultDomain参数为已登录的镜像仓库地址,且officialRepoName参数为基础镜像资源池时,判定所述用户已登录,解析用户发起的pull/push命令后的参数;
镜像验签或签名模块,用以目标镜像仓库依据该用户的信息,确定用户的pull/push的权限,进行镜像验签或签名。
CN202011442927.2A 2020-12-08 2020-12-08 一种容器镜像仓库的安全访问方法及系统 Active CN112667998B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011442927.2A CN112667998B (zh) 2020-12-08 2020-12-08 一种容器镜像仓库的安全访问方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011442927.2A CN112667998B (zh) 2020-12-08 2020-12-08 一种容器镜像仓库的安全访问方法及系统

Publications (2)

Publication Number Publication Date
CN112667998A CN112667998A (zh) 2021-04-16
CN112667998B true CN112667998B (zh) 2024-03-01

Family

ID=75402013

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011442927.2A Active CN112667998B (zh) 2020-12-08 2020-12-08 一种容器镜像仓库的安全访问方法及系统

Country Status (1)

Country Link
CN (1) CN112667998B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113238831A (zh) * 2021-04-30 2021-08-10 中核武汉核电运行技术股份有限公司 一种基于容器技术的核电生产服务加载方法及装置
CN115129429B (zh) * 2022-09-01 2023-06-13 南京翼辉爱智物联技术有限公司 容器应用管理方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331045A (zh) * 2015-07-02 2017-01-11 北京京东尚科信息技术有限公司 实现Docker镜像服务的方法和系统
CN107239688A (zh) * 2017-06-30 2017-10-10 平安科技(深圳)有限公司 Docker镜像仓库的权限认证方法和系统
CN108011862A (zh) * 2016-10-31 2018-05-08 中兴通讯股份有限公司 镜像仓库授权、访问、管理方法及服务器和客户端
CN108241797A (zh) * 2018-01-10 2018-07-03 郑州云海信息技术有限公司 镜像仓库用户权限管理方法、装置、系统及可读存储介质
CN108958927A (zh) * 2018-05-31 2018-12-07 康键信息技术(深圳)有限公司 容器应用的部署方法、装置、计算机设备和存储介质
WO2019127973A1 (zh) * 2017-12-29 2019-07-04 平安科技(深圳)有限公司 镜像仓库的权限认证方法、系统、设备及存储介质
CN110022294A (zh) * 2019-02-27 2019-07-16 广州虎牙信息科技有限公司 一种代理服务器、Docker系统及其权限管理方法、存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331045A (zh) * 2015-07-02 2017-01-11 北京京东尚科信息技术有限公司 实现Docker镜像服务的方法和系统
CN108011862A (zh) * 2016-10-31 2018-05-08 中兴通讯股份有限公司 镜像仓库授权、访问、管理方法及服务器和客户端
CN107239688A (zh) * 2017-06-30 2017-10-10 平安科技(深圳)有限公司 Docker镜像仓库的权限认证方法和系统
WO2019127973A1 (zh) * 2017-12-29 2019-07-04 平安科技(深圳)有限公司 镜像仓库的权限认证方法、系统、设备及存储介质
CN108241797A (zh) * 2018-01-10 2018-07-03 郑州云海信息技术有限公司 镜像仓库用户权限管理方法、装置、系统及可读存储介质
CN108958927A (zh) * 2018-05-31 2018-12-07 康键信息技术(深圳)有限公司 容器应用的部署方法、装置、计算机设备和存储介质
CN110022294A (zh) * 2019-02-27 2019-07-16 广州虎牙信息科技有限公司 一种代理服务器、Docker系统及其权限管理方法、存储介质

Also Published As

Publication number Publication date
CN112667998A (zh) 2021-04-16

Similar Documents

Publication Publication Date Title
US11675918B2 (en) Policy-based user device security checks
US10511632B2 (en) Incremental security policy development for an enterprise network
US7516477B2 (en) Method and system for ensuring that computer programs are trustworthy
US11783062B2 (en) Risk-based access to computing environment secrets
CN110647754A (zh) 用于数据机密性和完整性的文件系统视图分离
US8646044B2 (en) Mandatory integrity control
US9967284B2 (en) Processing device and method of operation thereof
GB2551735A (en) Cloud storage scanner
CN115113970A (zh) 一种基于容器引擎的数据处理方法以及相关设备
CN112667998B (zh) 一种容器镜像仓库的安全访问方法及系统
US20150358357A1 (en) Processing device and method of operation thereof
JP2006107505A (ja) アクセス認可のapi
EP3779747B1 (en) Methods and systems to identify a compromised device through active testing
Zhang et al. Hybrid isolation model for device application sandboxing deployment in Zero Trust architecture
Solomon Security Strategies in Windows Platforms and Applications
US11526617B2 (en) Information security system for identifying security threats in deployed software package
US11550925B2 (en) Information security system for identifying potential security threats in software package deployment
US11777938B2 (en) Gatekeeper resource to protect cloud resources against rogue insider attacks
US20220083672A1 (en) System, Method, and Apparatus for Enhanced Whitelisting
Haber et al. Mitigation Strategies
Panagiotis Attack methods and defenses on Kubernetes
Kern et al. Using RBAC to enforce the principle of least privilege in industrial remote maintenance sessions
Dimou Automatic security hardening of Docker containers using Mandatory Access Control, specialized in defending isolation
CN117648100B (zh) 应用部署方法、装置、设备和存储介质
Ackley Zero trust networking in a cloud environment

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