Kubernetes(K8S) 集群安全机制

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Kubernetes(K8S) 集群安全机制

概述

访问K8S集群,需要经过三个步骤完成具体操作

  1. 认证
  2. 鉴权(授权)
  3. 准入控制

进行访问时,过程中需要经过 ApiServer,做统一协调,比如门卫,访问过程中需要证书、token、或者用户名+密码,如果访问pod需要 ServiceAccount

认证

传输安全:对外不暴露8080端口,只能内部访问,对外使用端口 6443

认证:客户端身份认证常用方法,

  • https:证书认证,基于CA证书;
  • http: token 认证,通过 token 识别用户(Node加入 master),基本认证(用户名+密码)

鉴权(授权)

基于RBAC进行鉴权操作

基于角色访问控制

准入控制

是一个准入控制器列表,如果列表中有就通过,没有不让通过

RBAC

基于角色的访问控制

角色

  • role:特定命名空间访问权限
  • clusterRole:所有命名空间访问权限

角色绑定

  • roleBinding: 角色绑定到主体
  • ClusterRoleBinding: 集群角色绑定到主体

主体

  • user:用户
  • group: 用户组
  • serviceAccount: 服务帐号

RBAC 实现

rbac-role.yaml

rbac-bolebinding.yaml

# 创建命名空间
[root@k8smaster ~]# kubectl create ns roledemo
# 创建pod
[root@k8smaster ~]# kubectl run nginx --image=nginx -n roledemo
[root@k8smaster ~]# vi rbac-role.yaml
# 创建 rbac-role.yaml,内容见上图
[root@k8smaster ~]# kubectl apply -f rbac-role.yaml
# 查看角色
[root@k8smaster ~]# kubectl get role -n roledemo
# 创建角色绑定 rbac-rolebinding.yaml
[root@k8smaster ~]# vi rbac-rolebinding.yaml
# 创建 rbac-rolebinding.yaml
[root@k8smaster ~]# kubectl apply -f rbac-rolebinding.yaml
# 查看角色
[root@k8smaster ~]# kubectl get role,rolebinding -n roledemo
使用证书识别身份

rabc-user.sh

cat > mary-csr.json <<EOF
{
  "CN": "mary",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "L": "BeiJing",
      "ST": "BeiJing"
    }
  ]
}
EOF
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes mary-csr.json | cfssljson -bare mary 
kubectl config set-cluster kubernetes \
  --certificate-authority=ca.pem \
  --embed-certs=true \
  --server=https://192.168.31.63:6443 \
  --kubeconfig=mary-kubeconfig
  
kubectl config set-credentials mary \
  --client-key=mary-key.pem \
  --client-certificate=mary.pem \
  --embed-certs=true \
  --kubeconfig=mary-kubeconfig
kubectl config set-context default \
  --cluster=kubernetes \
  --user=mary \
  --kubeconfig=mary-kubeconfig
kubectl config use-context default --kubeconfig=mary-kubeconfig
[root@k8smaster ~]# mkdir mary
[root@k8smaster ~]# cd mary
# 详细内容见上文
[root@k8smaster mary]# vi rabc-user.sh
# 将证书复制到 mary 目录中,具体文件(私聊)
[root@k8smaster mary]# cp ./k8s/ca* ./
[root@k8smaster mary]# ls
ca-config.json ca.scr ca-csr.json ca-key.pem ca.pem rabc-user.sh
# 会多出一些 myar* 证书
[root@k8smaster mary]# bash rabc-user.sh
# 查看 mary-kubeconfig
[root@k8smaster mary]# bash mary-kubeconfig
# 查看 pod
[root@k8smaster mary]# kubectl get pods -n roledemo

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
13天前
|
Kubernetes 应用服务中间件 nginx
Kubernetes 入门指南:快速上手容器编排
【8月更文第29天】Kubernetes(简称 K8s)是一个开源平台,用于自动化容器化应用程序的部署、扩展和管理。它提供了一种便捷的方式来部署和运行应用程序,而无需关心底层基础设施的细节。本指南将带你从零开始学习 Kubernetes 的基础知识,并帮助你部署第一个应用。
69 0
|
17天前
|
存储 Kubernetes Go
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
|
8天前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
72 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
8天前
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
17 2
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
12天前
|
存储 Kubernetes Cloud Native
探索Python编程的奥秘云原生时代的容器编排:Kubernetes入门与实践
【8月更文挑战第30天】本文以浅显易懂的方式,探讨了Python编程的核心概念和技巧。从基础语法到高级特性,再到实际应用案例,逐步引导读者深入理解Python编程的精髓。通过本文的学习,读者将能够掌握Python编程的基本技能,并激发进一步探索的兴趣。
27 13
|
8天前
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
24 7
|
8天前
|
存储 Kubernetes 数据安全/隐私保护
k8s对接ceph集群的分布式文件系统CephFS
文章介绍了如何在Kubernetes集群中使用CephFS作为持久化存储,包括通过secretFile和secretRef两种方式进行认证和配置。
19 5
|
8天前
|
Kubernetes 负载均衡 应用服务中间件
kubeadm快速构建K8S1.28.1高可用集群
关于如何使用kubeadm快速构建Kubernetes 1.28.1高可用集群的详细教程。
25 2
|
9天前
|
Kubernetes Linux API
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
该博客文章详细介绍了在CentOS 7.6操作系统上使用kubeadm工具部署kubernetes 1.17.2版本的测试集群的过程,包括主机环境准备、安装Docker、配置kubelet、初始化集群、添加节点、部署网络插件以及配置k8s node节点管理api server服务器。
37 0
CentOS 7.6使用kubeadm部署k8s 1.17.2测试集群实战篇
|
12天前
|
运维 Kubernetes Cloud Native
云原生之旅:Kubernetes 集群的搭建与实践Python 编程入门:从零基础到编写实用脚本
【8月更文挑战第30天】在数字化转型的大潮中,云原生技术以其弹性、可扩展性及高效运维能力成为企业IT架构升级的关键。本文将通过实际操作演示如何在本地环境搭建一个简易的Kubernetes集群,带你领略云原生的魅力所在。从集群规划到服务部署,每一步都是对云原生理念的深刻理解和应用。让我们共同探索,如何通过Kubernetes集群的搭建和运维,提升业务灵活性和创新能力。