首页 > 其他分享 >2、k8s集群安全-认证

2、k8s集群安全-认证

时间:2024-05-10 10:36:58浏览次数:26  
标签:证书 Server token API 集群 认证 k8s

2、k8s集群安全-认证

K8S的三种级别的客户端认证方式

HTTPS证书认证
基于CA根证书签名的客户端身份认证方式,最严格的认证方式

HTTP Token认证
通过一个token来识别合法用户,token是一个很长很复杂的字符串,每个token对应一个用户名存储在API Server能访问的文件中。当客户端发起API调用请求时,需要在HTTP Header中加入token

HTTP Base认证
通过"用户名+密码"的方式认证,用base64算法进行编码后的字符串放在HTTP Request中的Header authoriaztion域里发送给服务端,服务端收到后进行编码,获取用户名及密码

一、HTTPS证书认证

二、需要认证的节点

安全性说明

Controller Manager、Scheduler与API Server在同一台机器内所以直接使用API Server的非安全端口访问

--insecure-bind-address=127.0.0.1

kubectl、kubelet、kube-proxy访问API Server就需要证书进行HTTPS双向认证

证书签发

手动签发:通过k8s集群与CA进行签发HTTPS证书

自动签发:bubelet收起访问API Server时,使用token做认证,通过后,Controller Manager会为kubectl生成一个证书,以后的访问都是用证书做认证

三、kubeconfig

可以将其理解为认证函,kubeconfig文件包含集群参数、客户端参数、集群context信息

k8s组件通过启动时指定不同的kubeconfig文件可以切换到不同的集群

默认文件路径 /$HOME/.kube/config

kubectl config view

kubectl config view --kubeconfig=my-custom-config

主要结构

Clusters  集群  放置集群的规范,如API Server地址 CA根证书

Contexts 哪些帐户作用于哪些集群

Users  账户 放置密钥和对应的证书

四、ServiceAccount

Pod中的容器访问API Server。因为Pod的创建和销毁都是动态的,每次生成pod要为其创建证书,浪费资源。所以不能为其手动生成证书。使用Service Account来让pod重复使用证书

五、Secret与SA的关系

k8s设计了一种资源对象叫做Service,分为两类;

一种是用于ServiceAccount的service-account-token,

另一种是用于保存用户自定义密保信息的Opaque。

ServiceAccount包含三个部分:token、ca.crt、namespace

token是使用API Server私钥签名的JWT。用于访问API Server时,Server端认证

ca.crt是根证书。用于Client端验证API Server发送的证书

namespace是标识这个service-account-token的作用域命名空间

JWT(Json Web Token),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆场景。JWT的声明一般被用来在身份提供者和服务提供者之间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其他业务逻辑所必须的声明信息,该token也可以直接被用于认证,也可以被加密

kubectl get secret --all-namespace

kubectl describe secret default-token-333 --namespace=kube-system

默认情况下,每个namaspace都会有一个ServiceAccount,如果Pod在创建时没有指定ServiceAccount,就会使用Pod所属namespace的ServiceAccount。默认挂载目录:  /run/secrets/kubernetes.io/serviceaccount/

总结

5926f1866ce16829c3feb212b7d3300f.png

标签:证书,Server,token,API,集群,认证,k8s
From: https://www.cnblogs.com/lixunblogs/p/18167055

相关文章

  • 1-k8s集群安全-Role_RoleBinding
    1.k8s集群安全-RoleRoleBinding认证(Authentication)、鉴权(Authoriaztion)、准入控制(AdmissionContorl)三步来保障其安全Authentication(认证)1.由一到多个认证插件完成。收到请求后,APIServer依次调用为其配置的认证插件来认证客户端身份,直到其中的一个插件可以识别出请求者的身份......
  • docker安全_k8s安全
    docker安全&k8s安全同一个进程,在docker中的进程ID和主机的进程ID不同docker默认并不能运行主机中的所有命名docker中的root并不是主机中的rootdocker中关于安全规则的命令以主机指定用户运行容器dockerrun--user=1000centos添加/删除容器中的某功能并运行dockerrun......
  • 集群备份、升级、扩容
    集群备份、升级、扩容哪些内容需要备份1.集群中各种资源和应用程序,例如:podservicedeployment等等2.集群本身、集群内其他资源的信息如何备份1.如果是以声明式的方式创建资源,可以将其保存到代码库(如github)。如果是以命令式的方式创建的资源,使用下面的命令,将群集上创建的所......
  • apisix~helm方式的部署到k8s
    什么是apisixApacheAPISIX是一个高性能、轻量级的开源API网关,基于Nginx和OpenResty构建。APISIX提供了丰富的功能和灵活的配置,适用于构建现代的微服务架构和云原生应用。以下是ApacheAPISIX的一些主要特点和功能:动态路由:APISIX支持基于请求路径、方法、头部等条......
  • k8s-Pod的概念和存在的意义
    1.Pod的概念pod是k8s中部署的最小单元包含多个容器(也就是说pod是一组容器的集合)一个pod中容器共享网络命名空间pod是短暂的  2.Pod存在的意思2.1创建容器使用docker,一个docker对应是一个容器,一个容器有进程,一个容器运行一个应用程序2.2Pod是多进程设计,运动多个......
  • 20240509xxx集群xx节点PLEG超时问题
    20240509xxx集群xx节点PLEG超时问题//20240509写在前面xxx集群xx节点又又又又又卡住了,经过一系列排查,终于解决了问题,由于这次找到了通用解法,所以在此记录下ps:国内的搜索引擎是真的shi。。搜出来的帖子都是抄来抄去的,还不解决问题,还得是google/大拇指问题起因:偷得浮生半日......
  • k8s资源编排-yml介绍
    yaml文件:叫做“资源清单文件”,通过kubecl命令直接使用yaml文件就可以实现对大量的资源对象进行编排部署了。    2.Yaml的组成部分yaml由2个部分组成:2.1控制器定义2.2被控制对象 yaml文件自己写比较繁琐,还好有自动生成yml格式文件的方式:1.使用kubectlcreate......
  • redis三主三从集群快速搭建
    redis集群快速搭建 1本文以redis6.2.6版本为例,快速搭建一套三主三从的redis集群,已经提前将脚本写好,只需要在节点上面进行执行即可安装#!/bin/bashinstall_redis(){#解压Redis源码包tar-zxvfredis-6.2.6.tar.gz......
  • Node.js证件OCR、身份证实名认证接口、身份证识别API
    身份证是证明公民身份的有效证件,一些不法分子可以通过简单的工序制作出假身份证,损害老百姓的合法利益。据警方统计,大部分预谋诈骗犯罪分子会使用假身份证件,而社会上也有一部分人出于不正当的目的,刻意隐瞒自己真实的身份信息。在这种前提下,“全国身份证联网核查”应运而生,它的......
  • k8s——api
    api概述api是k8s系统的重要部分,组件之间的所有操作和通信均由apiserver处理的restapi调用,大多数情况下,api定义和实现都符合标准的httprest格式,可以通过kubctl命令管理工具或其他命令行工具来执行api类型alpha包含alpha名称的版本(例如v1alpha1)该软件可能会包含错误。......