集群的安全性需要考虑以下几个目标:

1、保证容器与其所在宿主机的隔离

2、限制容器给基础设施及其他容器带来的消极影响的能力

3、最小权限原则——合理限制所有组件的权限,确保组件只执行它被授权的行为

4、明确组件间边界的划分

5、划分普通用户和管理员用户

6、在必要的时候允许将管理员权限赋给普通用户

7、允许拥有Secret数据的应用在集群中运行

一、API Server认证

集群所有资源的访问和变更都是通过K8S API来实现的,所以集群安全的关键点就是如何识别并认证客户端的身份,以及认证后的授权问题。

K8S集群提供了3中级别的客户端身份认证:

1)、最严格的的HTTPS双向证书认证;

2)、HTTP Token认证,通过Token识别合法用户

3)、HTTP Base认证,通过用户名+密码的方式认证

二、API Server 授权

分一下集中授权策略:

1)、AlwaysDeny:拒绝所有请求

2)、AlwaysAllow:接收所有请求

3)、ABAC:基于属性的访问控制,使用用户配置的授权策略匹配用户的请求,授权策略有以下四种属性:

  • 用户名
  • 是否只读请求
  • 被访问哪一类资源
  • 被访问对象所属的NameSpace

API Server启用ABAC模式时,需要制定授权文件,授权文件里的每一行都是Map类型的JSON对象,称为“访问策略对象”。

三、Admission Control准入控制

Admission Control有一个准入控制列表,发送给API server的任何请求都需要通过准入列表的检查。

四、Service Account

Service Account为运行在Pod里的进程使用。

Kubernetes集群的安全机制的更多相关文章

  1. 在Kubernetes集群中使用calico做网络驱动的配置方法

    参考calico官网:http://docs.projectcalico.org/v2.0/getting-started/kubernetes/installation/hosted/kubeadm ...

  2. Kubernetes集群部署关键知识总结

    Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...

  3. 二进制安装部署kubernetes集群---超详细教程

    本文收录在容器技术学习系列文章总目录 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建完成后整理的个人心得,分享给大家~~~ 本文所需的安装包,都上传在我的网盘中,需要的可以打赏博主一杯咖啡钱 ...

  4. Kubernetes — 从0到1:搭建一个完整的Kubernetes集群

    准备工作 首先,准备机器.最直接的办法,自然是到公有云上申请几个虚拟机.当然,如果条件允许的话,拿几台本地的物理服务器来组集群是最好不过了.这些机器只要满足如下几个条件即可: 满足安装 Docker ...

  5. 单机版Kubernetes集群(一)

    环境:CentOS Linux release 7.4.1708 (Core)   单机版Kubernetes集群的效果,如图: 1)JSP页面通过JDBC直接访问Mysql数据库并展示:这里只是为了 ...

  6. Kubernetes集群搭建之Master配置篇

    本次系列使用的所需部署包版本都使用的目前最新的或最新稳定版,安装包地址请到公众号内回复[K8s实战]获取 今天终于到正题了~~ 生成kubernets证书与私钥 1. 制作kubernetes ca证 ...

  7. 二进制部署 Kubernetes 集群

    二进制部署 Kubernetes 集群   提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernet ...

  8. CentOS上手工部署kubernetes集群

    本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...

  9. 基于Kubernetes集群部署skyDNS服务

    目录贴:Kubernetes学习系列 在之前几篇文章的基础,(Centos7部署Kubernetes集群.基于kubernetes集群部署DashBoard.为Kubernetes集群部署本地镜像仓库 ...

随机推荐

  1. Python程序中的进程操作-进程间通信(multiprocess.Queue)

    目录 一.进程间通信 二.队列 2.1 概念介绍--multiprocess.Queue 2.1.1 方法介绍 2.1.2 其他方法(了解) 三.代码实例--multiprocess.Queue 3. ...

  2. python做中学(五)多线程的用法

    多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条 ...

  3. Saiku嵌入页面plugin=true效果自定义实现(二十七)

    Saiku嵌入页面使用 自定义实现 Plugin=true 效果 saiku嵌入页面plugin=true时数据不显示(plugin=false或者不设定plugin的值时数据显示正常)这个问题困扰了 ...

  4. CRF keras代码实现

    这份代码来自于苏剑林 # -*- coding:utf-8 -*- from keras.layers import Layer import keras.backend as K class CRF ...

  5. [算法]LeetCode 120:三角形最小路径和

    题目描述: 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和 ...

  6. 数据库之MySQL与Python交互

    准备数据 创建数据表 -- 创建 "京东" 数据库 create database jing_dong charset=utf8; -- 使用 "京东" 数据库 ...

  7. 动态SQL屏幕条件选择(里面还有赋值的新语法)

    有时候屏幕条件中使用PARAMETERS时候,如果你为空的话,会查不出数据,但是可能你的想法是不想限制而已,但是系统默认理解为了空值,这个时候,如果取判断一下条件是不是空,在SQL里决定写不写的话,会 ...

  8. gyp编译工具

    最近用到了 node-gyp 这个工具, 是node 社区对 google gyp 编译工具的一个封装, 使用 node-gyp 工具可以用C++为node 项目编写 addon. 了解了一下 goo ...

  9. docker系列(四):数据卷

    1 引言 容器就相当于一个简易的操作系统,我们在上面部署我们的环境,不可避免地产生一些数据,但是,可能由于断电等等原因,容器退出了,那么之前容器中的数据就不符存在,则往往不是我们想要的,更多的,我们是 ...

  10. mysql操作数据表

    目录 创建数据表 列约束 查看数据表结构 列类型(字段类型) 整型 浮点型 字符串 时间日期类型 Date Time Datetime Timestamp Year 枚举enum 修改表名 增加字段 ...