• 【云原生 • Kubernetes】kubernetes 核心技术 - 集群安全机制



    在这里插入图片描述


    一、集群安全机制概述

    要知道,访问 Kubernetes 集群必需要进行三个步骤,即:

    • 认证
    • 鉴权(授权)
    • 准入控制

    而这个访问过程均需经过 apiserver,apiserver 主要作用就是统一协调。除此之外在访问过程中还需要证书、token、用户名/密码等等“手续”。

    1.认证

    通常的客户端身份认证有这么几种方式:

    • HTTPS 证书认证:基于 CA 证书的认证。
    • HTTP Token 认证:通过 token 识别用户。
    • HTTP 基本认证:通过用户名+密码进行认证,安全性较低。

    此外,在认证过程中还有一个概念为 传输安全,意思就是对外不暴露 8080 端口,只能在内部访问。对外则统一使用端口 6443。

    2. 鉴权(授权)

    目前鉴权是基于 RBAC 进行操作的。

    RBAC:基于角色的访问控制。

    3. 准入控制

    这其实就是一个记录准入控制器的列表,如果该列表中包含你要请求的内容,则通过,反之则拒绝。

    二、RBAC 概述

    RBAC(基于角色的访问控制)。在 Kubernetes 集群的访问过程中,允许经过控制之后访问的某些资源,当为某一个角色设置访问内容后,将用户和角色进行绑定,那么角色可以访问的内容用户也可以访问

    在这里插入图片描述
    不仅仅是在 k8s中,其实在很多领域都在用 RBAC 机制。

    三、RBAC 角色绑定操作演示

    第一步:创建一个命名空间;

    #创建命名空间
    kubectl create ns xiaoma
    
    • 1
    • 2

    第二步:在新建的命名空间下创建一个 Pod;

    #新建Pod
    kubectl run nginx --image=nginx -n xiaoma
    
    • 1
    • 2

    第三步:创建角色,vim 一个 yaml 文件 rbac-xiaoma.yaml,并在其中设定角色的相关属性;

    apiVersion: rbac.authorization.k8s.io/v1
    kind: xiaoma
    metadata:
      namespace: xiaoma
      name: pod-reader
    rules: 
    - apiGroups: [""]
      resources: ["pods"]
      verbs: ["get", "watch", "list"]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    代码含义:创建角色 xiaoma,该角色对 pod 拥有 get、watch、list 权限。

    第四步:执行文件,角色创建成功之后也可以查看角色

    #执行文件,即创建角色
    kubectl apply -f rbac-xiaoma.yaml
    #查看角色
    kubectl get xiaoma -n xiaoma 
    
    • 1
    • 2
    • 3
    • 4

    第五步:创建角色绑定,vim 一个 yaml 文件 rbac-xiaomabinding.yaml

    apiVersion: rbac.authorization.k8s.io/v1
    kind: xiaomabinding
    metadata:
      namespace: xiaomatest
      name: read-pods
    subjects: 
    - kind: user
      name: majinjian
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: xiaoma
      name: pod-reader
      apiGroup: rbac.authorization.k8s.io
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    代码含义:将用户 majinjian 与角色 xiaoma 进行绑定。

    第六步:执行文件并查看角色绑定用户;

    #执行绑定文件
    kubectl apply -f rbac-xiaomabinding.yaml
    #查看绑定情况
    kubectl get xiaoma,xiaomabinding -n xiaomatest
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    虹科分享 | MACsec-先进的车载网络安全解决方案
    解决Intellij IDEA @Test没有提示问题
    电商相关信息(亚马逊&独立站)
    Java面向对象进阶2——继承
    Spring日志
    基于昇腾计算语言AscendCL开发AI推理应用
    Vue-table动态增加、删除表头不实时更新问题
    薛定谔的猫重出江湖?法国初创公司Alice&Bob研发猫态量子比特
    【第四部分 | JavaScript 基础】2:运算、控制流程、数组
    Jackson之ObjectMapper常用用法
  • 原文地址:https://blog.csdn.net/weixin_53072519/article/details/126612968