Pod安全性标准
Pod安全性标准定义了三种不同的策略(Policy),以广泛覆盖安全应用场景。这些策略是渐进式的(Cumulative),安全级别从高度宽松至高度受限。本指南概述了每个策略的要求。
描述 | |
---|---|
Privileged | 不受限制的策略,提供最大可能范围的权限许可。此策略允许已知的特权提升。 |
限制性最弱的策略,禁止已知的策略提升。允许使用默认的(规定最少)Pod 配置。 | |
Restricted | 限制性非常强的策略,遵循当前的保护 Pod 的最佳实践。 |
Profile细节
Privileged
Privileged策略是有目的地开放且完全无限制的策略。此类策略通常针对由特权较高、受信任的用户所管理的系统级或基础设施级负载。
Privileged策略定义中限制较少。对于默认允许(Allow-by-default)实施机制(例如gatekeeper),Privileged框架可能意味着不应用任何约束而不是实施某策略实例。与此不同,对于默认拒绝(Deny-by-default)实施机制(如Pod安全策略)而言,Privileged策略应该默认允许所有控制(即,禁止所有限制)。
Baseline策略的目标是便于常见的容器化应用采用,同时禁止已知的特权提升。此策略针对的是应用运维人员和非关键性应用的开发人员。下面列举的控制应该被实施(禁止):
控制(Control) | 策略(Policy) |
HostProcess |
Windows Pod 提供了运行HostProcess 容器的能力, 这使得对 Windows 节点的特权访问成为可能。 基线策略中对宿主的特权访问是被禁止的。 HostProcess Pod 是 Kubernetes版本的特性。 限制的字段 允许的值 |
宿主名字空间 |
必须禁止共享宿主名字空间。 限制的字段 允许的值 |
特权容器 |
特权 Pod 关闭了大多数安全性机制,必须被禁止。 限制的字段 允许的值 |
权能 |
必须禁止添加除下列字段之外的权能。 限制的字段 允许的值 |
HostPath 卷 |
必须禁止 HostPath 卷。 限制的字段 允许的值 |
宿主端口 |
应禁止使用宿主端口,或者至少限定为已知列表。 限制的字段 允许的值 |
在受支持的主机上,默认使用
限制的字段 允许的值 |
|
设置 SELinux 类型的操作是被限制的,设置自定义的 SELinux 用户或角色选项是被禁止的。 限制的字段 允许的值 限制的字段 允许的值 |
|
挂载类型 |
要求使用默认的掩码以减小攻击面。 限制的字段 允许的值 |
Seccomp Profile 禁止被显式设置为
限制的字段 允许的值 |
|
Sysctls 可以禁用安全机制或影响宿主上所有容器,因此除了若干“安全”的子集之外,应该被禁止。 如果某 sysctl 是受容器或 Pod 的名字空间限制,且与节点上其他 Pod 或进程相隔离,可认为是安全的。 限制的字段 允许的值 |
Restricted
Restricted策略旨在实施当前保护Pod的最佳实践,尽管这样作可能会牺牲一些兼容性。该类策略主要针对运维人员和安全性很重要的应用的开发人员,以及不太被信任的用户。下面列举的控制需要被实施(禁止):
控制(Control) | 策略(Policy) |
基线策略的所有要求。 | |
卷类型 |
除了限制 HostPath 卷之外,此类策略还限制可以通过 PersistentVolumes 定义的非核心卷类型。 限制的字段 允许的值
|
特权提升(v1.8+) |
禁止(通过 SetUID 或 SetGID 文件模式)获得特权提升。 限制的字段 允许的值 |
以非 root 账号运行 |
必须要求容器以非 root 用户运行。 限制的字段 允许的值
如果 Pod 级别
|
非 root 用户(v1.23+) |
Containers 不可以将runAsUser设置为 0 限制的字段 允许的字段 |
Seccomp (v1.19+) |
Seccomp Profile 必须被显式设置成一个允许的值。禁止使用
限制的字段 允许的值
如果 Pod 级别的
|
权能(v1.22+) |
容器组必须弃用权能,并且只允许添加
限制的字段 允许的值 限制的字段 允许的值 |
策略实例化
将策略定义从策略实例中解耦出来有助于形成跨集群的策略理解和语言陈述,以免绑定到特定的下层实施机制。
随着相关机制的成熟,这些机制会按策略分别定义在下面。特定策略的实施方法不在这里定义。
Pod安全性准入控制器
PodSecurityPolicy(已弃用)
常见问题
为什么不存在介于Privileged和Baseline之间的策略类型
这里定义的三种策略框架有一个明晰的线性递进关系,从最安全(Restricted)到最不安全,并且覆盖了很大范围的工作负载。特权要求超出Baseline策略者通常是特定于应用的需求,所以我们没有在这个范围内提供标准框架。这并不意味着在这样的情形下仍然只能使用Privileged框架,只是说处于这个范围的策略需要因地制宜地定义。
SIGAuth可能会在将来考虑这个范围的框架,前提是有对其他框架的需求。
安全策略与安全上下文的区别是什么?
安全上下文在运行时配置Pod和容器。安全上下文是在Pod清单中作为Pod和容器规约的一部分来定义的,所代表的是传递给容器运行时的参数。
安全策略则是控制面用来对安全上下文以及安全性上下文之外的参数实施某种设置的机制。在2020年7月,Pod安全性策略已被废弃,取而代之的是内置的Pod安全性准入控制器。
Kubernetes生态系统中还在开发一些其他的替代方案,例如
我应该为我的WindowsPod实施哪种框架?
Kubernetes中的Windows负载与标准的基于Linux的负载相比有一些局限性和区别。尤其是PodSecurityContext字段对Windows不起作用。因此,目前没有对应的标准Pod安全性框架。
如果你为一个WindowsPod应用了Restricted策略,可能会对该Pod的运行时产生影响。Restricted策略需要强制执行Linux特有的限制(如seccompProfile,并且禁止特权提升)。如果kubelet和/或其容器运行时忽略了Linux特有的值,那么应该不影响WindowsPod正常工作。然而,对于使用Windows容器的Pod来说,缺乏强制执行意味着相比于Restricted策略,没有任何额外的限制。
你应该只在Privileged策略下使用HostProcess标志来创建HostProcessPod。在Baseline和Restricted策略下,创建WindowsHostProcessPod是被禁止的,因此任何HostProcessPod都应该被认为是有特权的。
沙箱(Sandboxed)Pod怎么处理?
现在还没有api标准来控制Pod是否被视作沙箱化Pod。沙箱Pod可以通过其是否使用沙箱化运行时(如gVisor或KataContainer)来辨别,不过目前还没有关于什么是沙箱化运行时的标准定义。
沙箱化负载所需要的保护可能彼此各不相同。例如,当负载与下层内核直接隔离开来时,限制特权化操作的许可就不那么重要。这使得那些需要更多许可权限的负载仍能被有效隔离。
此外,沙箱化负载的保护高度依赖于沙箱化的实现方法。因此,现在还没有针对所有沙箱化负载的建议策略。
java编程中定义接口有什么好处?
java中的类是不允许多继承的,而接口可以多继承,算是一点弥补,然后就是使用接口可以封装具体的实现,不向外部暴露具体的实现细节,只将接口暴露出来,用户也只能够通过接口访问,这样也有一定的安全性。
如何使用支付宝?
首先你的银行卡必须开通网上银行 支付宝是一个交易平台,中转站,简单来说,支付宝的过程分四步 第一步,先办银行卡。 往卡里存钱(往卡存钱和向帐户存钱,有行卡类是一样的) 第二卡,开通支付宝。 第三步,通过这个卡充值到支付宝帐户 第四步,支付宝帐户充值后,就再付款给别人 1.银行帐户和卡是相通的(但只有卡才能开通网上银行和支付宝),网上银行是允许网上交易一种形式(注意要开通网上转帐服务). 2.支付宝是一个相当于中转站,是钱的暂放处, 充值是将银行的钱调到支付宝这暂放处, 提现是相反. (注意充值时的支付密码是你的提款密码),给钱给别人划帐时的支付密码是支付宝的支付密码) 一、申请网上银行(开通网上银行是一定要用银行卡号,而不是存折的号码) 这里,想引用支付宝里的一段话说明 1。 申请网上银行服务可以持本人有效证件和银行卡到相应银行的营业网点办理申请网上银行服务的相关手续, 2。 可到相应的银行网站在线申请网上银行服务,值得注意的是有些银行要求在线申请后本人持有效证件和银行卡到 银行柜台签约才能开通在线支付等网上银行的全部服务,具体细节请查看银行帮助中相应银行的帮助文档。 注:1)网上申请时,只能开通,并不能使用,如有网上银行的登录密码和支付密码,请注意记下。 2)网上申请时,一般是不能办理转帐业务等的,请到银行办理相关服务,并留意一下你是否拥有 网上银行的登录密码和支付密码,如果你没有是从银行获得的,那只会是6位数字的密码。 需要 你在网上登陆去修改的 3)在你首次成功登录相对的网上银行时,系统会自动提示你去修改6位数字,变成数字与字母等结合 的网上银行登录密码和支付密码 建议:直接去银行开通网上银行,记下网上银行登录密码和支付密码,并开通转帐业务等。 二、注册支付宝,支付宝是用网上银行的银行卡号注册的 支付宝是交易平台,同时,它也是一个独立个体,所以它同样有支付宝的登录密码和支付密码 (这与网上银行登录密码和支付密码是不一样的) 注意:在这一步完成时,我们手上会有四个密码,暂且不论大家是不是设置相同,但一定是恬合使用, 以及,密码是字母数字和字附三者相结合,安全性是最高的 建设:记下支付宝登录密码和支付密码 三、支付宝帐户充值. 其实如果上面的工作做好了,支付宝充值就行OK的。 如果不是,请你复查一下。 支付宝充值时,是会转到你所用的银行界面的,提款时,所用的支付密码是指网上银行支付密码。 成功充值后,你支付宝上就有钱。 (当然本身银行里一定要有钱:) 四、用支付宝付款。 支付宝上有钱了,就可以付款了,请注意:付款时所用的支付密码是指支付宝支付密码。 总结:其实你如果网上银行真的正确开通了,继而的功能是应该很顺利进行的, 如果没开通就请检查你是否有四个密码和开通转帐服务功能
户外徒步旅行有什么技巧?
户外徒步旅行时,首先起步宜缓。 往往外出旅行先要乘一段汽车,才下车步行,如果是长途乘车,下车起步登山时一定要步行缓慢一些,以使自己的身体逐步适应运动状况。 否则会出现心慌、头晕及无力等问题。 其二是大步健行。 所谓大步健行就是在平路及登缓坡时尽量用大步,即比平常的步幅大些,这是科学的步行方法,因为这样在等距离里减少了双脚的摆动,其用功就相对减少而达到节省体力的作用,开始是有些不习惯,坚持就会适应。 其三精力要集中。 朋友们一同外出旅行,总喜欢在旅行中嬉戏,别忘了,说话及唱歌等不仅消耗体能,同时还会分散注意力,甚至在一些比较危险的路段、过桥、上下坡等情况时,连眼睛都不能分散注意,如果一边下坡还同时陶醉在自然美景中,不出事才怪。 因此,欣赏景色、交流问题、小娱乐等都必须在休息停步时进行。 其四抵抗疲劳。 当步行达到一定的路程时(视个人的身体情况不同),人们就会出现双腿及身体的疲劳现象,以至会出现停步不前的打算,其实,这是到了体力的临界点,坚持下去,过了这个临界点,肌体就适应了大运动量的步行活动,疲劳感就会渐渐变弱。 当然这要视具体情况而定,总之不能到了极限疲劳才休息。 最后是注意保持距离。 一个队伍在行进中必须保持一个商定的间距,一般在2—3米,前后人员都要相互照应,并且不应拉开距离,要保证队伍的整体性、安全性等方面都应当注意这点。 该答案来自极限户外网官方网站
发表评论