文章目录

  • API访问控制
  • 准入控制
    • 运行准入控制插件

API访问控制

可以使用kubectl、客户端库方式对REST API的访问,Kubernetes的普通账户和Service帐户都可以实现授权访问API。API的请求会经过多个阶段的访问控制才会被接受处理,其中包含认证、授权以及准入控制(Admission Control)等。如下图所示:

需要注意:认证授权过程只存在HTTPS形式的API中。也就是说,如果客户端使用HTTP连接到kube-apiserver,是不会进行认证授权的。所以说,可以这么设置,在集群内部组件间通信使用HTTP,集群外部就使用HTTPS,这样既增加了安全性,也不至于太复杂。


准入控制

准入控制(Admission Control)在授权后对请求做进一步的验证或添加默认参数,在对kubernetes api服务器的请求过程中,先经过认证、授权后,执行准入操作,在对目标对象进行操作。这个准入插件代码在apiserver中,而且必须被编译到二进制文件中才能被执行。

在对集群进行请求时,每个准入控制插件都按顺序运行,只有全部插件都通过的请求才会进入系统,如果序列中的任何插件拒绝请求,则整个请求将被拒绝,并返回错误信息。

在某些情况下,为了适用于应用系统的配置,准入逻辑可能会改变目标对象。此外,准入逻辑也会改变请求操作的一部分相关资源。


运行准入控制插件

旧版本:在kubernetes apiserver中有一个flag:admission_control,他的值为一串用逗号连接起、有序的准入模块列表,设置后,就可在对象操作前执行一定顺序的准入模块调用。

Kubernetes 1.10之后的版本, --admission-control 已经废弃,建议使用 --enable-admission-plugins --disable-admission-plugins 指定需要打开或者关闭的 Admission Controller。 同时用户指定的顺序并不影响实际 Admission Controllers 的执行顺序,对用户来讲非常友好。

在1.18版本中默认启动的插件:

NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, Priority,
DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection,
PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning,
CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionWebhook,
ValidatingAdmissionWebhook, ResourceQuota

  • AlwaysAdmit
    结束所有的请求。

  • AlwaysPullImages
    该插件修改每个新的Pod,强制pull最新镜像,这在多租户群集中非常有用,以便私有镜像只能由拥有授权凭据的用户使用。

  • AlwaysDeny
    拒绝所有请求,一般用于测试。

  • DenyExecOnPrivileged(已弃用)
    该插件将拦截所有请求。如果pod有一个privileged container,将只执行这个pod中的命令。
    如果自己的集群支持privileged container,自己又希望限制用户在这些privileged container上执行命令,那么强烈推荐使用它。

此功能已合并到DenyEscalatingExec中。

  • DenyEscalatingExec
    禁止privileged container的exec和attach操作。

  • ImagePolicyWebhook
    通过webhook决定image策略,需要同时配置–admission-control=ImagePolicyWebhook,配置文件格式如下。

  • ServiceAccount
    该插件将serviceAccounts 实现了自动化。如果打算使用Kubernetes ServiceAccount对象,那么强烈建议使用此插件。

  • SecurityContextDeny
    该插件会将使用了 SecurityContext的pod中定义的选项全部失效 。

  • ResourceQuota
    该插件将会观察传入的所有请求,并确保它不会违反ResourceQuota对象中枚举的任何限制Namespace。如果在Kubernetes Deployment中使用了ResourceQuota对象,则必须使用此插件来约束Container。

  • LimitRanger
    该插件将会观察传入的所有请求,并确保它不会违反LimitRanger对象中枚举的任何限制Namespace,如果在Kubernetes Deployment中使用了LimitRanger对象,则必须使用此插件。LimitRanger还可使用Apply将default资源请求不指定任何的Pods; 目前LimitRanger对Default Namespace中的所有pod应用要求0.1 CPU

  • InitialResources(试验)
    根据镜像的历史使用记录,为容器设置默认资源请求和limits。

  • NamespaceLifecycle
    该插件确保处于Termination状态的Namespace不再接收新的对象创建请求,并拒绝请求不存在的Namespace。该插件还可以防止删除系统保留的Namespace:default,kube-system,kube-public。

  • DefaultStorageClass
    该插件将观察PersistentVolumeClaim,并自动设置默认的Storage Class。
    当没有配置默认Storage Class时,此插件不会执行任何操作。当有多个Storage Class被标记为默认值时,它也将拒绝任何创建,管理员必须重新访问StorageClass对象,并且只标记一个作为默认值。此插件不用于PersistentVolumeClaim的更新,仅用于创建。

  • DefaultTolerationSeconds
    该插件设置Pod的默认forgiveness toleration为5分钟。

  • PodSecurityPolicy
    该插件用于创建和修改pod,使用Pod Security Policies时需要开启。
    当 Kubernetes <1.6.0版本时,API服务器需要启用扩展名/ v1beta1 / podsecuritypolicy API扩展组(–runtime-config=extensions/v1beta1/podsecuritypolicy=true)。

  • NodeRestriction
    此插件限制kubelet修改Node和Pod对象,这样的kubelets只允许修改绑定到Node的Pod API对象,以后版本可能会增加额外的限制。
    限制kubelet仅可访问node、endpoint、pod、service以及secret、configmap、PV和PVC等相关的资源(仅适用于v1.7+)

