首页 > 其他分享 >Kubernetes(K8S) 集群安全机制

Kubernetes(K8S) 集群安全机制

时间:2022-12-02 09:45:45浏览次数:45  
标签:kubectl Kubernetes rbac yaml k8smaster 集群 K8S root mary

概述

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

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

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

认证

传输安全:对外不暴露8080端口,只能内部访问,对外使用端口 6443
认证:客户端身份认证常用方法,

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

鉴权(授权)

基于RBAC进行鉴权操作
基于角色访问控制

准入控制

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

RBAC

基于角色的访问控制
image
角色

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

角色绑定

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

主体

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

RBAC 实现

rbac-role.yaml
image
rbac-bolebinding.yaml
image

# 创建命名空间
[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
使用证书识别身份

image
image

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

image

标签:kubectl,Kubernetes,rbac,yaml,k8smaster,集群,K8S,root,mary
From: https://www.cnblogs.com/vipsoft/p/16931359.html

相关文章

  • Kubernetes(K8S) 配置管理-ConfigMap 介绍
    作用:存储不加密数据到etcd,让Pod以变量或者Volume挂载到容器中场景:配置文件创建配置文件创建ConfigMap#根据redis.properties创建redis-config[root@k8sma......
  • Kubernetes通过HostAliases自定义hosts
    背景:今天突然就有了那么一个需求,记录一下:腾讯云的redis内网地址都是IP的方式。我们的服务注册在了nacos中。小伙伴本地测试链接上nacos(nacos开通了外网访问),获取redis中re......
  • Redis 集群
    Redis集群作用容量不够,redis如何进行扩容并发写操作,redis如何分摊都可使用集群解决。介绍Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分......
  • K8S集群操作
    部署一个容器创建tomcat容器kubectlcreatedeploymenttomcat6--image=tomcat:6.0.53-jre8[root@masterk8s]#kubectlgetsvcNAMETYPECLUSTER-IP......
  • Linux搭建ElasticSearch集群
    前言这是整个ElasticSearch搭建的最后一篇文章,其实对我而言ElasticSearch在Linux上搭建集群写这篇文章意义并不大,只是为了补充这个空白而已,所以这篇文章并不会讲解很详细......
  • ElasticSearch集群数据读写流程
    前言本章作为ElasticSearch分布式集群的附属章节,主要讲解ElasticSearch集群环境下数据是如何读写的,既然讲到读写,那么ElasticSearch的更新就是基于二者的结合,顺带也讲一下......
  • ElasticSearch分布式集群
    前言关于ElasticSearch集群概念这里就不多废话了,详细可见ElasticSearch基本介绍、ElasticSearch集群系统架构单节点集群我们可以创建一个索引,为这个索引创建三个分片......
  • ElasticSearch集群概念
    单机存在的问题单台Elasticsearch服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集......
  • ElasticSearch集群系统架构
    前言全面几篇文章主要是使用单机跑ElasticSearch的,在生产环境为了保证高可用和高吞吐量我们都会采用集群的方式部署。那么本章不涉及ElasticSearch集群的搭建,只涉及理论......
  • Windows搭建ElasticSearch集群
    前言在搭建ElasticSearch集群前,可以先看看往期文章Windows安装ElasticSearch,可以使用上篇文章中下载ElasticSearch搭建准备将下载好的ElasticSearch复制三分,node1为......