kubernetes API 访问控制之:准入控制相关推荐

  1. Kubernetes API访问控制

    Kubernetes API访问控制 kubernetes主要通过API server对外提供服务,对于这样的系统来说,请求访问的安全性是非常重要的考虑因素.如果不对请求加以限制,那么会导致请求被滥用 ...

  2. Kubernetes 11 (API访问控制、serviceaccount、useraccount、RBAC、PSP安全策略配置)

    目录 一.kubernetes访问控制原理 二.API Server认证 三.UserAccount 四.RBAC(基于角色访问控制)授权 五.服务账户的自动化 六.PSP安全策略 1.PSP安全策略 ...

  3. 准入控制_Kubernetes动态准入控制示例

    准入控制 A walk-through of creating a webhook for Kubernetes dynamic admission control. 创建用于Kubernetes动态 ...

  4. Kubernetes API Server 准入控制

    前面说了k8s如何做认证,如何做鉴权,分别判断你是谁,你有什么样的操作权限,你有某个对象的操作权限但是并不代表这个对象是合法的,所以apiserver里面会有更加深层次的一个行为,它还是需要去校验你的 ...

  5. kubernetes集群安全——认证、鉴权、准入控制

    机制说明 Kubernetes 作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务.API Server 是集群内部各个组件通信的中介,也是外部控制的入口.所以 Kubernetes 的 ...

  6. 理清 Kubernetes 中的准入控制(Admission Controller)

    大家好,我是张晋涛. 在我之前发布的文章 <云原生时代下的容器镜像安全>(系列)中,我提到过 Kubernetes 集群的核心组件 --  kube-apiserver,它允许来自终端用户 ...

  7. kubernetes API Server 权限管理实践

    2019独角兽企业重金招聘Python工程师标准>>> kubernetes API Server 权限管理实践 API Server权限控制方式介绍 API Server权限控制分 ...

  8. K8S认证、授权与准入控制(RBAC)详解

    相关推荐 本文的kubernetes环境:https://blog.51cto.com/billy98/2350660 RBAC官方文档:https://kubernetes.io/docs/refe ...

  9. 安全认证、准入控制、RBAC

    文章目录 准入机制 一.Authentication:认证 1.https的认证 需要认证的节点 总结 二.鉴权(Authorization) API Server目前支持以下几种授权策略: RBAC ...

最新文章

  1. 解决Android 7.0 App内切换语言不生效的问题
  2. tabBar的图标不被系统渲染
  3. Active Direcrtory:裸机恢复
  4. STM32 基础系列教程 28 - USB_DFU
  5. 三、Netty的粘包半包问题解决
  6. 如何理解Library List
  7. 1535C. Unstable String
  8. 【Kafka】Kafka 镜像 Kafka mirroring (MirrorMaker)
  9. 【IDEA】idea es 报错 Cause: invalid type code: 2D
  10. 员工的不幸?还是公司的悲哀?
  11. Django Rest Framework 部分源码剖析
  12. c++ 清除list占用的内存_pytorch内存泄露-dataloader
  13. 傅里叶变换音频可视化_H5录音音频可视化-实时波形频谱绘制、频率直方图
  14. JavaFX scene切换
  15. 程序猿生存指南-1 初出茅庐
  16. 校园贷受阻,汽车分期能帮趣店挽救困局吗?
  17. Python 10-日期时间
  18. 2021年全球透皮贴剂收入大约6989.7百万美元,预计2028年达到8859.9百万美元
  19. 银行卡被吞了到哪里去取?
  20. 百度-AI趣味课堂(二)

热门文章

  1. Java基础之面向对象部分详解
  2. CAD C#二次开发 圆和圆弧转Polyline线
  3. 有哪些提供比较好的网页模板网站?
  4. 第四十一章 贪心算法——排序不等式
  5. 如何对一年级小学生进行养成教育
  6. 人工智能的发展历史_是产品,而非艺术品——也论人工智能与文学艺术
  7. 米家扫地机器人重置网络_米家扫地机器人骗局? 米家扫地机器人重置
  8. Java--面包师与消费者1(发送与接收线程)
  9. Revit启动后,如何把你的命令显示在Revit的Ribbon(工具栏)上?
  10. 几个分形的matlab实现1,几个分形的matlab实现